前端如何通过Rem进行自适应布局

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .d1 {
      background-color: red;
      width: 1rem;
      height: 1rem;
    }
  </style>
</head>
<body>
  <div class="d1"></div>
  <div class="d2"></div>
  <script>
    // 假设设计稿上是640px宽度,.d1宽度是100px,我们希望能跟设计稿上保持相同的比例
    // 那么, 100/640 = 当前元素宽度/当前设备宽度
    // 推出  当前元素宽度 = 100*当前设备宽度/640
    // 但是,我们不可能实时的改变页面上所有元素的宽度,所以需要借助rem来实现,rem可以让元素根据根元素的字体大小进行变化,1rem = 根元素字体大小
    // 所以,上面的公式中的当前元素宽度,我们希望能够转换为: 根元素字体大小*当前元素宽度与根元素字体大小的比值,也即 x * rem的形式,同时,我们要知道 右边的100表示的元素在设计稿中的宽度, 它应该也可以表示成 x * rem的形式,区别在于rem大小不同
    // 所以,上面公式进一步转化为  x* rem1 = x * rem2 * 当前设备宽度/640,结果就变成我们需要确定设计稿中字体大小是多少,以此来推出我们实际页面中字体大小是多少
    // 为了方便计算,我们假定设计稿的根字体大小为100px(为什么说方便计算呢?因为如果假定为100px的话,那么比如我们看到设计稿中的一个元素宽度是64px的话,我们就能轻松的知道它的rem形式是0.64rem)
    window.onload = function(){
      document.documentElement.style.fontSize = (document.documentElement.clientWidth * 100)/640 + 'px';
      window.onresize = function(){
        document.documentElement.style.fontSize = (document.documentElement.clientWidth * 100)/640 + 'px';
        document.querySelector('.d2').innerHTML = getComputedStyle(document.querySelector('.d1')).width;
      }
    }
  </script>
</body>
</html>

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值