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

前端如何让网页页面完美适配不同大小和分辨率屏幕

推荐使用postcss插件,它会自动将项目所有的px单位统一转换为vw等单位(包括npm安装的第三方组件),从而实现适配,具体配置规则可参考官网或npm网站介绍。

另外对于大屏的适配,需要缩放网页,可使用autojs,参考https://blog.csdn.net/m0_71231013/article/details/131650562 。但它只能放大或缩小页面(适合做大屏项目使用),不能让页面字体、div宽高等自动依据屏幕分辨率适配。

我的vue3项目使用postcss,首先在devDependencies安装了以下包:

"postcss": "^8.4.38",
"postcss-import": "^16.1.0",
"postcss-loader": "^8.1.1",
"postcss-px-to-viewport": "^1.1.1",
"postcss-px-to-viewport-opt": "^0.0.4",

随后,参考官网和一些参考资料,在项目根目录(和package.json平级)新建配置文件postcss.config.js,内容如下:

export default {plugins: {'autoprefixer': {path: ['./src/*']},'postcss-import': {},'postcss-px-to-viewport-opt': {'viewportWidth': '1707', // 我的视窗宽度'viewportHeight': '791', // 我的视窗高度'unitPrecision': 5, // 指定`px`转换为视窗单位值的小数位数(很多时候无法整除)'viewportUnit': 'vw', // 指定需要转换成的视窗单位,建议使用vw'selectorBlackList': ['#nprogress'], // 指定不转换为视窗单位的类'minPixelValue': 3, // 小于或等于`1px`不转换为视窗单位'mediaQuery': false, // 允许在媒体查询中转换`px`// 'exclude': /(\/|\\)(node_modules)(\/|\\)/, // 可以自定义规则哪些文件不要转换,例如这句让包里的不会转换,但通常无需配置}}
}

最后,如果使用了element-plus的el-message组件,它不能被postcss自动转换,需要自己在项目根目录的index.html的head配置:

<head><meta charset="UTF-8" /><!-- <link rel="icon" type="image/svg+xml" href="/vite.svg" /> --><link rel="icon" type="image" href="/AI.png" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>标题</title><style>.el-message {font-size: 16px;}</style>
</head>

这样就配置完成了!无论是在浏览器随意缩放,或者换不同的浏览器查看,网页都能完美适配!

我总结出写项目应遵循以下适配规则:

  1. 在App.vue页面设置全局的字体颜色、字体大小作为项目默认,避免意外情况,让页面宽100vw,高100vh

  2. font-size等单位不要用large、medium等没有明确单位的写法!!!全部禁用px单位,特别是1px、2px这种无法被postcss转换的微小长度!统一用vw、vh或者百分比;

  3. 记得电脑系统、浏览器调成深色模式,观察网站是否会有文字变白等异常现象并修复;

  4. 可以将网页用浏览器的手机显示模式,调整网页大小,例如1920×1080,观察不同大小模式网页是否适配;将网页进行缩放,观察不同缩放倍率下,是否出现不适配问题。

  5. 完成适配具体做法:安装postcss,项目根目录新建配置文件postcss.config.js,记得别用exclude排除node_modules,否则postcss无法将包里的px样式也一起转为vw;对于el-message组件,单独在项目的index.html文件的style里,设置 .el-message { font-size: 16px;},即可保证el-message组件显示正常。

http://www.lryc.cn/news/395742.html

相关文章:

  • gitlab-runner安装部署CI/CD
  • 数据分析案例-2024 年全电动汽车数据集可视化分析
  • H桥驱动器芯片详解
  • 哪个充电宝口碑比较好?怎么选充电宝?2024年口碑优秀充电宝推荐
  • Memcached 介绍与详解及在Java Spring Boot项目中的使用与集成
  • 淮北在选择SCADA系统时,哪些因素会影响其稳定性?
  • Linux: 命令行参数和环境变量究竟是什么?
  • 数学系C++ 类与对象 STL(九)
  • CSS技巧专栏:一日一例 2.纯CSS实现 多彩边框按钮特效
  • JCEF 在idea 开发 java 应用
  • 绝区伍--2024年AI发展路线图
  • C++:.front()函数作用
  • Linux系统备份工具TimeShift
  • Google重大更新--解读Android Auto认证4.3
  • scala基础
  • 小红书选品中心商家采集 小红书商家电话采集软件
  • JavaScript基础: JavaScript 数字类型
  • 【网络安全】漏洞挖掘之Spring Cloud注入漏洞
  • 面试官:MySQL死锁是什么,如何解决?
  • CSS原子化
  • 【Python的pip配置、程序运行、生成exe文件】
  • 神经网络习题
  • deepstream段错误
  • 《梦醒蝶飞:释放Excel函数与公式的力量》10.1.1函数简介
  • Bert 变种, T5模型
  • 技术赋能政务服务:VR导视与AI客服在政务大厅的创新应用
  • 大模型备案全网最详细流程【附附件】
  • 0090__【Git系列】merge和rebase的区别
  • 谈面向任务的多轮对话系统(TOD)
  • 汇凯金业:如何判断黄金的买入时机