vue-cli3使用postcss-plugin-px2rem方式

 更新时间:2024年07月25日 09:10:04   作者:可乐少点冰  
这篇文章主要介绍了vue-cli3使用postcss-plugin-px2rem方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

vue-cli3使用postcss-plugin-px2rem

postcss-plugin-px2rem是可以将px自动转化为rem的postcss插件

1.安装

npm i postcss-plugin-px2rem --save -dev

2.package.json中添加配置(组件中px转rem才生效)在package.json、package.json、package.json中设置很重要

"postcss-plugin-px2rem": {
        "rootValue": 37.5,
        "unitPrecision": 5,
        "propBlackList": [
          "font-size"
        ],
        "mediaQuery": false,
        "minPixelValue": 3
      }

3.忽略ui框架中px转rem在vue.config.js(json中不能使用正则)中配置

css: {
   loaderOptions: {
     postcss: {
       plugins: [
         require('postcss-plugin-px2rem')({
           // rootValue: 100, //换算基数, 默认100  ,这样的话把根标签的字体规定为1rem为50px,这样就可以从设计稿上量出多少个px直接在代码中写多上px了。
           //propWhiteList: [],  //默认值是一个空数组,这意味着禁用白名单并启用所有属性。
           exclude: /node_module/,  //默认false,可以(reg)利用正则表达式排除某些文件夹的方法,例如/(node_module)/ 。如果想把前端UI框架内的px也转换成rem,请把此属性设为默认值
           // selectorBlackList: [], //要忽略并保留为px的选择器
           // ignoreIdentifier: false,  //(boolean/string)忽略单个属性的方法,启用ignoreidentifier后,replace将自动设置为true。
           // replace: true, // (布尔值)替换包含REM的规则,而不是添加回退。
         }),
       ]
     }
   }
 }

px转rem插件postcss-plugin-px2rem使用方法(浏览器缩放页面自适应)

常见屏幕自适应的布局

  • 百分比布局
  • rem布局
  • css媒体查询
  • 在前端框架设计初期,应优先选择好页面布局方式

postcss-plugin-px2rem插件的使用

官网地址:https://www.npmjs.com/package/postcss-plugin-px2rem

1.下载插件

npm i postcss-plugin-px2rem --save

2.在vite.config.js

	import px2rem from 'postcss-plugin-px2rem';
	// 插件的参数设置
	const px2remOptions = {
	  rootValue: 16,  //换算基数, 默认100 ,根元素字体的大小
	  unitPrecision: 5, //允许REM单位增长到的十进制数字,其实就是精度控制
	  // propWhiteList: [], // 白名单
	  // propBlackList: [], // 黑名单
	  exclude:false,  //默认false,排除某些文件夹的方法,例如/(node_module)/ 。
	  // selectorBlackList: [], //要忽略并保留为 px 的选择器。可以是字符串或者正则表达式
	  // ignoreIdentifier: false, //(boolean/string)一种忽略单个属性的方法,当启用 ignoreIdentifier 时,replace将自动设置为true。
	  // replace: true, // (布尔值)替换包含 rems 的规则,而不是添加后备规则。
	  mediaQuery: false, //(布尔值)允许在媒体查询中转换px
	  minPixelValue: 0  // 设置要替换的最小像素值。 默认 0
	}
	
	export default defineConfig({
	  plugins:[...],
	  css:{
		postcss:{
		  plugins:[px2rem(px2remOptions)]
		}
	  }
	})

3.在util文件夹中创建pxToRem.js文件

注意:

  • 我看其他文章上有做了性能优化,加入了缩放监听防抖。
  • 加了防抖,缩放时,会出现那种类似于卡顿的效果,但是性能上确实有优化。
  • (算是牺牲视觉效果增加性能,加不加防抖不妨都试试,看产品需求,因人而异)
	// pxToRem.js
	import _ from 'lodash'
	// 以1920px 底图为准开发页面,动态修改根元素字体的大小
	export const setDomFontSize = () => {
	    let width = document.documentElement.clientWidth || document.body.clientWidth;
	    let fontsize = (width <= 200 ? 1200 : width) / 100 + 'px';
	    (document.getElementsByTagName('html')[0].style)['font-size'] = fontsize;
	}
	
	// let setDomFontSizeDebounce = _.debounce(setDomFontSize, 400)
	// window.addEventListener('resize', setDomFontSizeDebounce); // 浏览器加入收缩监听防抖,重新计算rem配置
	window.addEventListener('resize', setDomFontSize); 
	// 这里有个知识点: window.onresize,window.addEventLister两种方式的区别
	// 最主要的区别:onresize本身就是一个回调,多次执行会被覆盖,通过addEventLister监听多次执行就不会被覆盖,运用于循环生成多个Echarts时,改变窗口大小,Echarts图表自适应问题

4.在main.js中进行配置

	// main.js
	import { setDomFontSize } from './utils/pxToRem'
	// 执行方法,相当于全局挂载了
	setDomFontSize()

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue过滤器,生命周期函数和vue-resource简单介绍

    Vue过滤器,生命周期函数和vue-resource简单介绍

    这篇文章主要介绍了Vue过滤器,生命周期函数和vue-resource简单介绍,帮助大家更好的理解和使用vue,感兴趣的朋友可以了解下
    2021-01-01
  • vue中实现拖拽排序功能的详细教程

    vue中实现拖拽排序功能的详细教程

    在业务中列表拖拽排序是比较常见的需求,下面这篇文章主要给大家介绍了关于vue中实现拖拽排序功能的详细教程,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • el-menu实现横向溢出截取的示例代码

    el-menu实现横向溢出截取的示例代码

    在进行vue开发的时候,我们不可避免会使用到导航菜单,element方便的为我们提供了导航菜单组件,下面这篇文章主要给大家介绍了关于el-menu实现横向溢出截取的相关资料,需要的朋友可以参考下
    2022-06-06
  • vue3+ts使用bus事件总线的示例代码

    vue3+ts使用bus事件总线的示例代码

    这篇文章主要介绍了vue3+ts使用bus事件总线,文中给大家提到了vue总线机制(bus)的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • VUE中如何调用高德地图获取当前位置(VUE2.0和3.0通用)

    VUE中如何调用高德地图获取当前位置(VUE2.0和3.0通用)

    使用uniapp开发微信小程序时,多多少少会遇到获取当前位置的详细信息,下面这篇文章主要给大家介绍了关于VUE中如何调用高德地图获取当前位置(VUE2.0和3.0通用)的相关资料,需要的朋友可以参考下
    2023-04-04
  • VueAwesomeSwiper在VUE中的使用以及遇到的一些问题

    VueAwesomeSwiper在VUE中的使用以及遇到的一些问题

    这篇文章主要介绍了VueAwesomeSwiper在VUE中的使用以及遇到的一些问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • 在vue中动态修改css其中一个属性值操作

    在vue中动态修改css其中一个属性值操作

    这篇文章主要介绍了在vue中动态修改css其中一个属性值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Vue项目安装插件并保存

    Vue项目安装插件并保存

    今天小编就为大家分享一篇关于Vue项目安装插件并保存,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • vue里面v-bind和Props 利用props绑定动态数据的方法

    vue里面v-bind和Props 利用props绑定动态数据的方法

    今天小编就为大家分享一篇vue里面v-bind和Props 利用props绑定动态数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Vue配置marked链接添加target=

    Vue配置marked链接添加target="_blank"的方法

    这篇文章主要介绍了Vue配置marked链接添加target="_blank"的方法,文中给大家提到了vue实现类似target="_blank"打开新窗口的代码,感兴趣的朋友参考下吧
    2019-07-07

最新评论