当前位置: 首页 > news >正文

崇州网站制作网站下载软件

崇州网站制作,网站下载软件,搜索词排行榜,购物网站建设 属于信息系统管理与设计么在 Vue 3 Vite 项目中使用 postcss-pxtorem 自动将 px 单位转换为 rem 单位,可以按照以下步骤配置: 一、基础版本 1. 安装依赖 首先安装必要的插件: npm install postcss postcss-pxtorem autoprefixer -D # 或 yarn add postcss postcs…

在 Vue 3 + Vite 项目中使用 postcss-pxtorem 自动将 px 单位转换为 rem 单位,可以按照以下步骤配置:

一、基础版本

1. 安装依赖

首先安装必要的插件:

npm install postcss postcss-pxtorem autoprefixer -D
# 或
yarn add postcss postcss-pxtorem autoprefixer -D

2. 在vite.config.ts中引入并配置

  css: {preprocessorOptions: {
//less配置,不需要注释掉less: {math: "always", // 括号内才使用数学计算globalVars: {// 全局变量mainColor: "red",},},},postcss: {plugins: [postcssPxtorem({rootValue: 37.5, // UI设计稿的宽度/10unitPrecision: 3, // 转rem精确到小数点多少位propList: ["*"], // 需要转换的属性 *表示所有selectorBlackList: ["ignore"], // 不进行px转换的选择器replace: true, // 是否直接更换属性值,而不添加备用属性mediaQuery: false, // 是否在媒体查询的css代码中也进行转换minPixelValue: 0, // 设置要替换的最小像素值exclude: /node_modules/i, // 排除node_modules文件夹下的文件}),autoprefixer,],},},

3. 创建一个rem.js文件 内容如下,再在入口文件中去引入该文件

// 判断是否是PC端
const isPc = !/Android|iPhone|SymbianOS|Windows Phone|iPad|iPod/i.test(navigator.userAgent
);
// 设置基础根文件大小
let baseSize = 37.5;
// rem 函数
function setRem() {const clientWidth = document.documentElement.clientWidth;// 设计稿一般都是以375的宽度let scale = clientWidth / (baseSize * 10);// 设置页面根节点字体大小(“Math.min(scale, 2)” 指最高放大比例为2,可根据实际业务需求调整)let enlarge = 1.5;if (isPc) {enlarge = 1;scale = clientWidth / 980; // 980 是PC端设计稿的宽度}document.documentElement.style.fontSize =baseSize * Math.min(scale, enlarge) + "px";
}
// 调用方法
setRem();// 监听窗口在变化时重新设置跟文件大小
window.onresize = function () {setRem();
};export default {};

4. 在main.js中引入

import { createApp } from "vue";
import "./style.css";
import App from "./App.vue";
import ElementPlus from "element-plus";
import "element-plus/dist/index.css";
import router from "./router/index";
import "mapbox-gl/dist/mapbox-gl.css";
import "./utils/rem";
const app = createApp(App);app.use(ElementPlus);
app.use(router);
app.mount("#app");

二、详细版本

1. 安装依赖

首先安装必要的插件:

npm install postcss postcss-pxtorem autoprefixer -D
# 或
yarn add postcss postcss-pxtorem autoprefixer -D

2. 配置 postcss.config.js

在项目根目录创建或修改 postcss.config.js 文件:

module.exports = {plugins: {'postcss-pxtorem': {rootValue: 16, // 基准值(1rem = 16px)propList: ['*'], // 需要转换的属性,*表示所有selectorBlackList: ['.el-'], // 忽略包含.el-的class(不转换Element Plus样式)minPixelValue: 2 // 小于2px不转换},autoprefixer: {} // 自动添加浏览器前缀}
}

3. 修改 vite.config.ts

确保 Vite 已启用 PostCSS:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'export default defineConfig({plugins: [vue()],css: {postcss: {// 自动读取postcss.config.js}}
})

4. 动态设置基准值(可选)

main.ts 中设置 HTML 根字体大小(通常基于设计稿宽度):

// 根据设计稿调整(设计稿宽度/10)
function setRemUnit() {const docEl = document.documentElementconst ratio = docEl.clientWidth / 1920 // 1920是设计稿宽度docEl.style.fontSize = 16 * Math.min(ratio, 2) + 'px' // 限制最大缩放
}setRemUnit()
window.addEventListener('resize', setRemUnit)

5. 注意事项

  1. Element Plus 适配

    • 通过 selectorBlackList 忽略 Element 组件样式
    • 或单独配置 Element 的 rem 比例
  2. 样式写法

    /* 转换前 */
    .dialog-wrapper {width: 240px;padding: 12px;
    }/* 转换后(假设rootValue=16) */
    .dialog-wrapper {width: 15rem;padding: 0.75rem;
    }
    
  3. 开发环境检查

    • 确认转换生效:检查浏览器开发者工具中的最终样式
    • 可以通过 /* px-to-viewport-ignore-next */ 注释跳过特定行的转换

完整配置示例

// postcss.config.js
module.exports = {plugins: {'postcss-pxtorem': {rootValue: 16,propList: ['*', '!border*'], // 不转换border相关属性exclude: /node_modules\/element-plus/ // 忽略element-plus},autoprefixer: {overrideBrowserslist: ['last 2 versions']}}
}

这样配置后,项目中的 px 单位会自动转换为 rem,实现响应式布局。设计稿测量值可以直接写 px,编译时会自动计算 rem 值。


注意事项

  1. 热更新问题
    修改PostCSS配置后需重启dev server

  2. 单位混合警告
    避免出现 calc(100px + 2rem) 这种混合单位写法

  3. 第三方库兼容
    对使用固定px的库(如地图组件),需通过 selectorBlackList 排除

  4. VS Code提示
    安装 PostCSS Language Support 插件获得代码提示


通过以上配置,您的项目将实现:

  • 精准的px到rem转换
  • 完美的Element Plus组件兼容
  • 响应式的布局适配
  • 高效的开发调试体验
http://www.dtcms.com/a/574057.html

相关文章:

  • 实现El-table 每行后面加验证
  • 淘宝网站制作广州公共资源交易
  • 在IAR Embedded Workbench for Arm中开发和调试Infineon MOTIX™ MCU
  • 贵阳市花溪区建设局网站商河做网站公司
  • JDK Maven Tomcat部分配置细节(自用)
  • 网站开发文档步骤应该怎么写开网站设计公司多少钱
  • 城市超级智能体破解落地难题,联想开启智慧城市4.0时代
  • 小型企业门户网站源码电商平台开发系统软件平台
  • 【16】Selenium+Python 接管已打开谷歌浏览器
  • 公司网站导航栏是什么天堂 在线地址8
  • Lay-Vue-Super前后端分离的通用后台管理项目
  • 网站虚拟主机建设在线房屋设计免费图
  • Give LLMs a Security Course 论文结构速览
  • 经典的 VLM 攻击汇总
  • 山东网站方案秦皇岛网站建设找汉狮
  • 基于电鱼 AI 工控机的智慧工地视频智能分析方案——边缘端AI检测,实现无人值守下的实时安全预警
  • phpstudy 无法启动mysql 但命令可以启动mysql
  • 【经典游戏】保姆级:Unity3D飞机大战(含资源包、完整项目)
  • Guava Cache淘汰算法
  • 门户网站类是什么意思怎么给自己做个网站吗
  • 小朋友做安全教育的网站慈溪做网站什么价
  • 设计一个网站的步骤深汕特别合作区包括哪些地方
  • 2.5 HuggingFace Transformers 库实战
  • 宿州建设企业网站公司做网站的有哪些学校
  • 网络通信的奥秘:HTTP详解 (七)
  • 福建网站建设科技有限公司那些网站做的非常好看的
  • 网站建设老李教学网站商务贸易网站建设
  • 11.5 脚本 本地网站收藏(解封归来)
  • Web APIs 学习第四天:DOM事件进阶
  • 后台网站设计织梦 蓝色 个人网站博客网站源码