css - 为什么在使用媒体查询时需要为最大高度添加额外的像素?
问题描述
我在 3840x2160 上以 225% 缩放运行此代码
#d1 {
height: 400px;
width: 275px;
background-color: hotpink;
}
@media (max-height: 850px) {
#d1 {
height: 400px;
width: 275px;
background-color: green;
}
}
@media (max-height: 818px) {
#d1 {
height: 400px;
width: 275px;
background-color: purple;
}
}
<div id="d1"></div>
当我没有打开书签栏时,d1会有hotpink的背景色,但是当我检查窗口高度时它显示850px,当我显示书签栏时,窗口高度是818px,然后d1背景色变为绿色。
现在,如果我在最大高度上再增加 1 个像素
@media (max-height: 851px) {
#d1 {
height: 400px;
width: 275px;
background-color: green;
}
}
@media (max-height: 819px) {
#d1 {
height: 400px;
width: 275px;
background-color: purple;
}
}
然后当我隐藏书签栏时,我得到绿色的背景颜色,当我显示书签栏时,背景颜色变为紫色。
所以我的问题是,为什么我需要在最大高度上添加一个额外的像素才能使其正常工作?
解决方案
浏览器倾向于......不使用整数。
可能发生的情况是,即使开发工具说您的窗口高 850 像素,它也可能高 850.25 像素。
因此,由于 850.25px 大于 850px,媒体查询不会触发。
(请记住,自从您放大后,您的整个视口被除以 225%,因此数学不太可能变成整数......)
推荐阅读
- python - 在 python 中验证 Github 私有仓库
- python - 硒中的 NoSuchFrameException(frame_reference)
- java - JsonDeserialize 可选字段设置为 Optinal.empty 的 Java 构建器类。JsonDeserialize 时设置默认值
- c - API 调用 libssh2_userauth_publickey_fromfile() 失败
- android - 如何在没有 BT Classic(BR) 的情况下在 Android 和 Windows 10 之间配对 BLE
- javascript - Ajax:将 ajax 调用重新加载到表后,自定义样式将消失
- node.js - 我们无法从 /proc/uptime 中找到正常运行时间,使用 os.uptime() 值,Pm2 3.5 错误
- r - 如何在闪亮的 R 中去抖动渲染图或任何渲染*?
- javascript - 如何在不使用验证码验证器的情况下实现 Firebase 电话验证系统?
- angular - 在来自 ngOnInit() 内部的调用验证失败后,ngOnInit() 被一次又一次调用