方案一:

1. 下载依赖

npm install postcss-import postcss-loader postcss-px-to-viewport --save-dev
npm install postcss-px-to-viewport-opt

2. 根目录下新建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': {}
// }
// }
module.exports = {
plugins: {
'autoprefixer': {
path: ['./src/*']
},
'postcss-import': {},
'postcss-px-to-viewport-opt': {
'viewportWidth': '1920', // 视窗的宽度,对应的是我们设计稿的宽度
'viewportHeight': '1080', // 视窗的高度
'unitPrecision': 4, // 指定`px`转换为视窗单位值的小数位数(很多时候无法整除)
'viewportUnit': 'vw', // 指定需要转换成的视窗单位,建议使用vw
'selectorBlackList': ['#nprogress'], // 指定不转换为视窗单位的类
'minPixelValue': 1, // 小于或等于`1px`不转换为视窗单位
'mediaQuery': false, // 允许在媒体查询中转换`px`
'exclude': /(\/|\\)(node_modules)(\/|\\)/,
'include': ['src/views/webgl/DashBoard.vue']
}
}
};

附: 网上找的其他的配置,可以参考里边的忽略文件写法,不得不夸一下,掘金的复制粘贴功能很好用

//postcss.config.js文件
module.exports = {
plugins: {
'postcss-px-to-viewport': {
unitToConvert: 'px', //需要转换的单位,默认为"px"
viewportWidth: 375, // 视窗的宽度,对应的是我们设计稿的宽度
viewportHeight: 1334,//视窗的高度,根据375设备的宽度来指定,一般指定667,也可以不配置
unitPrecision: 13, // 指定`px`转换为视窗单位值的小数位数(很多时候无法整除)
propList: ['*'], // 能转化为vw的属性列表
viewportUnit: 'vw', // 指定需要转换成的视窗单位,建议使用vw
fontViewportUnit: 'vw', //字体使用的视口单位
selectorBlackList: ['.ignore-', '.hairlines'], //指定不转换为视窗单位的类,可以自定义,可以无限添加,建议定义一至两个通用的类名
minPixelValue: 1, // 小于或等于`1px`不转换为视窗单位,你也可以设置为你想要的值
mediaQuery: false, // 允许在媒体查询中转换`px`
replace: true, //是否直接更换属性值,而不添加备用属性
exclude: [
/RightBar/,
/gotop.vue/,
], //忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件
landscape: false, //是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape)
landscapeUnit: 'vw', //横屏时使用的单位
landscapeWidth: 1134 //横屏时使用的视口宽度
}
}
}

3.首先声明我的vue-cli中package-lock.json写的webpack版本是4.28.4,看一下package.json,一般安装报错Error: true is not a PostCSS plugin时候,可以加这个到package.json里解决

  "peerDependencies": {
"postcss": "^8.0.0"
},

方案二:

1.安装

npm i postcss-px-to-viewport -D

2. vue.config.js中配置postcss节点,优先级最高

const pxtovw = require('postcss-px-to-viewport');

module.exports={
css:{
loaderOptions:{
sass:{
//给sass-loader传递选项
},
css:{
//给css-loader传递选项
},
postcss:{
//给postcss-loader传递选项
plugins:[
new pxtovw({
unitToConvert: 'px', //需要转换的单位,默认为"px";
viewportWidth: 375, //设计稿的视口宽度
unitPrecision: 5, //单位转换后保留的小数位数
propList: ['*'], //要进行转换的属性列表,*表示匹配所有,!表示不转换
viewportUnit: 'vw', //转换后的视口单位
fontViewportUnit: 'vw', //转换后字体使用的视口单位
selectorBlackList: [], //不进行转换的css选择器,继续使用原有单位
minPixelValue: 1, //设置最小的转换数值
mediaQuery: false, //设置媒体查询里的单位是否需要转换单位
replace: true, //是否直接更换属性值,而不添加备用属性
exclude: [/node_modules/] //忽略某些文件夹下的文件
})
]
}
}
}
}

注意

package.json文件中postcss节点的配置,优先级中

postcss.config.js外置配置文件,优先级最低

px批量转vw方法,适用于用户临时突发自适应需求,快速搞出项目多屏幕适应方案postcss-px-to-viewport,postcss.config.js配置的更多相关文章

  1. @vue/cl构建得项目下,postcss.config.js配置,将px转化成rem

    依赖包: postcss-pxtorem 配置: 在项目根目录下创建 postcss.config.js 配置如下: module.exports = () => ({ plugins: [ r ...

  2. 批量替换数据库中所有用户数据表中字段数据类型为char和varchar到nvarchar的脚本

    解决问题:字段类型为char的总是占用指定字节长度(末尾好多空白符号),varchar数据类型长度一个汉字占2个字节,内容存储为中文的字段个人建议全部使用nvarchar. 操作说明:打开SQL Se ...

  3. MySql中4种批量更新的方法

    最近在完成MySql项目集成的情况下,需要增加批量更新的功能,根据网上的资料整理了一下,很好用,都测试过,可以直接使用. mysql 批量更新共有以下四种办法 1..replace into 批量更新 ...

  4. mysql 用drop和delete方法删除用户的区别

    在学习drop方法删除用户时,按照书上讲的一直没操作成功,后来到网上查了点其他资料,才弄明白drop的方法,贴出来和大家分享一下. (方法一)drop user 用户名; 语法:drop user 用 ...

  5. SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int

    --SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int --关键说明:--1.从系统表syscolumns中的查询所有xtype='48'的记录得到类型为[tinyint]的字段- ...

  6. (转载)mysql 用drop和delete方法删除用户的区别

    (转载)http://hi.baidu.com/yymagento/item/56c3f6184bce8347e75e06db 在学习drop方法删除用户时,按照书上讲的一直没操作成功,后来到网上查了 ...

  7. 使用CSVDE批量导入命令/出口AD用户

    使用CSVDE批量导入命令/出口AD用户         CSVDE命令行工具可以与真实的用户信息CSV文件.批量导入/出口AD在. 导入的基本的语法命令是这种: csvde -i -f c:\fil ...

  8. win10下rdlc报表在vs(visual studio)中中文显示小方块的批量处理解决方法

    在网上找vs中rdlc报表显示中文时显示小方块的解决方案,无外就是修改文本框的字体属性.但是对于维护已有的rdlc报表时,有中文的地方(此时都显示了小方块)会很多,再一个一个设置实在太麻烦.所以自己花 ...

  9. C# 批量插入数据方法

    批量插入数据方法 void InsertTwo(List<CourseArrangeInfo> dtF) { Stopwatch watch = new Stopwatch(); watc ...

  10. 如何使用PowerShell批量删除Office 365的用户

    概述 本文将演示如何在必要的时候(例如在测试环境),通过PowerShell脚本批量删除Office 365的用户,首先需要通过Get-MsolUser的命令(并且配合筛选条件)获取到符合条件的用户列 ...

随机推荐

  1. 网页状态码(HTTP状态码)。

    网页状态码(HTTP状态码). 状态码 说明 详情 100 继续 请求者应当继续提出请求.服务器已收到请求的一部分,正在等待其余部分. 101 切换协议 请求者已要求服务器切换协议,服务器已确认并准备 ...

  2. 聊聊消息队列(MQ)那些事

    每年的双十一期间,各大电商平台流量暴增,同时,电商平台系统的负载压力也会很大.譬如订单支付的场景,每个订单支付成功后,服务器可能要完成扣减积分.扣减优惠券.扣减商品库存.发短信等一系列操作.单个用户请 ...

  3. Mp3文件标签信息读取和写入(Kotlin)

    原文:Mp3文件标签信息读取和写入(Kotlin) - Stars-One的杂货小窝 最近准备抽空完善了自己的星之小说下载器(JavaFx应用 ),发现下载下来的mp3文件没有对应的标签 也是了解可以 ...

  4. 【Devexpres】spreadsheetControl冻结行

    Worksheet worksheet = this.spreadsheetControl1.ActiveWorksheet; worksheet.Import(datatable, true, 0, ...

  5. TornadoFx的TableView组件使用

    原文: TornadoFx的TableView组件使用 - Stars-One的杂货小窝 最近慢慢地接触了JavaFx中的TableView的使用,记下笔记总结 使用 1.基本使用 TornadoFx ...

  6. UIAutomator测试框架介绍

    uiautomator简介 UiAutomator是Google提供的用来做安卓自动化测试的一个Java库,基于Accessibility服务.功能很强,可以对第三方App进行测试,获取屏幕上任意一个 ...

  7. codeforce E - Binary Inversions题解

    题目: 给你一个01串,现在你可以(或者不用)选取其中一个元素进行一次反转操作0-1,1-0:从而使得串中的逆序对个数最多. 题目链接:codeforce origin problem 思路: 1. ...

  8. week_7

    Andrew Ng 机器学习笔记 ---By Orangestar Week_7 This week, you will be learning about the support vector ma ...

  9. Spring IoC的一些知识点

    在日常开发中,接触得比较多的算是Spring生态了,Spring Ioc是Spring Framework重要的组成部分,下面整理了一些Spring Ioc的知识点. 1. 什么是IoC IoC(In ...

  10. 基于 Traefik 的激进 TLS 安全配置实践

    前言 Traefik是一个现代的HTTP反向代理和负载均衡器,使部署微服务变得容易. Traefik可以与现有的多种基础设施组件(Docker.Swarm模式.Kubernetes.Marathon. ...