前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Webpack实现将CSS中的px转换为rem

Webpack实现将CSS中的px转换为rem

作者头像
越陌度阡
发布2023-01-09 15:49:47
发布2023-01-09 15:49:47
1.4K00
代码可运行
举报
运行总次数:0
代码可运行

由于现在众多移动设备的兴起,各种手机厂商推出了许多不同屏幕尺寸大小的手机型号,前端人员在编写代码时就需要适配各种手机屏幕。

传统的样式适配是利用CSS 的媒体查询,但是这种方式要为每一种规格尺寸的屏幕写一套代码适配,比较繁琐。

这种情况下,利用rem来实现移动端的适配会更为方便一点。在W3C中,对rem的定义是相对于根元素字体的大小,即根元素的字体大小是10px,那2rem的实际尺寸就是20px。在Webpack中我们可以利用px2rem-loader这个插件在打包时,自动的将px转换为rem,非常方便。

1. 安装插件

代码语言:javascript
代码运行次数:0
运行
复制
npm i px2rem-loader -D

2. 配置Webpack文件

代码语言:javascript
代码运行次数:0
运行
复制
'use strict';
// npm i mini-css-extract-plugin -D
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {

    module: {
        rules: [
            {
                test: /.less$/,
                use: [
                    // 将内连样式单独处理为一个样式文件
                    MiniCssExtractPlugin.loader,
                    'css-loader',
                    'less-loader',
                    // 添加自动补齐后辍
                    {
                        loader: 'postcss-loader',
                        options: {
                            plugins: () => [
                                require('autoprefixer')({
                                    // 最近两个版本、使用人数所占比例、兼容哪个版本以上
                                    browsers: ['last 2 version', '>1%', 'ios 7']
                                })
                            ]
                        }
                    },
                    // 配置将px转为rem的插件
                    {
                        loader: 'px2rem-loader',
                        options: {
                            // 1rem等于75px,适用于750px视觉稿
                            remUnit: 75,
                            // px转成rem后小数点的位数
                            remPrecision: 8
                        }
                    }

                ]
            }
        ]
    },

    plugins: [
        new MiniCssExtractPlugin({
            filename: '[name]_[contenthash:8].css'
        }),    
    ]
};

3. 自动计算根元素字体大小

代码语言:javascript
代码运行次数:0
运行
复制
(function (doc, win) {
    var element = doc.documentElement,
        resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
        // 设计稿的宽度
        designWidth = 750,
        calc = function () {
            var clientWidth = element.clientWidth;
            // 定一个最大的宽度,以免全屏后难看
            if (clientWidth > 677) {
                clientWidth = 677
            };
            if (!clientWidth) return;
            element.style.fontSize = 40 * (clientWidth / designWidth) + 'px';
        };
    if (!doc.addEventListener) return;
    win.addEventListener(resizeEvt, calc, false);
    doc.addEventListener('DOMContentLoaded', calc, false);
})(document, window)

关于自动计算根元素大小也可以使⽤⼿淘的lib-flexible库。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-01-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 安装插件
  • 2. 配置Webpack文件
  • 3. 自动计算根元素字体大小
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档