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

前端适配方案之 flexible.js 到 postcss-px-to-viewport-8-plugin插件演进

响应式布局从页面表现来说,就是根据浏览器的大小变化而变化。

以前经常使用 amfe-flexible.js 这个库,再通过IDE的cssrem插件转换视觉稿单位 px => rem。

amfe-flexible官方也提示大家使用,viewport来替代。

也许有同学使用postcss-px-to-viewport 这个插件,是的。他是postcss-px-to-viewport-8-plugin 插件的前身。

使用 postcss-px-to-viewport 控制台报以下代码

postcss-px-to-viewport: postcss.plugin was deprecated. Migration guide: https://evilmartians.com/chronicles/postcss-8-plugin-migration

解决

postcss-px-to-viewport 替换 postcss-px-to-viewport-8-plugin 修复因为postcss版本导致的atRule is not a constructor 问题。

postcss-px-to-view-port-8-plugin 依赖其它三方库版本如下:

 "postcss": "^8.3.8", // 8.0.0版本都不会转单位"postcss-loader": "^6.1.1",

笔者使用的架构是 vite+react

postcss.config.js 配置

export default {plugins: {'postcss-px-to-viewport-8-plugin': {unitToConvert: 'px', // 需要转换的单位,默认为"px"viewportWidth: 1920, // 设计稿的视口宽度unitPrecision: 5, // 单位转换后保留的精度propList: ['*'], // 需要转换的 CSS 属性列表, 例如['*']代表全部,['html']表示仅对html有效viewportUnit: 'vw', // 转换后的视口单位fontViewportUnit: 'vw', // 转换后的字体单位selectorBlackList: ['.ignore', '.hairlines'], // 不进行转换的 CSS 类名minPixelValue: 1, // 设置转换的最小像素值(3px会被转换为1vw)mediaQuery: false, // 媒体查询里的单位是否需要转换单位},autoprefixer: {},},
}

注意:viewportWidth – 设计稿的视口宽度,这个是设计稿的大小。

更多配置请参考:https://github.com/krmao/postcss-px-to-viewport-8-plugin

代码

// jsxfunction App() {return (<><div className="header-box"><div className="header-title">【1303室】</div><div className="header-rcn"><div className="c1">安全第一责任人:李帅彬</div><div className="c2"><div className="time">20:20</div><div className="date">2025-04-29</div><div className="week">星期一</div></div></div></div></>);
}export default App;// css代码
.header-box {height: 188px;background-color: #2003b0;padding: 0 70px;color: #fff;display: flex;align-items: center;justify-content: space-between;
}.header-title {font-size: 92px;font-weight: 500;
}.header-rcn {display: inline-flex;align-items: flex-end;
}.header-rcn .c1 {color: #d4f802;font-size: 38px;padding: 0 0 20px 0;
}.header-rcn .c2 {margin-left: 40px;text-align: center;
}.header-rcn .c2 .time {font-size: 40px;
}.header-rcn .c2 .date {font-size: 30px;
}.header-rcn .c2 .week {font-size: 30px;
}

预览

更多实践

相关文章:

  • Windows 10开始菜单优化方案,如何实现Win7风格开始菜单的还原
  • 【设计模式】用观察者模式对比事件订阅(相机举例)
  • 【K8S】详解NodePort 和 ClusterIP
  • 【K8S】详解Labels​​ 和 ​​Annotations
  • Android 应用多语言与系统语言偏好设置指南
  • 容器运行时保护:用Falco构建云原生安全防线
  • 简单理解HTTP/HTTPS协议
  • 基于 Apache POI 实现的 Word 操作工具类
  • AI公文写作,推荐AI材料星!
  • vue3 动态绑定 ref 并获取其 dom
  • Python 自动化运维与DevOps实践
  • Docker如何实现容器之间的通信
  • 李沐动手深度学习(pycharm中运行笔记)——12.权重衰退
  • GitLab CVE-2025-4278 安全漏洞解决方案
  • openLayers切换基于高德、天地图切换矢量、影像、地形图层
  • 使用NPOI库导出多个Excel并压缩zip包
  • 【跨界新视野】信号处理遇上VR/AR:下一代沉浸体验的核心技术与您的发表蓝海
  • STUN (Session Traversal Utilities for NAT) 服务器是一种网络协议
  • Linux 上 Ollama 部署为系统服务
  • 飞算JavaAI编程助手在IDEA中的安装教程:本地安装、离线安装、在线安装方法大全
  • 建立网站/百度视频
  • 三亚网站怎么制作/宁波seo网络推广主要作用
  • 厦门做网站公司排名/海南网站推广
  • 什么软件可以发布做网站/怎么做
  • 96633微信客服人工打不通/百度seo排名优化价格
  • 要加强分院网站建设/百度推广收费标准