页面自适应postcss-pxtorem配置

本文介绍了如何在uniapp项目中使用vue3、typescript、vite和pinia框架,并配置postcss-pxtorem进行单位转换。主要内容包括安装postcss-pxtorem、vite.config.ts中的配置、行内style转rem的方法以及修改tsconfig.json和全局挂载px2rem函数的过程。
摘要由CSDN通过智能技术生成

一、项目背景

uniapp+vue3+ts+vite+pinia+vant

二、安装postcss-pxtorem

npm i postcss-pxtorem

三、vite.config.ts配置

import pxtorem from "postcss-pxtorem";

export default defineConfig({
	plugins: [
		uni(),
		Components({
			resolvers: [VantResolver()]
		})
	],
	css: {
		postcss: {
			plugins: [
				pxtorem({
					rootValue: 16, // 指定根元素的字体大小(一般是设计稿宽度的1/10,但设置为16px更方便我自己)
					propList: ["*"], // 对所有属性进行转换,不进行白名单过滤,如果指定列表,则只对其进行转换
					// selectorBlackList: ['.no-rem', /^.van-/] // 过滤掉开头是 .no-rem 的class,或者包含 .van- 的class
					selectorBlackList: [".no-rem"]	// 页面中不需要进行rem转换的元素,加个no-rem的classname就行
				})
			]
		}
	}
});

四:行内style转rem配置

虽然现在可以正常转rem了,但是写在行内的style中px还是px,不会转rem

1. 在main.ts页面加一个方法,挂载到全局

// main.ts

function px2rem(px: string): string {
	if (/%/i.test(px)) return px;	// 如果带有%就不处理
	else return parseFloat(px) / 16 + "rem";	、、
}


export function createApp() {
	const app = createSSRApp(App);
	app.use(Pinia.createPinia());
	app.config.globalProperties.$px2rem = px2rem;	// 挂载到全局
	return {
		app,
		Pinia
	};
}

2. 在项目根目录下创建一个名为 global.d.ts 的文件,下边的代码复制粘贴进去

import { App } from 'vue';

declare module '@vue/runtime-core' {
    interface ComponentCustomProperties {
        $px2rem: (value: string) => string;
    }

    interface App {
        $px2rem: (value: string) => string;
    }
}

declare module 'vue' {
    interface App {
        $px2rem: (value: string) => string;
    }
}

3. 修改tsconfig.json页面的配置,在include中添加一项:“global.d.ts”
在这里插入图片描述

4. 页面中使用

<div class="test" :style="{ padding: $px2rem('30px') }">你说得对</div>
  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值