选择 rem 做移动端适配的原理
什么是 rem 呢?
rem
是在W3C上面的解析——“font size of the root element”,它是根据根元素’html’的大小变化而变化的,HTML默认的font-szie
为16px
##媒体查询方式适配
媒体查询方式适配就是根据
media screen
大小的变化浏览器来自动选择对应的适配代码,将html设置10px
1
2
3
4
5
6
7
8 html{font-size:10px}
@media screen and (min-width:321px) and (max-width:375px){html{font-size:11px}}
@media screen and (min-width:376px) and (max-width:414px){html{font-size:12px}}
@media screen and (min-width:415px) and (max-width:639px){html{font-size:15px}}
@media screen and (min-width:640px) and (max-width:719px){html{font-size:20px}}
@media screen and (min-width:720px) and (max-width:749px){html{font-size:22.5px}}
@media screen and (min-width:750px) and (max-width:799px){html{font-size:23.5px}}
@media screen and (min-width:800px){html{font-size:25px}}
##根据JavaScript来改变根字体的大小
1 | ;(function(designWidth, maxWidth) { |
上面核心的几行代码1
2
3var width = docEl.getBoundingClientRect().width; //获取移动设备的宽度
var rem = width * 100 / designWidth; //rem的值等于(设备的宽度)x100/(设计稿宽度)
docEl.style.fontSize = rem + "px"; //设置html的字号为第二行的值
假如设计稿的大小实际是750px的设计稿,计算出来根字体为50px,Iphone 实际是375px的宽度,计算就是7.5rem的宽度
阿里团队开源的一个库
https://github.com/amfe/lib-flexible