CSS自适应分辨率 postcss-pxtorem(适用于 Vite)




import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import styleImport from 'vite-plugin-style-import';
 
// 自动导入组件库样式
const path = require('path');
const resolve = (dir) => path.join(__dirname, dir);
 
export default defineConfig({
  plugins: [
    vue(),
    styleImport({
      libs: [
        {
          libraryName: 'element-plus',
          resolveStyle: (name) => {
            return `element-plus/theme-chalk/${name}.css`;
          },
          resolveComponent: (name) => {
            return `element-plus/lib/${name}`;
          },
        },
      ],
    }),
  ],
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: `@use "@/styles/element/index.scss" as *;`,
      },
    },
  },
  // 配置postcss-pxtorem
  esbuild: {
    jsxFactory: 'h',
    jsxFragment: 'Fragment',
    plugins: [
      {
        name: 'autoprefixer',
        setup(build) {
          const postcss = require('postcss');
          const pxtorem = require('postcss-pxtorem');
          build.onLoad({ filter: /\.scss$/ }, async (args) => {
            const contents = await fs.readFile(args.path, 'utf8');
            const result = await postcss([
              pxtorem({
                rootValue: 16,
                propList: ['*'],
              }),
            ]).process(contents, { from: undefined });
            return { contents: result.css, loader: 'css' };
          });
        },
      },
    ],
  },
});

这个代码实例展示了如何在Vite项目中使用esbuild.plugins来配置postcss-pxtorem,以自动将CSS中的px单位转换为rem单位。rootValue设置为16,意味着1rem等于16px,这样可以使得根元素的字体大小更容易控制。propList设置为['*']表示转换所有属性,也可以根据需要指定特定的属性。

css
最后修改于:2024年08月18日 23:03

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日