首页 > 其他分享 >Webpack实现将CSS中的px转换为rem

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

时间:2023-02-09 12:01:33浏览次数:68  
标签:适配 px loader clientWidth Webpack doc rem


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

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

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

Webpack实现将CSS中的px转换为rem_前端开发_02

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

1. 安装插件

npm i px2rem-loader -D

2. 配置Webpack文件

'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. 自动计算根元素字体大小

(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​​库。


标签:适配,px,loader,clientWidth,Webpack,doc,rem
From: https://blog.51cto.com/u_15959833/6046625

相关文章

  • Webpack中给CSS自动添加前辍
    由于现在主流的浏览器有好几种,在编写CSS样式时,需要对各种浏览器作兼容处理,导致在写一些新的CSS样式时需要针对不同的浏览器加上不同的前辍,如果每个前辍都手动来加的话会相当......
  • Webpack提取页面公共资源
    1.利用html-webpack-externals-plugin分离基础库在做React开发时,经常需要引入react和react-dom基础库,这样在打包的时候速度就会比较慢,这种情况下我们可以将这些基础库忽略......
  • Webpack自动清理打包目录
    Webpack在打包的时候,会在指定输出文件夹下面生成打包文件,但是上次打包的文件不会自动清理掉,每次手动删除会比较麻烦,为此,我们需要有一个自动清理的功能。常见的自动清理方式......
  • Git进行clone的时候,报错:remote: HTTP Basic: Access denied fatal: Authentication fa
    先执行:gitconfig--system--unsetcredential.helper原因:用户名或者密码错;    会提示让重新输入用户名和密码,输入正确的用户名和密码即可!    这......
  • 关于webpack 开启代理proxy后,接口看不到代理地址的问题。
    今天在项目中发现,  明明在proxy里代理了 接口地址确不是10.10.11.106/front/xxxxxx。这是为啥呢?changeOrigin的修改也是一样,在网络请求中发现host还是没改。这又......
  • webpack
    webpack4webpack是一个用于现代JavaScript应用程序的静态模块打包工具。当webpack处理应用程序时,它会在内部构建一个依赖图,此依赖图对应映射到项目所需的每个模块......
  • 3.wsl remote vscode
    安装插件使用VScode安装插件使用子系统编译C语言创建文件夹然后创建test.c修改终端字体大小在VScode中打开终端输入bash,并编译test.c编译......
  • Docker容器处于Removal in process 无法删除解决方案
    在正常情况下执行dockerrm会将容器删除,但是如果容器处于Removalinprocess状态下,执行dockerrm会出现:remove/mnt/docker/devicemapper/mnt/remove/mnt/docker/devicema......
  • vite 和webpack的区别
    答:vite打包要比webpack快webpack:先解析入口文件=》在解析路由=》在解析模块=》在打包=》开起服务vite:先开起服务=》在解析路由=》在解析模块......
  • git: 移除远程映射,remote origin
    背景在添加远程映射的时候,把远程仓库地址写错了。。。。[email protected]:错的.git解決方法方法一:ChangetheURI(URL)foraremoteGitrepo......