动态REM适配(青春版)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <!-- 
        设置【视口标准】说明
            width=device-width;     设置html页面的尺寸和真实设备的尺寸相同
            initial-scale=1.0;      设置html页面的默认打开放大倍率是100%(不放大)
            minimum-scale=1.0;      设置html页面的默认允许两根手指缩小的倍率是100%(不允许缩小)
            maximum-scale=1.0;      设置html页面的默认允许两根手指放大的倍率是100%(不允许缩小)
            user-scalable=no;       设置html页面是否允许用于用两根手指捏合缩放页面(不允许)
    -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0; maximum-scale=1.0; user-scalable=no;">
    <title>Document</title>
    <script>
        // 页面加载完毕后,自动执行动态适配
        window.onload = function (){ activeRem(); };
        // 页面尺寸发生变化的时候,自动执行动态适配
        window.onresize = function (){ activeRem(); };
        // 动态适配方案
        function activeRem(){
            // 获取页面的宽度
            var cwidth = document.documentElement.clientWidth;
            // 计算根字体大小
            var hsize = (cwidth / 750) * 100;
            // 重置页面的根字体大小,确保根字体在页面发生变化的时候,动态发生改变
            document.documentElement.style.fontSize = hsize+'px';
        }
    </script>
</head>
<body>
    <style>
        *{ margin: 0; padding: 0; list-style: none; }
        div{
            width: 3rem;
            height: 2rem;
            border: 1px solid black;
        }
    </style>
    <div></div>
</body>
</html>

 

### REM布局适配方案的前端实现方式 #### 一、REM的基础概念 REM是一种相对于根元素`<html>`字体大小的单位。当设置HTML标签的字体大小时,所有的子元素都可以基于这个基础值来计算其尺寸[^2]。 #### 二、PC端REM适配方法 对于PC端的REM适配,可以通过CSS中的媒体查询配合流式布局完成。具体来说,利用@media规则根据不同屏幕宽度调整HTML的font-size属性,从而影响整个页面的比例缩放[^1]。 ```css /* 示例 */ @media screen and (max-width: 1200px) { html { font-size: 62.5%; /* 设置基准比例 */ } } ``` #### 三、移动端REM适配方案 在移动端,有多种流行的REM适配策略: ##### (1)REM + 媒体查询 + Less/Sass 技术 这种方法结合了预处理器的强大功能与灵活的媒体查询支持。开发者可以在Less或Sass文件中定义变量并动态生成不同的样式表以适应各种分辨率的需求。 ##### (2)Flexible.js 的应用 由阿里巴巴团队开发的Flexible库提供了一种简单有效的解决方案用于处理多终端下的自适应问题。它会自动检测当前视口宽度,并相应地修改document.documentElement.style.fontSize的数值[^3]。 以下是引入 Flexible.js 后的一个基本配置例子: ```javascript // 引入 flexible.js 文件后无需额外操作即可生效 import 'lib-flexible/flexible'; ``` #### 四、Vue项目中的REM适配实践 如果是在Vue框架下工作,则推荐使用PostCSS插件 `postcss-pxtorem` 来自动化转换像素到rem的过程。只需安装该依赖项并将适当参数传递给webpack配置对象即可轻松达成目标[^4]。 例如,在vue.config.js里添加如下代码片段: ```javascript module.exports = { css: { loaderOptions: { postcss: { plugins: [ require('postcss-pxtorem')({ rootValue: 37.5, unitPrecision: 5, propList: ['*'], selectorBlackList: [], replace: true, mediaQuery: false, minPixelValue: 0 }), ] } } } }; ``` 以上介绍了几种主流的REM布局适配技术和工具链路,每种都有各自适用场景,请依据实际需求选取最合适的路径实施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值