px转rem适配方案之postcss-pxtorem
一、安装
npm install postcss-pxtorem --save-dev
二、增加postcss.config.js文件
在目录文件下增加
postcss.config.js
并添加相关配置
// https://github.com/michael-ciniawsky/postcss-load-config
module.exports = {
'plugins': {
// to edit target browsers: use "browserslist" field in package.json
'autoprefixer': {},
'postcss-pxtorem': {
rootValue: 16, // rem 相对于 px 转换的基准值
propList: ['*'], // 需要转换的 CSS 属性,* 表示全部
unitPrecision: 5, // 转换后的小数位数
exclude: (e) => { // 只对src/views/largeScreen文件进行px转rem,其他文件不转换
if(/src(\\|\/)views(\\|\/)largeScreen/.test(e)) {
return false
} else {
return true
}
}
}
}
}
// npm相关配置介绍 `https://www.npmjs.com/package/postcss-pxtorem`
1.`rootValue`(数字 | 函数):表示根元素的字体大小,或者根据输入参数返回根元素的字体大小。
2.`unitPrecision`(数字):允许 REM 单位增长的小数位数。
3.`propList`(数组):可以从像素(px)转换为 REM 的属性列表。值必须完全匹配。
使用通配符 * 以启用所有属性。例如:['*']
在单词的开头或结尾使用 *。(['*position*'] 将匹配 background-position-y)
使用 ! 来排除某个属性。例如:['*', '!letter-spacing']
可以将 "not" 前缀与其他前缀结合使用。例如:['*', '!font*']
4.`selectorBlackList`(数组):要忽略并保留为像素(px)的选择器。
如果值是字符串,它会检查选择器是否包含该字符串。
['body'] 将匹配 .body-class
如果值是正则表达式,它会检查选择器是否与正则表达式匹配。
[/^body$/] 将匹配 body,但不匹配 .body
5.`replace`(布尔值):替换包含 rem 的规则而不是添加回退。
6.`mediaQuery`(布尔值):允许在媒体查询中转换像素(px)。
7.`minPixelValue`(数字):设置要替换的最小像素值。
8.`exclude`(字符串、正则表达式、函数):要忽略并保留为像素(px)的文件路径。
如果值是字符串,它会检查文件路径是否包含该字符串。
'exclude' 将匹配 \project\postcss-pxtorem\exclude\path
如果值是正则表达式,它会检查文件路径是否与正则表达式匹配。
/exclude/i 将匹配 \project\postcss-pxtorem\exclude\path
如果值是函数,您可以使用排除函数返回 true,并将忽略该文件。
回调函数将文件路径作为参数传递,应返回一个布尔结果。
function (file) { return file.indexOf('exclude') !== -1; }
三、vue.config.js中配置
module.exports = {
//....
css: {
loaderOptions: {
postcss: {
config: {
path: './postcss.config.js'
}
}
}
},
//....
}
四、增加适配js、配置在main.js中
rem.js
//rem等比适配配置文件
//基准大小
const baseSize = 16
//设置 rem 函数
function setRem() {
//当前页面宽度相对于1920宽的缩放比例, 可根据自己需要修改
const scale = document.documentElement.clientWidth / 1920
//设置页面根节点字体大小, 字体大小最小为12
let fontSize = baseSize * Math.min(scale, 2) > 12 ? baseSize * Math.min(scale, 2) : 12
document.documentElement.style.fontSize = fontSize + 'px'
}
//初始化
setRem()
//改变窗口大小重新设置rem
window.onresize = function () {
setRem()
}
main.js
import './utils/rem' // 我文件放在utils下,引入即可
五、总结
以上是 postcss-pxtorem
插件的一些配置选项的说明。针对某页面固定使用,通过exclude
字段配置。
px转rem适配方案之postcss-pxtorem的更多相关文章
- 谈谈我的移动端rem适配方案
最近有点怀疑人生,毕竟一个人写前端,有时候会怀疑自己理解的一些东西包括用法有没有符合标准.趁着这阵子闲下来,翻了翻别人的rem适配博客,发现有点绕口,怪自己是个强迫症,啥都要自己去试试结果并从中理解, ...
- H5 端 rem 适配方案与 viewport 适配
H5 端 rem 适配方案与 viewport 适配 rem rem 是 CSS3 新增的一个相对单位(root em,根 em) 只根据当前页面 HTML 页面的 font-size 设置,如果根目 ...
- em与rem之间的区别以及移动设备中的rem适配方案
em与rem之间的区别: 共同点: 它们都是像素单位 它们都是相对单位 不同点: em大小是基于父元素的字体大小 rem大小是基于根元素(html)的字体的大小 实例: <!DOCTYPE ht ...
- 最佳移动端h5自适应rem适配方案
一.利用lib-flexible.postcss-plugin-px2rem插件 进行移动端rem适配. 1.第一 引入lib-flexible . 安装lib-flexible: npm i lib ...
- vue中使用第三方UI库的移动端rem适配方案
需求:使用vue-cli脚手架搭建项目,并且使用第三方的UI库(比如vant,mint ui)的时候,因为第三方库用的都是用px单位,无法使用rem适配不同设备的屏幕. 解决办法:使用px2rem-l ...
- rem适配方案
页面布局单位计算 一般有两大类:绝对长度单位和相对长度单位 绝对长度单位: px 像素:是显示屏上显示的每一个小点,为显示的最小单位 in 英寸,1in = 96px cm 厘米,1cm = 37.8 ...
- 淘宝rem适配方案
/*px 转化换 rem ,转化是 10 .比如:你的设计图为750,那么就 750 / 75 = 10 rem.设计图中你量尺寸都要除 75 就是 rem值.再比如量的设计图按钮宽度 66px,那么 ...
- 移动web开发适配方案之Rem
移动端为什么要做适配 移动端相对PC端来说大部分浏览器内核都是基于Webkit的,所以大部分都支持CSS3的最新语法.但是由于手机的屏幕尺寸和分辨率都不太一样(尤其是安卓),所以不得不对不同分辨率的手 ...
- vue项目中使用了vw适配方案,引入第三方ui框架mint-ui时,适配问题解决
问题分析: 一般第三方ui框架用的都是不同的适配方式,如果我们使用了vw适配,那么在使用mint-ui框架时,就会发现px单位会被转换成vw,从而导致样式变小的问题,如图 解决方案 网上看到了很多种解 ...
- 移动端高清适配方案(解决图片模糊问题、1px细线问题)
本文介绍了移动端适配的3种方法,以及移动端图片模糊问题和1px细线问题的解决方法.当然了,在这之前先整理了与这些方法相关的知识:物理像素.设备独立像素.设备像素比和viewport. >> ...
随机推荐
- 使用SpongeExt快捷完成CudaSPONGE结合PySAGES的增强采样
技术背景 在前面的一些文章中,我们介绍过关于CudaSPONGE的安装和基础使用方法,CudaSPONGE提供的Python接口,PySAGES增强采样软件的基本使用方法,还有一篇关于CudaSPON ...
- 并发编程 - 线程同步(四)之原子操作Interlocked详解一
上一章我们了解了原子操作Interlocked类的设计原理及简单介绍,今天我们将对Interlocked的使用进行详细讲解. 在此之前我们先学习一个概念--原子操作. 01.Read方法 该方法用于原 ...
- JUC并发—1.Java集合包底层源码剖析
大纲 1.为什么要对JDK源码剖析 2.ArrayList源码一:基本原理以及优缺点 3.ArrayList源码二:核心方法的原理 4.ArrayList源码三:数组扩容以及元素拷贝 5.Linked ...
- 用python做时间序列预测六:相关函数图、偏相关函数图、滞后图
经典的时间序列预测方法都是假设如果一个时间序列有显著的自相关性,那么历史值对预测当前值会很有帮助,但是究竟取多少阶的历史值,就需要通过分析相关函数图和偏相关函数图来得到.本文介绍如何什么是相关函数图和 ...
- JDK8项目简单快速接入AI大模型(无需强制使用JDK17)
最近AI风头越来越火,好多项目都需要接入AI接口,但Spring-AI强制绑定JDK17这些,导致以前的很多JDK8项目不太方便 找到个办法,使用AI4J来接入 1.本地部署Ollama,这个属于部署 ...
- 关于企业微信扫码登陆vue
关于企业微信扫码登陆vue 企业微信扫码登陆官方文档 采用的是第一种(构造独立窗口登录二维码) 对于前端来说就步骤就是 页面展示二维码 => 用户扫码登陆点击确定 => 确定之 ...
- QT5笔记:11. Qt类库的模块
基础模块:提供了Qt的最基本的功能 附加模块:实现了一些特定功能的提供了附加价值的模块 增值模块:商业版才有的模块,单独发布的提供额外附加价值的模块或工具 技术预览模块:一些处于开发阶段,但是可以作为 ...
- 奥特曼autMan对接BBK-JD扫码登录+微信扫码登录
1.BBK京东扫码容器配置 首先进入root目录 cd /root 拉取镜像创建容器 docker run -dit \ -v $PWD/conf:/data/conf \ -v $PWD/logs: ...
- Python - [03] 基础语法
题记部分 一.标识符 第一个字符必须是字母表中字母或下划线_ 标识符的其他部分由字母.数字和下划线组成 标识符对大小写敏感 二.Python保留字 三.注释 (1)单行注释:以#开头 #!/usr/b ...
- Flink - [02] 安装部署(Standalone)
一.准备 1.角色规划 Flink Standalone 角色规划 节点名称 node01 node02 node03 master ○ worker ○ ○ zookeeper ○ ○ ...