jquery - 网站在 Safari 中以较小的屏幕尺寸不断闪烁
问题描述
我有这个网站https://www.scit.com.br/
这在所有浏览器中都可以正常工作,除了中小屏幕的 safari。问题是页面开始像放大和缩小一样闪烁。检查显示重复的 :before 和 :after 添加到标签中。这是由 style.css 文件引起的。我尝试删除所有 js 文件,所以 JS 不是罪魁祸首。
后来通过跟踪和错误删除代码。我发现下面的css导致了这个问题
style.css 行:2080、2118、2156、2203
@media (min-width: 36rem) and (max-width: 47.9375rem) {
html {
font-size: 85%;
}
}
@media (min-width: 48rem) and (max-width: 61.9375rem) {
html {
font-size: 90%;
}
}
@media (min-width: 62rem) and (max-width: 74.9375rem) {
html {
font-size: 95%;
}
}
@media (min-width: 75rem) {
html {
font-size: 100%;
}
}
如果我删除这些样式,它会起作用。
我的问题是
为什么会这样?
什么可能是这个问题的根本原因以及如何解决它?
解决方案
我刚刚遇到这个页面,我自己也遇到过同样的问题。我只在 safari 上闪烁,所有其他浏览器都可以。
简而言之- 使用 ems
在媒体查询中,em 和 rem 不应受到 HTML 中字体大小变化的影响,因为它们基于浏览器的内部 font-size 属性 - 但是 safari 似乎不遵循 rems 的这条规则。
例如,默认情况下,最小宽度为 25em 的断点在 400px 处出现,如果将 html 字体大小更改为 2rem,它仍然在 400px 处出现。将 html 字体大小更改为 2rem 的 25rem 最小宽度断点将在 safari 中以 800px 启动(下面来自 Zell Liew 的示例/文章),这与其他断点不同。
我检查了您的代码并注意到您应用了类似的解决方案,将 rems 切换为 pxs,这将起作用,但您的 pxs 不是很灵活,如果用户增加浏览器字体大小,您的断点将保持不变
/*@media (min-width: 36rem) and (max-width: 47.9375rem) {*/
@media (min-width: 576px) and (max-width: 767px) {
我遇到了这篇优秀的文章,它进一步解释了事情 https://zellwk.com/blog/media-query-units/
并从他的示例中对此进行了模拟,以直观地展示 https://codepen.io/webknit/pen/KYLNVW
推荐阅读
- sql - 在 postgres 中具有主键和唯一约束的重复行
- performance - 有没有办法让编译器复制粘贴整个方法以提高性能?
- python-3.x - 如何为 mac Code Runner 3.0 设置 python 3.6 解释器
- android - 如何纠正Android共享元素过渡的过渡问题?
- docker - 在 Kitematic 中,“连接到主机网络”是什么意思?
- ocaml - 有没有办法在 OCaml 的列表中添加一个空元素?
- php - 在 Laravel 中使用表单上传图片时面临的问题
- javascript - 如何根据 ID 更新另一张纸上的行而不用空白单元格覆盖?
- android - 如何在 Android Studio 中修复“Gradle 错误:网络无法访问:连接”
- python - 使用 django 和引导类创建单选表单的问题