为了账号安全,请及时绑定邮箱和手机立即绑定

rem原理解析

标签:
CSS3

背景:

在移动端的页面开发中,我们经常需要根据不同的手机去适配页面,让页面可以自适应的展示。

也就是说根据屏幕宽度的大小,改变元素和字体的大小,屏幕越宽元素和字体越大。

这个时候我们通常会用到rem作为单位

rem解释:

rem是css3中新增的一个单位,它是一个相对单位

rem用作非根元素的时候,是相对于根元素设定的字体大小,,用于根元素的时候,相对于初始字体的大小

原理:

假设将屏幕平均分成10份,每一份所占的宽度为x

那么 x = 屏幕宽度/10

假如我们把每一份的宽度作为x根元素的字体大小,那么页面内部的元素和字体大小可以根据x计算

w = width/x (rem)

x = document.documentElement.clientWidth / 10 + 'px'

这个时候我们可以在监听页面dom 加载完成,或这页面重置,以及屏幕旋转的状态,通过js来设置html字体的大小

iphone6 100px  x =( document.documentElement.clientWidth / 750) * 100 + 'px'

230px 2.3rem

 (function(doc, win) {
      var docEl = doc.documentElement,
          resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize';
          recalc = function() {
              var clientWidth = docEl.clientWidth;
              if (!clientWidth) return;
              if (clientWidth > 540) {
                  clientWidth = 540;
              }
              docEl.style.fontSize = 100 * (clientWidth / 750) + 'px';
          }; //以iPhone6为基准  body 100px rem=size/100 红包页面以iphone6为基准

      if (!doc.addEventListener) return;
      win.addEventListener(resizeEvt, recalc, false);
      doc.addEventListener('DOMContentLoaded', recalc, false);
  })(document, window);
点击查看更多内容
2人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消