手机端适配-rem布局
2017-08-01 19:50
288 查看
rem布局
当写到移动端页面的时候,用px单位跟媒体查询是很难做到适配所有机型的,所以我找到了rem布局;rem: rem是根据html节点的fontSize来自动修改的,当html元素的fontSize是12px时,
那么久可以得出 1rem = 12px;
rem布局: 其实就是把需要自适应元素的px换成rem,因为rem是根据html自动修改的,所以我们
可以用js检测手机屏幕大小,再根据屏幕大小计算出html的fontSize值,从而使页面内的rem发生改变。
这是rem布局的核心代码,这段代码的大意是:
如果页面的宽度超过了640px,那么页面中html的font-size恒为100px,否则,
页面中html的font-size的大小为: 100 * (当前页面宽度 / 375)
(function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize', recalc = function () { var clientWidth = docEl.clientWidth; if (!clientWidth) return; docEl.style.fontSize = 100 * (clientWidth / 375) + 'px'; }; if (!doc.addEventListener) return; win.addEventListener(resizeEvt, recalc, false); doc.addEventListener('DOMContentLoaded', recalc, false); })(document, window);
为什么要设置html的font-size?
如果你把html的font-size设为20px,前面说过,rem就是html的字体大小,那么1rem = 20px。
此时,此时宽60px,高40px的元素样式就这样设置如下 ↓
width: 3rem; height: 2rem;
那要是宽55px,高37px呢?然后经过换算,,设置如下 ↓
width: 2.75rem; height: 1.85rem;
是不是发现这换算起来有点麻烦啊…
如果我们一开始把html的font-size设为100px呢?此时1rem = 100px,那么上面的
宽55px,高37px的元素样式就可以这么设置 ↓
width: 0.55rem; height: 0.37rem;
是不是换算起来简单多了?!
所以我们可以先把html的字体大小设为100px,再通过简单的换算计算出各个元素的rem。
375是什么?
375其实就是你当前已经适配好的手机的屏幕宽度,就是在谷歌浏览器下模拟iPhone6的屏幕宽度,
我是以这个宽度来做原稿的,如果是在其他宽度下做的原稿则把375改成其它宽度。
2.vw
vw就是当前屏幕宽度的1%
补充一句,当设置width:100%,被设置元素的宽度是按照父元素的宽度来设置,
但是100vw是相对于屏幕可见宽度来设置的,所以会出现50vw 比50%大的情况
3.calc()
html{font-size:calc(100vw/3.75)} //3.75为psd设计稿尺寸/100
只需要html{font-size:calc(100vw/3.75)}就可完成以上js的效果 rem布局
相关文章推荐
- 手机端rem布局详解(淘宝无限适配)
- (淘宝无限适配)手机端rem布局详解
- (淘宝无限适配)手机端rem布局详解(转载非原创)
- 手机端rem布局详解(淘宝无限适配)
- (淘宝无限适配)手机端rem布局详解(转载非原创)
- (淘宝无限适配)手机端rem布局
- (淘宝无限适配)手机端rem布局详解
- 手机端适配 rem布局
- 手机端rem布局详解
- 手机端页面自适应解决方案—rem布局
- 手机端页面自适应解决方案-rem布局
- 手机端页面自适应解决方案—rem布局
- 移动端页面开发适配 rem布局原理
- 手机端rem适配设置
- 手机端页面自适应解决方案—rem布局进阶版
- 更新 手淘 flexible 布局 rem 单位适配问题
- 手机端页面自适应解决方案—rem布局
- 手机端页面自适应解决方案—rem布局
- rem实现手机端页面自适应布局
- 手机端页面自适应解决方案—rem布局