rem移动适配解决方案及flexible.js插件使用

企业常用移动适配解决方案:

即实现在不同宽度的设备中,网页元素尺寸等比缩放效果

rem : 目前多数企业在用的解决方案
vw / vh:未来的解决方案及趋势

本文将阐述rem适配方法

rem单位
Ø 相对单位
Ø rem单位是相对于HTML标签的根字号计算结果
Ø 1rem = 1HTML根字号大小

思考
1. 手机屏幕大小不同,分辨率不同, 如何设置不同的HTML标签字号?

媒体查询能够检测视口的宽度,然后编写差异化的CSS 样式;

当某个条件成立, 再执行对应的CSS样式;

      /* 1,以视口宽度为375px为例  我们使用媒体查询 */
      @media (width:375px) {
        html {
          font-size: 37.5px;
        }
        
      }

      /* 2.适配414宽度 的手机 */
      @media (width:414px) {
        html {
          font-size: 41.4px;
        }
      }

 如上,当视口宽度不同时,设置不同的HTML根字号大小。

但一般会用min-width(不小于)max-width(不大于),而不是写具体的宽度,如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    /* 1.屏幕宽度在1366px及一下,用媒体查询适配 */
    @media (max-width:1366px) {
      .box {
        width: 200px;
        height: 200px;
        background-color: tomato;
      }
    }

    /* 2.屏幕宽度在1366px~1600px之间 */
    @media (min-width:1367px) and (max-width:1600px) {
      .box {
        width: 400px;
        height: 400px;
        background-color: orange;
      }
    }

    /* 3.1600px以上 */
    @media (min-width:1601px) {
      .box {
        width: 600px;
        height: 600px;
        background-color: skyblue;
      }
    }
  </style>
</head>
<body>
  <div class="box"></div>
</body>
</html>

2. 设备宽度不同,HTML标签字号设置多少合适?

目前rem布局方案中,将网页等分成10份, HTML标签的根字号为视口宽度的1/10。

rem单位的尺寸= px单位数值/ 基准根字号

如:当屏幕宽度为375px,rem单位的尺寸=375px ÷ 37.5

/* html字体大小设置为屏幕视口的 1/10  320px 375px 414px*/
      /* 
      适配移动端过程:
       1.要利用媒体查询规定不同的屏幕宽度设置不同的根字号大小;屏幕宽度的1/10
       2.页面元素就可以使用rem相对单位,1rem=1html文字大小
      */
      @media (width:320px) {
        html {
          font-size: 32px;
        }
      }

      @media (width:375px) {
        html {
          font-size: 37.5px;
        }
      }

      @media (width:414px) {
        html {
          font-size: 41.4px;
        }
      }

     .box {
       width: 3rem;
       height: 3rem;
       background-color: skyblue;
     }

html根字号大小查看如下图:

 

上述做法有缺点,由于手机设备多,屏幕尺寸不一,视口宽度不仅仅有上述几个,我们不可能自己一个个来设置。

上述内容只是了解其原理,工作中一般并不需要我们手动写,因为我们可以利用flexible.js插件来实现。

使用flexible.js配合rem实现移动适配步骤

1、自行下载flexible.js,flexible.js是手淘开发出的一个用来适配移动端的js框架,其核心原理就是根据不同的视口宽度给网页中html根节点设置不同的font-size(html根字号大小),请自行百度下载;

2、安装VScode插件px to rem,去VScode插件搜索px to rem;

3、在需要适配的html文件中引入flexible.js插件;

 <!-- 1.引入手淘 flexible.js 就是完成了所有移动端屏幕的适配(媒体查询)-->
  <script src="./js/flexible.js"></script>

4、在html文件中Ctrl + A全选,再按Alt + Z将px单位转换为rem单位;最后去浏览器验证,按F12打开检查并切换到移动端,改变视口宽度,就实现网页元素尺寸等比缩放效果。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .box {
      width: 4rem;  //width的值已转换为rem单位
      height: 4rem;  //height的值已转换为rem单位      
      background-color: skyblue;
      font-size: 0.5rem;  //font-size的值已转换为rem单位
    }
  </style>
</head>
<body>
  <div class="box">看看我多大</div>
  <!-- script引入js文件 手淘js库 适配移动端-->
  <script src="./js/flexible.js"></script>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值