网站首页 > 技术文章 正文
前端时间一个朋友向我抱怨,自己因为少乘了10,结果被老板留下花了两个小时时间改BUG。从他的表情当中,我看出了慢慢的无奈与悲伤~~~
事情是这样,老板下发一个小项目,一个H5的小网站。然后朋友就开心的花了4个小时完成了网站,仔细检查之后提交,部署。然后向老板汇报!
“老板,您交代的活干完了,是否我可以下班了?”
“稍等,我看看页面效果呢!”
这一看不得了,这是什么辣鸡页面,完全都是乱的。都超出了屏幕的范围。
“这样吧,小丁啊,你留下加会儿班,把这个解决一下!”
就这样,朋友开始了苦逼的排查时间。毕竟自己的一手写出来的代码,哪儿哪儿都门儿清,而且部署之前都检查的清清楚楚,咋会出现这个问题呢?然后,抠脑袋就开始了~~~
从头到脚,哪儿哪儿都看了一遍,写了一遍,依然本地开发没有任何问题,一到手机浏览就会出错。考虑了兼容性,等等。。。依然,找不到错误的原因。直到~~~打印了一下根元素(也就是html)的字体大小<4.8px> 。嗯,没有问题,根元素字体4.8px,rem计算出来没有问题。
~~~不对,好像哪儿看着不对。然后,这位朋友就发现了4.8px好像小了点。。。有过前端开发经验的童鞋应该都知道,浏览器对于字体有一个最小字体大小。chorme 之类的是12px,也就是说,这根元素的4.8px 根本就是无效属性。rem的参考大小依然是浏览器默认字体大小。wtfk,找个这个东西花了两个小时!!!太苦了,然后,修改,提交,部署,汇报,嗯。。。这次一次通过了。
可能有些没有开发经验的同学不是很了解以上的内容啊,简单介绍一下。
关于H5页面响应式布局(可以随着屏幕的宽度自适应页面的比例)开发有很多开发方式,媒体查询、vw/vh、百分比、栅格布局,rem,等等,以上朋友使用的就是rem,rem是指相对于根元素字体大小比例的一个计算数据。比如,根元素节点字体大小为12px,那么,1rem就等同于12px,2rem 就是 24px。
因此在开发过程中,我们可以通过控制根元素节点大小加上使用rem的方式去开发网站,这样,网站在不同机型下呈现出来的效果会是一模一样的。
具体的原理:
设计图宽度750px,我们可以计算出,当前屏幕宽度,相对于设计图所占的一个比例,即把当前屏幕分为750份,那么设计图中10px就是当前屏幕占750份中的10份。但是不同机型可能宽度不一样,所以,这个当前屏幕宽度得是一个由程序获取的一个动态的值。然后这个值除以750*10就是这个10项数在当前屏幕中所占的份数。说到这里,大家可能就想到了,上面有提到过,rem就是相对于根元素的计算比例大小,那么如果我们把当前屏幕宽 / 750这个设置为根元素节点的字体大小,然后页面所有元素都用rem控制,那不是为所欲为了么!!!嗯,对,事实就是这样。我这个朋友也是这样,然后。。。就花了2个小时去找原因。
因为最小字体的原因,浏览器参照的根元素字体并不是动态设置的字体大小,比设置值更大的浏览器最小字体。这也就导致了,朋友页面中主体部分超出屏幕。
说到这里,就已经结束啦!!!如果有什么不懂得可以留言咨询我哦~~~
猜你喜欢
- 2024-10-22 响应式布局方法总结(响应式布局方法总结)
- 2024-10-22 关于梦,26个令人难以置信的事实(关于梦,26个令人难以置信的事实有哪些)
- 2024-10-22 设计-前端设计尺寸与规范(前端 0.1+0.2)
- 2024-10-22 梦,到底在暗示什么?一个重要提醒可能被你忽视了
- 2024-10-22 RSLogix5000软件简易使用(1):打开程序、在线、离线、保存程序
- 2024-10-22 睡眠相关性痛性勃起—这个尴尬很“硬”核
- 2024-10-22 rem适配移动设备(rem适配方案 手淘方案)
- 2024-10-22 梦境使我不安——了解快速眼动睡眠行为障碍
- 2024-10-22 flex弹性布局和rem适配(flex弹性布局解决了什么问题)
- 2024-10-22 H5跨平台APP开发,rem自适应部分手机展示问题解决
- 1507℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 506℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 486℃MySQL service启动脚本浅析(r12笔记第59天)
- 466℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 464℃启用MySQL查询缓存(mysql8.0查询缓存)
- 444℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 423℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 419℃MySQL server PID file could not be found!失败
- 最近发表
-
- netty系列之:搭建HTTP上传文件服务器
- 让deepseek教我将deepseek接入word
- 前端大文件分片上传断点续传(前端大文件分片上传断点续传怎么操作)
- POST 为什么会发送两次请求?(post+为什么会发送两次请求?怎么回答)
- Jmeter之HTTP请求与响应(jmeter运行http请求没反应)
- WAF-Bypass之SQL注入绕过思路总结
- 用户疯狂点击上传按钮,如何确保只有一个上传任务在执行?
- 二 计算机网络 前端学习 物理层 链路层 网络层 传输层 应用层 HTTP
- HTTP请求的完全过程(http请求的基本过程)
- dart系列之:浏览器中的舞者,用dart发送HTTP请求
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)