首页 > 其他分享 >px转rem适配方案之postcss-pxtorem

px转rem适配方案之postcss-pxtorem

时间:2023-08-29 10:34:17浏览次数:37  
标签:适配 px js rem exclude 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,js,rem,exclude,postcss,pxtorem
From: https://www.cnblogs.com/dingxingxing/p/17664126.html

相关文章

  • 与信创国产化高度适配的低代码开发框架
    信创产业是中国经济发展的基础,也是重要驱动力。坚持基础软件自主创新,是国产软件正版化应用和推广的源头。行业预测,2023年信创产业市场规模预计为18710.59亿元,预计到2025年将会接近3.5万亿元。信创产业的主要目标是实现信息技术领域的自主可控,保障国家信息安全,而其核心手段在于通......
  • 在lua中如何remove掉table里面的数据
    在lua开发中,数据保存一般都会用tabel来保存,但是在用到table之后,我们都会去清理table,那么我该怎么做呢?我们会调用到table中的remove函数来清理,但是需要注意的是,remove(table,[pos]),删除在pos位置上的元素,后面的元素会向前一栋,然后删除的index会向前移动,导致删除后的数据不是你想要的,......
  • 关于cocos studio 适配问题
    我们在适配会遇到各种问题,我们一般会用cocosstudio来做UI适配,但是它也不是万无一失的,那么怎么办呢?我们在进行UI适配的时候,我们就采用Panel来装下整个UI界面,只需要对这个一个子节点来进行适配即可,其他的子节点就一个个来进行适配,缩放等操作。可以执行编辑器里面的四个方向叫,宽高适......
  • 关于cocos2dx 3.x自适配屏幕
    我在cocos2dx3.x版本,一般会根据自己的图片去设置屏幕尺寸大小,那么如何去设置呢,下面给出具体代码autoglView=Director::getInstance()->getOpenGLView(); if(!glView) { glView=GLViewImpl::create("star"); glView->setFrameSize(640,960); Director::getInstanc......
  • CF1385 F. Removing Leaves 换根dp
    CF1385F.RemovingLeaves换根dp题目链接题意:给你一棵树,有一种操作,选择k个叶子,若叶子节点的父亲相同,则可删去这k个节点,问你最多能操作多少次。做法:这题的官方做法是贪心+bfs,不过用换根dp的方法也是可做的。首先我们常规选择节点1为根节点,跑一遍dfs,主要记录下面这些变量......
  • Reminisce.ai - 更快理解新技术的人工智能学习应用
    什么是Reminisce.aiReminisce.ai是一个人工智能驱动的学习应用。它旨在帮助用户以最快的速度理解各种新技术的高层架构,比如React、Django、AWS等。Reminisce.ai非常适合需要经常学习使用新技术的人群,比如程序员、IT从业人员、学生等。它可以大大缩减用户理解新技术所需的时间,......
  • mysql中truncate表对auto_increment的影响
    在mysql中,如果对表执行truncate操作后,会重新设置auto_increment的值,比如:root@localhost(none)>useabce;Databasechangedroot@localhostabce>createtabletest(idintnotnullauto_incrementprimarykey,ageint);QueryOK,0rowsaffected(0.02sec)root@localho......
  • PXC 57 二进制安装
    1.准备阶段1.1在三个节点上分别创建:用户组用户组目录--用户组用户组#/usr/sbin/groupaddmysql#/usr/sbin/useradd-gmysqlmysql--目录#mkdir–p/usr/local/mysql#chown-Rmysql:mysql/usr/local/mysql#chmod-R755/usr/local/......
  • ssh连华为云的linux服务器报 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
    谜底啊,就藏在谜面上└─#sshuname@ip-p22@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WARNING:REMOTEHOSTIDENTIFICATIONHASCHANGED!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ITISPOSSIBLETHATSOMEONEISDOIN......
  • remote origin already exists
    如果你clone下来一个别人的仓库,在此基础上完成你的代码,推送到自己的仓库可能遇到如下问题:error:remoteoriginalreadyexists.表示远程仓库已存在。因此你要进行以下操作:1、先输入gitremotermorigin删除关联的origin的远程库2、关联自己的仓库gitremoteaddoriginhttps:......