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

vue3+vite+amfe-flexible+postcss-pxtorem 实现全分辨率自适应

使用背景

在项目开发过程中,需要自适应多个分辨率,但是我目前按照设计稿开发出1920*1080的界面,为了快速实现自适应多个分辨率的目的,引用本组件

1.使用插件

npm install amfe-flexible --save
npm install postcss-pxtorem autoprefixer --save-dev

2.使用

2.1 编写自定义脚本,适配全分辨率

文件名称: flexible.js
文件路径: src/utils/flexible.js

// 增强版适配方案(支持PC+移动)
(function (window, document) {const docEl = document.documentElementconst dpr = window.devicePixelRatio || 1// 设置body基准字体function setBodyFontSize() {if (document.body) {document.body.style.fontSize = 12 * dpr + 'px'}}// 动态计算rem基准值function setRemUnit() {const clientWidth = docEl.clientWidthlet baseSize = 16 // 默认基准值// 多分辨率适配策略if (clientWidth < 768) {baseSize = (clientWidth / 375) * 16 // 移动端适配} else if (clientWidth < 1920) {baseSize = (clientWidth / 1920) * 16 // PC端等比缩小} else {baseSize = (clientWidth / 1920) * 16 // 大屏等比放大}docEl.style.fontSize = baseSize + 'px'}// 初始化设置setBodyFontSize()setRemUnit()// 监听事件window.addEventListener('resize', setRemUnit)window.addEventListener('pageshow', (e) => {if (e.persisted) {setRemUnit()}})
})(window, document)

2.2 编写配置文件

文件名称:postcss.config.js
文件路径:根目录

// 布局自适应配置
export default {plugins: {'postcss-pxtorem': {rootValue: 16, // 设计稿宽度 1920px 时,1rem = 192pxpropList: ['*'], // 所有属性都转换selectorBlackList: ['.ignore-rem'] // 忽略某些选择器},autoprefixer: {} // 自动添加浏览器前缀}
}

2.3 main.js 引入 flexible.js文件

必须比其他css样式先引入,要不然不生效

// 引入flexible 自适应
import '@/utils/flexible'

2.4 vite.config.js 配置 css解析

export default defineConfig(({ mode }) => {return {css: {postcss: './postcss.config'// 显式声明配置路},}
})

3. 修改文件以及对应目录

在这里插入图片描述

4. 实现的效果

实现的话再评论区扣1,SQ

http://www.xdnf.cn/news/675757.html

相关文章:

  • AI工具的选择:Dify还是传统工具?
  • 【C++】封装哈希表实现 unordered_map、unordered_set
  • 【Harmony OS】组件自定义属性、事件和状态管理
  • 【Webtrees 手册】第 9 章 - 开发指南
  • Mobaxterm 连接到 Docker 容器
  • 查询端口占用情况的命令(windows、linux)
  • Flink Table API 编程实战详解
  • IoT/HCIP实验-1/物联网开发平台实验Part2(HCIP-IoT实验手册版)
  • 数字人教师:开启教育智慧革新之旅
  • Unity数字人开发笔记
  • YOLOv4:目标检测的新标杆
  • 流量红利的破局之道—深度解析OPPO应用商店 CPD广告运营
  • 自动驾驶规划控制算法教程:从理论到实践
  • 《计算机组成原理》第 10 章 - 控制单元的设计
  • CST基础八-TOOLS工具栏(一)
  • 如何将 PDF 文件中的文本提取为 YAML(教程)
  • 自动化测试入门:解锁高效软件测试的密码
  • 59、【OS】【Nuttx】编码规范解读(七)
  • 【Python中的self】Python中的`self`:从基础到进阶的实战指南
  • roo code调用手搓mcp server
  • Python filter()函数详解:数据筛选的精密过滤器
  • 在promise中,多个then如何传值
  • sqli_labs第二十九/三十/三十一关——hpp注入
  • 《计算机组成原理》第 6 章 - 计算机的运算方法
  • 大模型的参数高效微调;大模型的对齐
  • Linux显示进程状态——ps命令详解与实战
  • 用C#最小二乘法拟合圆形,计算圆心和半径
  • chrome打不开axure设计的软件产品原型问题解决办法
  • 尚硅谷redis7 41-46 redis持久化之AOF异常恢复演示
  • 从零开始理解机器学习:知识体系 + 核心术语详解