
实现网页自适应不同尺寸 屏幕(PC端)
发布日期:2022-03-08 21:50:43
浏览次数:2
分类:技术文章
本文共 1214 字,大约阅读时间需要 4 分钟。
前言:需求是一个静态展示页面根据UI提供设计稿完成,最好是适应具有不同屏幕尺寸,具体要求没提。
- 网上查找相关自适应布局,有很多种方案如下
- media 媒体查询 类似于响应式布局根据不同屏幕显示不同效果布局
- 百分百布局实现 可能也会存才拉伸 不能百分百还原设计图
- bootstrap, vue项目中使用flexible.js (只要一个静态页面不用框架pass)
- rem布局
采用2.果然通过百分比实现的页面只在和设计稿同等宽度屏幕效果最完美,其余会有不同程度拉伸。
- 采用rem布局方式
什么是rem布局?
百度官方解释
rem(font size of the root element)是指相对于根元素的字体大小的单位
经过搜索找到,通过js代码,根据获取到的屏幕宽度,动态修改html标签中fontSize的px单位的值
(function(doc,win){ let fn = () => { let docEl = doc.documentElement, clientWidth = docEl.clientWidth; if (!clientWidth) return; docEl.style.fontSize = 100 * (clientWidth / 1920) + 'px'; } if (!doc.addEventListener) return; win.addEventListener('resize',fn); doc.addEventListener('DOMContentLoaded',fn); })(document,window);
其中1920就是UI设计稿提供的宽度,这样就算是屏幕不是1920也可以根据比例放大缩小,实现百分百还原设计稿。
对应的css样式中 1rem=100px; 根据设计稿效果还原即可
- IE兼容问题
测试发现IE效果和其他浏览器不同,开始定位问题发现
根元素fontSize 没有被设置成功,打开开发者模式发现
好家伙竟然是IE不兼容ES6语法,果断把箭头函数改成正常function解决
function fn (){ let docEl = doc.documentElement, clientWidth = docEl.clientWidth; if (!clientWidth) return; docEl.style.fontSize = 100 * (clientWidth / 1920) + 'px'; }
再次打开IE发现显示IE阻止了这个控件,必须点击允许才能显示页面正常大小,百度一圈发现在<head></head>添加如下注释即可
转载地址:https://blog.csdn.net/m0_55571138/article/details/122368014 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2023年09月15日 14时55分48秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Mybatis-Plus实现分页
2019-03-07
踩坑记录(四)本地连接服务器宝塔面板数据库连不上去
2019-03-07
踩坑记录(五) 时间戳出问题
2019-03-07
Docker简介与安装
2019-03-07
Docker常用命令
2019-03-07
Linux如何关闭某个被占用的端口
2019-03-07
Nginx入门
2019-03-07
如何批量修改照片后缀名
2019-03-07
使用Nginx反向代理将自己的域名指向自己所发布的项目
2019-03-07
Redis入门教学
2019-03-07
个人的spring面试总结
2019-03-07
Spring MVC的跨域访问
2019-03-07
Spring MVC 拦截器
2019-03-07
RISC-V-中断和异常 笔记
2019-03-07
RISC-V编译流程及汇编设计
2019-03-07
内联函数×cpu验证
2019-03-07
Java基础学习生疏知识点总结(2)——idea快捷键大全
2019-03-07
Java基础学习生疏知识点总结(4)——面向对象、单一职责原则、this关键字、构造方法
2019-03-07
JAVA数据结构学习(1)——链表
2019-03-07