【问题标题】:Google Maps API modifying page styles after loading only in SafariGoogle Maps API 仅在 Safari 中加载后修改页面样式
【发布时间】:2013-11-12 11:58:57
【问题描述】:

我遇到了一个奇怪的问题。我加载了一个页面,最初整个页面上的文本的不透明度为 1。Google Maps API 设置为超时加载。 2秒后,maps API加载地图,页面样式一下子被修改了。就像页面上的文字已经降低了不透明度(见照片)。这个问题似乎只在 Safari 中影响我。有没有人遇到过类似的事情或知道问题或可能导致这种情况的原因?

地图加载前的原图

地图加载后

【问题讨论】:

  • 我猜 jsFiddle 的代码太多了,但您至少可以提供一个链接到您正在体验的网站吗?我想看看行为是什么。

标签: javascript html css google-maps google-maps-api-3


【解决方案1】:

这不是不透明度的变化,而是字体平滑的变化。当页面上有可见的position: fixed; 元素时,Safari 可能会更改字体平滑。

说明

当没有指定-webkit-font-smoothing 时,Safari 将使用subpixel-antialiased 作为大多数元素的默认值,并且文本将呈现如下:

但是,当它在页面上遇到可见的position:fixed 元素时,它可能会使用antialiased 进行字体平滑,如下所示:

演示

您可以检查 this fiddle(仅在 Safari 上)并使用控件来查看 -webkit-font-smoothingposition 如何影响 Safari 上的文本外观。

解决方案

为防止 Safari 更改字体平滑,只需指定 font-smoothing,如下所示:

body {
    -webkit-font-smoothing: subpixel-antialiased;
}

【讨论】:

  • 哇。我从没想过指定 subpixel-antialiased 实际上会强制 Safari 使用它。我认为这只是 Safari 中的一个错误无法使用带有变换的子像素抗锯齿。我本来以为你只是要建议using antialiased,而不是你太棒了。
  • 哇!惊人的!我什至不知道该说什么,但你是一个救生员。我永远不会想出那个。我在这个问题上花了几个小时。很抱歉延迟回复,我真的认为没有人会回答这个问题。到目前为止,我还没有注意到对性能有任何影响,但是您认为这可能会对性能产生影响吗?将字体平滑应用于整个页面。再次感谢!这是巨大的!!!
  • @mcbeav Safari 一直在对整个页面进行字体平滑处理。事实上,这是 Mac OS 的核心,大多数程序的文本都经过了平滑处理。您可以使用-webkit-font-smoothing: none; 对其进行测试,以查看页面在没有字体平滑的情况下的外观。换句话说,不用担心性能影响。
  • 太棒了!太感谢了!我真的很感激帮助!这是巨大的!感谢您分享您的知识和时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多