动态适配,实际上是指在须要适配的地方进行适配处理,而不是全局的,全部的元素都进行适配处理;css
rem是CSS3新增的一个相对单位(root em,根em)这个单位与em有什么区别呢?
区别在于
1.使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素。
2.这个单位可谓集相对大小和绝对大小的优势于一身,经过它既能够作到只修改根元素就成比例地调整全部字体大小,又能够避免字体大小逐层复合的连锁
3.除了IE8及更早版本外,全部浏览器均已支持rem。对于不支持它的浏览器,应对方法也很简单,就是多写一个绝对单位的声明。
这些浏览器会忽略用rem设定的字体大小。好比:p{font-size:14px;font-size:0.875rem;}
(推荐一个单位转换的工具:http://pxtoem.com/)
复制代码
media queries :主要经过查询不一样的宽度来执行不一样的css代码,最终以达到界面的配置。
核心语法:
@media screen and(max-width:600px){
/**
*/
html{
font-size:32px;
}
}
复制代码
以淘宝触屏版首页为表明的flex弹性布局+width:100%百分比单位;不须要适配的地方仍然是px单位;html
如下为例: 淘宝网触屏版前端
在iphone6/7/8 下: 底部tab栏,position:fixed定位;display:flex;盒子布局;flex-direction:row;justify-content:space-between; css3
在iPad下: 在中间分类栏:以position:absolute;display:flex;flex-direction:column;弹性盒子web
京东商城的开发团队一样也使用了移动端/web端相同的适配布局方式:京东开发团队浏览器
在我我的看来,flex弹性盒子布局,以其灵活方便的优点,在适配布局上占据了一席主流地位;flex+vw的布局方式/flex+百分比的布局方式更受前端开发者的欢迎框架
根据屏幕宽度设定rem值,须要适配的元素都使用rem单位,不须要适配的元素仍是使用px单位。1em=16px;
复制代码
实现原理:iphone
1.根据rem将页面放大dpr倍, 而后viewport设置为1/dpr.
如iphone6 plus的dpr为3, 则页面总体放大3倍,
1px(css单位)在plus下默认为3px(物理像素)
而后viewport设置为1/3, 这样页面总体缩回原始大小. 从而实现高清。
复制代码
这样整个网页在设备内显示时的页面宽度就会等于设备逻辑像素大小,也就是device-width。 这个device-width的计算公式为:设备的物理分辨率/(devicePixelRatio * scale), 在scale为1的状况下,device-width = 设备的物理分辨率/devicePixelRatio 。工具