【问题标题】:Website keeps flickering in smaller screen sizes in safari网站在 Safari 中以较小的屏幕尺寸不断闪烁
【发布时间】:2018-12-01 05:33:26
【问题描述】:

我有这个网站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%;
    }
}

如果我删除这些样式,它会起作用。

我的问题是

  • 为什么会这样?

  • 此问题的根本原因是什么以及如何解决?

【问题讨论】:

  • 你在使用媒体查询吗?如果它在闪烁,我的第一个猜测是字体大小的变化将某些东西推到媒体查询的边界之外,这正在将字体大小调整回另一个媒体查询边界,因此它会反弹样式更改。
  • @Taplar 您的意见在某一方面可能是正确的。请注意,这只发生在不同媒体查询的转换中。唯一的可能是 safari 试图使下面的媒体查询以某种奇怪的方式工作。比如近似值或遗漏一些中间值之类的。我无法准确判断(最大宽度:74.9375rem)(最小宽度:75rem)

标签: jquery html css macos safari


【解决方案1】:

我自己也遇到过同样的问题。我只在 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

【讨论】:

    【解决方案2】:

    您的媒体查询 rem 单位基于您的 html 字体大小。因此,当一个发生变化时,另一个也会发生变化,从而导致循环或反弹效果。

    要解决此问题,您可以更改字体大小以定位 html 元素以外的其他内容,例如 body

    【讨论】:

    • 如果是这种情况,那么它一定不能在整个 Safari 和所有其他浏览器中运行。这个问题只发生在 Safari 中,也只发生在媒体查询切换到下一个较小屏幕的地方。比如说 74.9375rem 到 75rem
    猜你喜欢
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多