在vue项目中使用postcss-px2rem插件把px转变为rem,并配合给html根元素设置fontsize,来实现页面的自适应效果

在vue项目中使用postcss-px2rem插件把px转变为rem,并配合给html根元素设置fontsize,来实现页面的自适应效果

安装postcss-px2rem插件,目的:把px转变为rem

npm install postcss-px2rem -S

vue.config.js中配置remUnit

const port = process.env.port || 8081 // 端口
module.exports = {
	devServer: {
		host: '0.0.0.0',
		port: port,
		open: true,
	},
	css: {
		loaderOptions: {
			css: {},
			postcss: {
				plugins: [
					require('postcss-px2rem')({
						remUnit: 100
					})
				]
			}
		}
	}
}
一直不太明白为什么remUnit设置为100,通过项目中不断的改变remUnit值,

发现这里remUnit值是为了把px转换成rem的计算值,

即remUnit=100,

则1rem=100px,1px=0.01rem

当项目中我们在css样式中设置width:750px时,经过[postcss-px2rem]这个插件转换
remStyle:转换后的值(单位:rem)

pxStyle:转换前的值(单位:px)

remStyle=(pxStyle/remUnit)+'rem'

得到:width:7.5rem

通过js改变html的fontsize值

<script type="text/javascript">
			function getHtmlFontSize() {
				//获取设备宽度
				let deviceWidth = document.documentElement.clientWidth || window.innerWidth;
				console.log("[设备宽度]", deviceWidth);
				if (deviceWidth >= 750) {
					deviceWidth = 750;
				} else if (deviceWidth <= 320) {
					deviceWidth = 320;
				}
				//设置html的字体大小为:1rem=100px;以设计原型750,如果设计稿是640px,font-size=100px,则为deviceWidth/6.4
				document.documentElement.style.fontSize = (deviceWidth / 7.5) + 'px';
			}
			getHtmlFontSize();
			window.addEventListener("resize", getHtmlFontSize)
		</script>

postcss-px2rem插件不能把行内样式进行pxTorem的转换

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3使用postcss-pxtorem,你需要进行以下几个步骤: 1. 首先,在你的项目安装postcss-pxtorem插件,并确保安装了PostCSS 8的版本。 2. 修改package.json文件,在"postcss"字段下添加如下配置: ```json "postcss": { "plugins": { "autoprefixer": {}, "postcss-pxtorem": { "rootValue": 75, "propList": ["*"], "minPixelValue": 2 } } } ``` 这里的rootValue表示设计稿元素尺寸相对于75px的比例,propList表示要转换的属性列表,minPixelValue表示要替换的最小像素值。 3. 在项目新建一个rem.js文件,并在main.js引用它。rem.js文件的代码如下: ```javascript // 基准大小 const baseSize = 18 // 设置rem函数 function setRem() { // 当前页面宽度相对于1920宽的缩放比例,可以据实际情况进行修改 const scale = document.documentElement.clientWidth / 1920 // 设置页面节点字体大小 document.documentElement.style.fontSize = (baseSize * Math.min(scale, 2)) + 'px' } // 初始化rem setRem() // 窗口大小改变时重新设置rem window.onresize = function () { setRem() } ``` 这样,你就可以在Vue3使用postcss-pxtorem插件实现rem单位的自动转换了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue3.0使用postcss-pxtorem](https://blog.csdn.net/sd19871122/article/details/113845798)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Vuecli3配置postcss-pxtorem](https://blog.csdn.net/qq_28259083/article/details/124301683)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [vue-cli3.0 配置 以及 postcss-pxtorem的使用](https://blog.csdn.net/weixin_34378922/article/details/93177154)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值