整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

前端常见面试题总结-HTML篇

、关于HTML语义化,你知道都有哪些标签?

语义化就是让计算机能够快速读懂内容,高效的处理信息。搜索引擎只能通过标签来判断内容的语义,因为页面的很大一部分流量来自搜索引擎,要使页面尽可能地对搜索引擎友好,所以尽可能地使用语义化标签,如:

div是division分离,span是span范围,table是表格,ol是orderList有序列表,ul是unorderList无序列表,li是list item列表选项,html5进一步推进web语义化的发展,使用了一些新的标签有header、artical、address等。

2、HTML标签分类有哪些?都有啥特点?

  • 块级标签

默认宽度是100%

块级标签独占一行

块级标签可以使用height设置高度

常见块级标签:div、p、h1~h6、ol、ul、table、form等等。

  • 行级标签

默认宽度由内容撑开

行级标签不会自动换行,从左到右一次排列

行级标签height设置高度失效,高度由内容撑开。

常见行级标签:span、a、br、strong、lable、i、em。

  • 行内块标签

结合行级和块级的优点

可以设置元素的宽高

还可以将多个元素显示在一行从左到右一次排列。

常见行内块标签:img、input。


3、网页编码设置有几种方式?

Charset属性规定HTML文档的字符编码,常见的属性值有以下几个:

  • UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。用在网页上可以同一页面显示中文简体繁体以及其他语言。
  • GBK是汉字编码,是双字节码,可表示简体和繁体字。
  • ISO8859-2字符集,也称Latin-2,收集了东欧字符。


4、HTML的框架优缺点有哪些?

Html框架有iframe和frame两个,将多个页面通过一个浏览器窗口显示。

框架的优点:

  • 重载页面时不需要重载整个页面,只需要重载页面中的一个框架页,减少数据传输,加快网页加载速度。
  • Iframe使用简单不需要引入任何插件,主要用于不需要搜索引擎搜索的页面。
  • 方便制作导航,多个页面共用,方便开发和维护。

缺点:

  • 会产生很多页面,不容易管理。
  • 不方便打印,不能实现对frameset的打印。
  • 浏览器后退按钮失效。
  • 不利于SEO优化,不能为每个页面设置标题和关键字,影响搜索。
  • 多数小型移动设备无法完全显示框架。
  • 多框架页面会增加服务器的http请求。
  • H5已经抛弃该标签。


5、HTML5有哪些新特性,移除了哪些元素?

H5新增了图像、位置、存储、多任务等功能。

新增元素:

  • Canvas
  • video和audio元素
  • 本地离线缓存:localStorage长期存储,浏览器关闭之后数据不丢失,sessionStorage的数据在浏览器关闭后自动删除。
  • 语义化标签:artical、footer、header、nav、section
  • 位置API:Geolocation
  • 表单控件:calendar、date、time、email、search、url
  • 新技术:web worker(运行在后台的js,独立于其他脚本,不影响页面性能。可以在页面继续任何操作,此时web worker在后台运行)、web socket
  • 拖放API:drag、drop

移除元素:

  • 框架元素:frame、frameset、noframes。
  • 纯表现元素:basefont、font、center、u、big、strike、tt

Html5新增了 27 个元素,废弃了 16 个元素,根据现有的标准规范,把 HTML5 的元素按优先级定义为结构性属性、级块性元素、行内语义性元素和交互性元素 4 大类。


6、如何区分HTML和HTML5?

DOCUMENT声明方式是区分的重要元素。

  • Html声明方式:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd”>
  • Html5声明方式:<!DOCTYPE html>

根据新增加的结构、功能来区分。H5有好多新增语义化标签。


7、H5文件离线存储怎么使用,工作原理是什么?

在线情况下,浏览器发现html头部有manifest属性,它会请求manifest文件,如果是第一次访问那么浏览器就会根据manifest文件的内容下载相应的资源,并进行离线存储。如果已经访问过并且资源已经离线存储了,那么浏览器就会使用离线的资源加载页面。然后浏览器会对比新的manifest文件与旧的manifest文件,如果文件没有改变,就不会有任何操作,如果文件改变了,那么就会重新下载资源,并进行离线缓存。

页面头部加入manifest属性。如:<html manifest="demo.appcache">

在cache.manifest文件中编写离线存储的资源。


8、Cookies,sessionStorage和localStorage的区别?

共同点:都是保存在浏览器端,而且都是同源的。

区别:

  • Cookies是为了标识用户身份而存储在用户本地的数据,始终在同源http请求中携带,在浏览器与服务器间来回传递,而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。
  • 存储大小差异。Cookie保存的数据很小,不能超过4k,而sessionStorage和localStorage保存数据大,可达到5M。
  • 存储有效期不同。Cookie在设置的cookie过期前始终有效,而sessionStorage仅在浏览器关闭之前有效,localStorage始终有效,与浏览器窗口没关系。
  • 作用域不同:cookie在所有同源窗口都是共享,sessionStorage不能在不同浏览器窗口上共享,localStorage在所有同源窗口都是共享的。


9、title与h1的区别、b与strong的区别、i与em的区别?

title属性没有明确意义,只表示标题,h1表示层次明确的标题,对页面信息抓取也有很大的影响。

strong标明重点内容,语气加强含义,b表示无意义的视觉表示

em表示强调文本,i是斜体,是无意义的视觉表示

视觉样式标签:b、u、i、s

语义样式标签:strong、em、ins、del、code


10、viewport 所有属性 ?

viewport是用户网页的可视区域,使用meta设置viewport时有很多属性,分别对以下各个属性介绍

  • width :设置layout viewport的宽度,为一个正整数,或字符串'device-width';
  • initial-scale:设置页面的初始缩放值,为一个数字,可以带小数。
  • minimum-scale:允许用户的最小缩放值,为一个数字,可以带小数。
  • maximum-scale:允许用户的最大缩放值,为一个数字,可以带小数。
  • height:设置layout viewport的高度,这个属性对我们并不重要,很少使用
  • user-scalable:是否允许用户进行缩放,值为‘no’或者‘yes’。
  • target-densitydpi:值可以为一个数值或者 high-dpi 、 medium-dpi、 low-dpi、 device-dpi 这几个字符串中的一个

安卓中还支持:target-densitydpi,表示目标设备的密度等级,作用是决定css中的1px 代表多少物理像素。


11、meta标签的name属性值?

name属性主要用于描述网页,与之对应的属性值为content,content中的内容主要是便于搜索机器人查找信息和分类信息用的。

Meta标签的name属性语法格式是:

<meta name=”参数”content=”具体的参数值”>

Name主要有以下几个参数:

  • Keywords(关键字):关键字用来告诉搜索引擎你网页的关键字是什么。
  • Description(网站内容描述):描述用来浏览器你的网页主要内容是什么。
  • Robots(机器人向导):robots用来搜索机器人哪些页面需要索引,哪些页面不需要索引。
  • Author(作者):添加网页作者信息。

Content的参数主要有name的参数来决定,如果是关键字的时候,多个关键字之间使用逗号隔开,一般使用5个关键字为宜;如果是描述的时候,描述长度一般控制在200字左右;如果是索引的时候,一般使用inde、noindex、none、all,默认是all。

人在校生一枚,希望可以找到志同道合的小伙伴一起进步,不定期的更新自己的收获,如果有大神的话可以指出我的不足,我用的是VS code软件来写代码的

什么是 HTML

HTML 是个缩写,全称Hyper Text Markup Language,译为超文本标记语言。它是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。

HTML的结构

  • html的后缀名有两种 一种是.html,另一种是.htm (两种并无区别)
  • 快捷创建基本结构的方法:方法一:可以在开头打一个“!”号,方法二:打一个html,智能提示会出现html:5 选中即可。

HTML的头部

在<hard>头部标签中你可以 插入脚本(scripts),样式文件(CSS),以及各种meta信息。可以添加在头部区域的元素有:<title>,<style>,<meta>,<link>等等

  • ​ <title>定义网页标题</title>
  • <meta>元素:描述了一些基本的元数据,元数据不显示在页面上,但会被浏览器解析,<meta>通常用于指定网页的描述,关键词,作者。


注释快捷键:CTRL+? (注释是不被运行的,作用就是帮助程序员记东西)

 <!--这是一个注释-->

HTML属性

  • 通用属性:几乎所有元素都可以使用的属性,例如 id、name、style等
  • 私有属性:某个一个/类元素所具备的属性
  • 事件属性:为某个元素绑定事件(DOM学习)
  • 自定义属性:开发者为某个元素设置的属性,一般都是在前端框架中使用
  • 参考介绍https://developer.mozilla.org/zh-CN/

HTML完整结构

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
			<!--头部,js和css写在这里面-->
 </head>
 <body>
       <!--内容主体-->
 </body>
 </html>


可能我写的会有些不清楚,到后面有代码的时候就会清楚了

.html5的新特性

文件类型声明(<!DOCTYPE>)仅有一型:<!DOCTYPE HTML>。
新的解析顺序:不再基于SGML。
绘画 canvas;
用于媒介回放的 video 和 audio 元素;
语意化更好的内容元素:article、footer、header、nav、section;
表单控件:calendar、date、time、email、url、search;
input元素的新类型:date, email, url等。
新的技术: webworker, websocket, Geolocation;
新的属性:ping(用于a与area), charset(用于meta), async(用于script)。
全域属性:id, tabindex, repeat。
新的全域属性:contenteditable, contextmenu, draggable, dropzone, hidden, spellcheck。
新应用程序接口:
HTML Geolocation
HTML Drag and Drop
HTML Local Storage
HTML Application Cache
HTML Web Workers
HTML SSE
HTML Canvas/WebGL
HTML Audio/Video
移除的元素:
纯表现的元素:basefont,big,center,font, s,strike,tt,u;
对可用性产生负面影响的元素:frame,frameset,naframes;

2.什么是Retina 显示屏,带来了什么问题?

retina:一种具备超高像素密度的液晶屏,同样大小的屏幕上显示的像素点由1个变为多个,如在同样带下的屏幕上,苹果设备的retina显示屏中,像素点1个变为4个

在高清显示屏中的位图被放大,图片会变得模糊,因此移动端的视觉稿通常会设计为传统PC的2倍
那么,前端的应对方案是:
设计稿切出来的图片长宽保证为偶数,并使用backgroud-size把图片缩小为原来的1/2
//例如图片宽高为:200px*200px,那么写法如下

.css{width:100px;height:100px;background-size:100px 100px;}


其它元素的取值为原来的1/2,例如视觉稿40px的字体,使用样式的写法为20px

.css{font-size:20px}

3.ios系统中元素被触摸时产生的半透明灰色遮罩怎么去掉?

ios用户点击一个链接,会出现一个半透明灰色遮罩, 如果想要禁用,可设置-webkit-tap-highlight-color的alpha值为0,也就是属性值的最后一位设置为0.X就可以去除半透明灰色遮罩
a,button,input,textarea{-webkit-tap-highlight-color: rgba(0,0,0,0.X)}

4.部分android系统中元素被点击时产生的边框怎么去掉

android用户点击一个链接,会出现一个边框或者半透明灰色遮罩, 不同生产商定义出来额效果不一样,可设置-webkit-tap-highlight-color的alpha值为0去除部分机器自带的效果

 a,button,input,textarea{ 
                  -webkit-tap-highlight-color: rgba(0,0,0,0;) 
                  -webkit-user-modify:read-write-plaintext-only; 
            } 

-webkit-user-modify有个副作用,就是输入法不再能够输入多个字符
另外,有些机型去除不了,如小米2
对于按钮类还有个办法,不使用a或者input标签,直接用div标签

5.webkit表单元素的默认外观怎么重置

通用

.css{-webkit-appearance:none;}

伪元素改变number类型input框的默认样式

input[type=number]::-webkit-textfield-decoration-container { 
    background-color: transparent;    
} 
input[type=number]::-webkit-inner-spin-button { 
    -webkit-appearance: none; 
}                      
input[type=number]::-webkit-outer-spin-button { 
    -webkit-appearance: none; 
}

6.webkit表单输入框placeholder的颜色值能改变么

input::-webkit-input-placeholder{color:#AAAAAA;}
input:focus::-webkit-input-placeholder{color:#EEEEEE;}

7.禁止ios 长按时不触发系统的菜单,禁止ios&android长按时下载图片

.css{-webkit-touch-callout: none}


8.禁止ios和android用户选中文字

.css{-webkit-user-select:none}

9.打电话发短信写邮件怎么实现

打电话:<a href="tel:0755-10086">打电话给:0755-10086</a>
发短信,winphone系统无效 <a href="sms:10086">发短信给: 10086</a>
写邮件:<a href=“mailto:peun@foxmail.com">peun@foxmail.com</a>

10.audio元素和video元素在ios和andriod中无法自动播放

应对方案:触屏即播

$('html').one('touchstart',function(){
    audio.play()
})

11.闪屏怎么解决

通过transform的3d属性改去硬件加速可以解决闪屏问题
开启硬件加速
1)解决页面闪白
2)保证动画流畅

.css { 
    -webkit-transform: translate3d(0, 0, 0); 
    -moz-transform: translate3d(0, 0, 0); 
    -ms-transform: translate3d(0, 0, 0); 
    transform: translate3d(0, 0, 0); 
} 

12.取消input在ios下,输入的时候英文首字母的默认大写

<input autocapitalize="off" autocorrect="off" />


13.android 上去掉语音输入按钮

input::-webkit-input-speech-button {display: none}

14.设计高性能CSS3动画的几个要素

尽可能地使用合成属性transform和opacity来设计CSS3动画
不使用position的left和top来定位
利用translate3D开启GPU加速

15.fixed bug

ios下fixed元素容易定位出错,软键盘弹出时,影响fixed元素定位
android下fixed表现要比iOS更好,软键盘弹出时,不会影响fixed元素定位
ios4下不支持position:fixed
解决方案
可用isroll.js,暂无完美方案

16.移动H5前端性能优化指南


1)PC优化手段在Mobile侧同样适用
2)在Mobile侧我们提出三秒种渲染完成首屏指标
3)基于第二点,首屏加载3秒完成或使用Loading
4)基于联通3G网络平均338KB/s(2.71Mb/s),所以首屏资源不应超过1014KB
5)Mobile侧因手机配置原因,除加载外渲染速度也是优化重点
6)基于第五点,要合理处理代码减少渲染损耗
7)基于第二、第五点,所有影响首屏加载和渲染的代码应在处理逻辑中后置
8)加载完成后用户交互使用时也需注意性能

优化指南

[加载优化]

加载过程是最为耗时的过程,可能会占到总耗时的80%时间,因此是优化的重点

减少HTTP请求

因为手机浏览器同时响应请求为4个请求(Android支持4个,iOS 5后可支持6个),所以要尽量减少页面的请求数,首次加载同时请求数不能超过4个
a) 合并CSS、JavaScript
b) 合并小图片,使用雪碧图

缓存

使用缓存可以减少向服务器的请求数,节省加载时间,所以所有静态资源都要在服务器端设置缓存,并且尽量使用长Cache(长Cache资源的更新可使用时间戳)
a) 缓存一切可缓存的资源
b) 使用长Cache(使用时间戳更新Cache)
c) 使用外联式引用CSS、JavaScript

压缩HTML、CSS、JavaScript

减少资源大小可以加快网页显示速度,所以要对HTML、CSS、JavaScript等进行代码压缩,并在服务器端设置GZip
a) 压缩(例如,多余的空格、换行符和缩进)
b) 启用GZip

无阻塞

写在HTML头部的JavaScript(无异步),和写在HTML标签中的Style会阻塞页面的渲染,因此CSS放在页面头部并使用Link方式引入,避免在HTML标签中写Style,JavaScript放在页面尾
部或使用异步方式加载

使用首屏加载

首屏的快速显示,可以大大提升用户对页面速度的感知,因此应尽量针对首屏的快速显示做优化

按需加载

将不影响首屏的资源和当前屏幕资源不用的资源放到用户需要时才加载,可以大大提升重要资源的显示速度和降低总体流量
PS:按需加载会导致大量重绘,影响渲染性能
a) LazyLoad
b) 滚屏加载
c) 通过Media Query加载

预加载

大型重资源页面(如游戏)可使用增加Loading的方法,资源加载完成后再显示页面。但Loading时间过长,会造成用户流失
对用户行为分析,可以在当前页加载下一页资源,提升速度
a) 可感知Loading(如进入空间游戏的Loading)
b) 不可感知的Loading(如提前加载下一页)

压缩图片

图片是最占流量的资源,因此尽量避免使用他,使用时选择最合适的格式(实现需求的前提下,以大小判断),合适的大小,然后使用智图压缩,同时在代码中用Srcset来按需显示
PS:过度压缩图片大小影响图片显示效果
a) 使用智图( http://zhitu.isux.us/ )
b) 使用其它方式代替图片(1. 使用CSS3 2. 使用SVG 3. 使用IconFont)
c) 使用Srcset
d) 选择合适的图片(1. webP优于JPG 2. PNG8优于GIF)
e) 选择合适的大小(1. 首次加载不大于1014KB 2. 不宽于640(基于手机屏幕一般宽度))

减少Cookie

Cookie会影响加载速度,所以静态资源域名不使用Cookie

避免重定向

重定向会影响加载速度,所以在服务器正确设置避免重定向

异步加载第三方资源

第三方资源不可控会影响页面的加载和显示,因此要异步加载第三方资源

[脚本执行优化]


处理不当会阻塞页面加载、渲染,因此在使用时需当注意
CSS写在头部,JavaScript写在尾部或异步
避免图片和iFrame等的空Src
空Src会重新加载当前页面,影响速度和效率

尽量避免重设图片大小

重设图片大小是指在页面、CSS、JavaScript等中多次重置图片大小,多次重设图片大小会引发图片的多次重绘,影响性能

图片尽量避免使用DataURL

DataURL图片没有使用图片的压缩算法文件会变大,并且要解码后再渲染,加载慢耗时长

[CSS优化]


* 尽量避免写在HTML标签中写Style属性
* 避免CSS表达式
CSS表达式的执行需跳出CSS树的渲染,因此请避免CSS表达式
* 移除空的CSS规则
空的CSS规则增加了CSS文件的大小,且影响CSS树的执行,所以需移除空的CSS规则
* 正确使用Display的属性
Display属性会影响页面的渲染,因此请合理使用
a) display:inline后不应该再使用width、height、margin、padding以及float
b) display:inline-block后不应该再使用float
c) display:block后不应该再使用vertical-align
d) display:table-*后不应该再使用margin或者float
* 不滥用Float
Float在渲染时计算量比较大,尽量减少使用
* 不滥用Web字体
Web字体需要下载,解析,重绘当前页面,尽量减少使用
* 不声明过多的Font-size
过多的Font-size引发CSS树的效率
* 值为0时不需要任何单位
为了浏览器的兼容性和性能,值为0时不要带单位
* 标准化各种浏览器前缀
a) 无前缀应放在最后
b) CSS动画只用 (-webkit- 无前缀)两种即可
c) 其它前缀为 -webkit- -moz- -ms- 无前缀 四种,(-o-Opera浏览器改用blink内核,所以淘汰)
* 避免让选择符看起来像正则表达式 高级选择器执行耗时长且不易读懂,避免使用

[JavaScript执行优化]


* 减少重绘和回流
a) 避免不必要的Dom操作
b) 尽量改变Class而不是Style,使用classList代替className
c) 避免使用document.write
d) 减少drawImage
* 缓存Dom选择与计算
每次Dom选择都要计算,缓存他
* 缓存列表.length
每次.length都要计算,用一个变量保存这个值
* 尽量使用事件代理,避免批量绑定事件
* 尽量使用ID选择器
ID选择器是最快的
* TOUCH事件优化
使用touchstart、touchend代替click,因快影响速度快。但应注意Touch响应过快,易引发误操作

[渲染优化]

* HTML使用Viewport
Viewport可以加速页面的渲染,请使用以下代码
<meta name=”viewport” content=”width=device-width, initial-scale=1″>
* 减少Dom节点
Dom节点太多影响页面的渲染,应尽量减少Dom节点
* 动画优化
a) 尽量使用CSS3动画
b) 合理使用requestAnimationFrame动画代替setTimeout
c) 适当使用Canvas动画 5个元素以内使用css动画,5个以上使用Canvas动画(iOS8可使用webGL)

* 高频事件优化
Touchmove、Scroll 事件可导致多次渲染
a) 使用requestAnimationFrame监听帧变化,使得在正确的时间进行渲染
b) 增加响应变化的时间间隔,减少重绘次数

* GPU加速
CSS中以下属性(CSS3 transitions、CSS3 3D transforms、Opacity、Canvas、WebGL、Video)来触发GPU渲染,请合理使用(PS:过渡使用会引发手机过耗电增加)

17.CSS动画与Canvas动画性能优劣分析

a、CSS动画更为流畅、但内存占用过高,动画元素在5个以内更为推荐;
b、Canvas动画存在丢帧现象,这一现象在android中低端手机中表现更为明显;
c、5个以内动画元素,选用CSS动画,80%的设备帧频可达80以上。

18.移动端怎么自适应?

移动自适应的话一般我用的话就是rem,通过rem单位配合媒体查询来完成几个屏幕的适配,以iphone6位标准,向上适配plus,向下适配5,不做过多的适配,有时候有要求的话也用js来控制rem的大小达到适配效果,rem是相对单位,相对html元素的font-size值的属性,比如font-size:100px; 的话1rem就得100px,这样我子需要通过改变html的font-size就可以达到适配效果

19.如何开启gpu加速?

为动画DOM元素添加CSS3样式-webkit-transform:transition3d(0,0,0)或-webkit-transform:translateZ(0);,这两个属性都会开启GPU硬件加速模式,从而让浏览器在渲染动画时从CPU转向GPU

通过-webkit-transform:transition3d/translateZ开启GPU硬件加速之后,有些时候可能会导致浏览器频繁闪烁或抖动,可以尝试以下办法解决之:
-webkit-backface-visibility:hidden;
-webkit-perspective:1000;

通过-webkit-transform:transition3d/translateZ开启GPU硬件加速的适用范围:
使用很多大尺寸图片(尤其是PNG24图)进行动画的页面。
页面有很多大尺寸图片并且进行了css缩放处理,页面可以滚动时。
使用background-size:cover设置大尺寸背景图,并且页面可以滚动时
编写大量DOM元素进行CSS3动画时(transition/transform/keyframes/absTop&Left)
使用很多PNG图片拼接成CSS Sprite时

20.物理1像素怎么实现

可以使用after插入的形式将宽度设置为200%,然后通过css transfrom 的scale 缩放0.5倍;

21.响应式布局的原理

Meta标签定义

使用 viewport meta 标签在手机浏览器上控制布局

<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1" />

通过快捷方式打开时全屏显示

<meta name="apple-mobile-web-app-capable" content="yes" />

隐藏状态栏

<meta name="apple-mobile-web-app-status-bar-style" content="blank" />
iPhone会将看起来像电话号码的数字添加电话连接,应当关闭
<meta name="format-detection" content="telephone=no" />
使用Media Queries适配对应样式

常用于布局的CSS Media Queries有以下几种:

设备类型(media type):

all所有设备;
screen 电脑显示器;
print打印用纸或打印预览视图;
handheld便携设备;
tv电视机类型的设备;
speech语意和音频盒成器;
braille盲人用点字法触觉回馈设备;
embossed盲文打印机;
projection各种投影设备;
tty使用固定密度字母栅格的媒介,比如电传打字机和终端。

设备特性(media feature):

width浏览器宽度;
height浏览器高度;
device-width设备屏幕分辨率的宽度值;
device-height设备屏幕分辨率的高度值;
orientation浏览器窗口的方向纵向还是横向,当窗口的高度值大于等于宽度时该特性值为portrait,否则为landscape;
aspect-ratio比例值,浏览器的纵横比;
device-aspect-ratio比例值,屏幕的纵横比。

设置多种视图宽度

@media only screen and (min-width:768px)and(max-width:1024px){}
@media only screen and (width:320px)and (width:768px){}

百分比布局

宽度不固定,可以使用百分比

#head{width:100%;}
#content{width:50%;}

响应式图片

#wrap img{
  max-width:100%;
  height:auto;
}

字体设置

一个响应式的字体应关联它的父容器的宽度,这样才能适应客户端屏幕。css3引入了新的单位叫做rem,和em类似但对于Html元素,rem更方便使用。em是相对于根元素的,需重置根元素字体大小:

html{font-size:100%;}

完成后,可以定义响应式字体:

@media (min-width:640px){body{font-size:1rem;}}
@media (min-width:960px){body{font-size:1.2rem;}}
@media (min-width:1200px){body{font-size:2rem;}}

22.常见dpr

ip6 2、ip6+ 3、nexus5 3

23.移动端适配

1) 自适应方式
2) viewport方式
3) rem方式
4) scale()方式缩放

24.常用meta

IE相关

避免IE使用兼容模式 <meta http-equiv="X-UA-Compatible" content="IE=edge" />
为不支持viewport的IE Mobile设定宽度 <meta name="MobileOptimized" content="320" />
是否对手持设备友好 <meta name="HandheldFriendly" content="true" />

UC浏览器

强制竖屏 <meta name="screen-orientation" content="portrait" />
强制全屏 <meta name="full-screen" content="yes" />
应用模式 <meta name="browsermode" content="application" />

X5浏览器

强制竖屏 <meta name="x5-orientation" content="portrait" />
强制全屏 <meta name="x5-fullscreen" content="yes" />
应用模式 <meta name="x5-page-mode" content="app" />

360

开启极速模式 <meta name="renderer" content="webkit" />

iphone相关

启动webapp功能 删除工具栏和菜单栏 <meta name="apple-mobile-web-app-capable" content="yes">
控制状态栏颜色 <meta name="apple-mobile-web-app-status-bar-style" content="black" />
开启号码或邮箱检测 <meta name="format-detection" content="telephone=no" />
添加主屏幕icon <link rel="apple-touch-icon" href="touch-icon-iphone.png”>

25.html5的新api

重力感应 DeviceOrientation
手机加速传感器 DeviceMotion

history 详细

以Pjax方式实现SPA history.pushState history.replaceState 解决ajax不能后退前进问题
储存
客户端储存:localStorage sessionStorage>只存在一个会话周期内
跨域
postMessage

26.你们怎么嵌套h5页面的

一般都是我前端这边开发好h5页面给安卓和ios一个地址,然后告诉他们我有哪些方法,然后在做一些安卓ios的接口调用,安卓和ios会吧他们的方法提供一个接口给我,我直接调用就好,一般都是调用一些分享,跳转之类的方法

27.webapp你主要做的是哪个模块,是页面布局做的多还是交互做的多

webapp部分基本都是我自己负责开发,页面交互都做,因为当时刚去公司的时候公司也刚往这个方向发展,让我也一直就负责移动业务这块的内容

28.bootstrap用吗?

用,bootstrap组要就是用一些他的样式组件,还有最强大的就是他的删格化系统了,做响应式的网站,我们公司的官网就是用的bootstrap做的,后台管理系统也是,当时也是我负责给我们公司的后台分享如何使用bootstrap的