当前位置:   article > 正文

vue 配置 postcss-px2rem

postcss-px2rem
postcss-px2rem
  • postcss-px2rem 就是为了让我们直接在将代码中 px 自动转化成对应的 rem 的一个插件 (rem 是 root em 的缩写,rem 不是相对于当前元素,而是相对于根元素,所以,不论什么位置,使用 rem 单位都是相对于根元素的 font-size)

  • 安装以下插件

    1. npm install postcss-px2rem -D
    2. npm install px2rem-loader -D
  • 在 vue.config.js 文件中配置

    1. module.exports = {
    2. ...,
    3. chainWebpack: (config) => {
    4. config.module
    5. .rule('css')
    6. .test(/\.css$/)
    7. .oneOf('vue')
    8. .resourceQuery(/\?vue/)
    9. .use('px2rem')
    10. .loader('px2rem-loader')
    11. .options({
    12. remUnit: 16
    13. })
    14. },
    15. }
  • 这样配置之后只是对 css 起作用,并不能对 sass、scss、less 等预处理语言进行处理,所以我们需要另外一个插件 postcs-plugin-px2rem

postcs-plugin-px2rem
  • 安装

    npm install postcss-plugin-px2rem -D
    
  • 在 vue.config.js 文件中配置

    1. module.exports = {
    2. ...,
    3. css: {
    4. loaderOptions: {
    5. postcss: {
    6. postcssOptions: {
    7. plugins: [
    8. require('postcss-plugin-px2rem')({
    9. rootValue: 16, // 换算基数
    10. // unitPrecision: 5, //允许REM单位增长到的十进制数字。
    11. // propWhiteList: [], //默认值是一个空数组,这意味着禁用白名单并启用所有属性。
    12. // propBlackList: [], //黑名单
    13. exclude: /(node_module)/, // 默认false,可以(reg)利用正则表达式排除某些文件夹的方法,例如/(node_module)\/如果想把前端UI框架内的px也转换成rem,请把此属性设为默认值
    14. // selectorBlackList: [], //要忽略并保留为px的选择器
    15. // ignoreIdentifier: false, //boolean/string)忽略单个属性的方法,启用ignoreidentifier后,replace将自动设置为true
    16. // replace: true, // (布尔值)替换包含REM的规则,而不是添加回退。
    17. mediaQuery: false, // (布尔值)允许在媒体查询中转换px。
    18. minPixelValue: 3 // 设置要替换的最小像素值(3px会被转rem)。 默认 0
    19. })
    20. ]
    21. }
    22. }
    23. }
    24. },
    25. }
设置根元素 font-size
  • 在 src/utils 文件夹中新建文件 rem.js 根据浏览器的宽度来设置根元素的 font-size

    1. import _ from 'lodash' // Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。
    2. // rem等比适配配置文件
    3. // 基准大小
    4. const baseSize = 16
    5. // 设置 rem 函数
    6. export const setRem = () => {
    7. // 当前页面屏幕分辨率相对于 1440宽的缩放比例,可根据自己需要修改
    8. console.log(document.documentElement.clientWidth)
    9. const scale = document.documentElement.clientWidth / 1440
    10. // 设置页面根节点字体大小(“Math.min(scale, 3)” 指最高放大比例为3,可根据实际业务需求调整)
    11. document.getElementsByTagName('html')[0].style['font-size'] = `${baseSize * Math.min(scale, 1.5)}px`
    12. }
    13. // 创建一个 debounced(防抖动)函数
    14. const setDomFontSizeDebounce = _.debounce(setRem, 400)
    15. window.addEventListener('resize', setDomFontSizeDebounce)
  • 在 main.js 文件中引入 setRem 方法并使用

    1. import { setRem } from '@/utils/rem'
    2. setRem()
@别名
  • vue 项目中当组件多的时候,以../ 的形式引入文件就会特别麻烦,所以设置 alias 别名的方式
  1. moudle.exports = {
  2. configureWebpack: {
  3. resolve: {
  4. alias: {
  5. '@': path.resolve('src') // 配置src为根目录
  6. }
  7. },
  8. }
  9. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/742257
推荐阅读
相关标签
  

闽ICP备14008679号