H5在PC上显示如何限制最大宽度(postcss-px-to-viewport如何限制最大宽度)

513 阅读3分钟

问题阐述:

H5项目通常需要进行页面适配,以满足不同屏幕尺寸的要求。在这方面,常常会使用像px-to-vw/rem等技术。postcss-px-to-viewport是一款PostCSS插件,能够将px值转换为视口单位(如vw、vh),这在H5开发中是常见的解决方案。然而,这种方案仍然存在一些不足之处,例如如何限制最大宽度,以及如何适配vant组件库。今天我要推荐的解决方案是postcss-mobile-forever插件,它能够弥补postcss-px-to-viewport插件无法限制最大宽度的缺陷,从而实现更灵活的扩展。

1. 介绍

如果您在使用 postcss-px-to-viewport 实现伸缩界面的时候,不希望界面在大屏设备上撑满整个屏幕而难以浏 览,希望界面在达到某一个合适的宽度后停止伸缩(限制最大宽度),您可以使用本插件。如果你的项目使用vant组 件库也可以通过postcss-mobile-forever文档对vant进行配置,或者选择其他插件搭配使用如:cnjm-postcss-px-to-viewport

cnjm-postcss-px-to-viewport基于postcss-px-to-viewport插件稍加改造的 和使用postcss-px-to-viewport 是基本一样的,只是多处理了vant等375尺寸问题

2. 安装

安装最新版本(基于 postcss@^8.0.0):

pnpm add postcss postcss-mobile-forever -D
npm install --save-dev postcss postcss-mobile-forever
yarn add -D postcss postcss-mobile-forever

安装最新的兼容版本(基于 postcss@^6.0.0)

npm install postcss-mobile-forever@legacy --save-dev
yarn add -D postcss-mobile-forever@legacy

3. 配置

安装之后在 postcss.config.js 配置文件中引入,或者其它框架配置文件中引入。

postcss.config.js 有好几种配置格式

Vite:

module.exports = {
  plugins: {
    tailwindcss: {},
    "postcss-mobile-forever": {
      appSelector: "#app", // 页面最外层选择器,例如“#app”,用于设置在桌面端和移动端横屏时的居中样式
      maxDisplayWidth: 480, // 限制视口单位的最大宽度
    },
    // 使用 cnjm-postcss-px-to-viewport 规避 postcss.plugin was deprecated 警告
    "cnjm-postcss-px-to-viewport": {
      viewportWidth: 375, // 根据设计稿设定
      minPixelValue: 1, // 最小的转换数值
      unitPrecision: 2 // 转化精度,转换后保留位数
    },
    autoprefixer: {
      overrideBrowserslist: ["Android >= 4.0", "iOS >= 7"]
    }
  }
};

Webpack:

import mobile from 'postcss-mobile-forever' // <---- 这里
import autoprefixer from 'autoprefixer'
// 省略……
{
        postcss: {
                plugins: [
                        autoprefixer(),
                        mobile({ // <---- 这里
                                appSelector: '#app',
                                viewportWidth: 375,
                                maxDisplayWidth: 580,
                        }),
                ]
        }
}
// 省略……

4. 范例

postcss-mobile-forever github 文件夹 example/ 内提供了分别在 ReactSvelteVueNext.jsNuxt 和原生 JavaScript 中使用 postcss-mobile-forever 的范例,通过命令行进入对应的范例文件夹中,即可运行:

cd example/react/

npm install

npm run start

5.效果

改造前:

改造后: