evrone / postcss-px-to-viewport

A plugin for PostCSS that generates viewport units (vw, vh, vmin, vmax) from pixel units. The best choice to create a scalable interface on different displays by one design size.
https://evrone.com/postcss-px-viewport
MIT License
2.98k stars 401 forks source link

希望增加全宽的数值配置,比如我要转换为 rpx 单位,全宽应该是 750,现在固定是 100只能转换为 vh 和 vw 。 #176

Open zoujingli opened 3 months ago

zoujingli commented 3 months ago

希望增加全宽的数值配置,比如我要转换为 rpx 单位,全宽应该是 750,现在固定是 100只能转换为 vh 和 vw 。

image

zoujingli commented 3 months ago

使用配置及案例:

image

image

image

zoujingli commented 2 months ago

临时上传插件 postcss-unit-unit 已支持转 rpx ,使用 uniapp 开发,统一使用 rpx 管理方案,当然还保留了原来的可配置参数以支持更多的需求。

这个插件是使用 postcss 8.x 接口实现,不会再提示 postcss-px-to-viewport: postcss.plugin was deprecated.

安装

npm i postcss-unit-unit --save

vite.config.ts 配置

import { defineConfig } from "vite";
// @ts-ignore
import uni from "@dcloudio/vite-plugin-uni";
import px2rpx from 'postcss-unit-unit';

export default defineConfig({
    base: "./",
    plugins: [uni()],
    envPrefix: ["APP_", "VITE_"],
    css: {
        postcss: {
            plugins: [
                px2rpx({
                    unitToConvert: 'px',
                    viewportWidth: 375,
                    unitPrecision: 5,
                    propList: ['*'],
                    viewportUnit: 'rpx',
                    fontViewportUnit: 'rpx',
                    fullViewportWidth: 750,
                    selectorBlackList: [],
                    minPixelValue: 1,
                    mediaQuery: false,
                    replace: true,
                    exclude: undefined,
                    include: undefined,
                    landscape: false,
                    landscapeUnit: 'rpx',
                    landscapeWidth: 568
                })
            ]
        }
    }
});