Safari 9(在 iOS9 中)忽略 CSS 设置

Posted

技术标签:

【中文标题】Safari 9(在 iOS9 中)忽略 CSS 设置【英文标题】:Safari 9 (in iOS9) ignores CSS settings 【发布时间】:2015-12-23 07:10:33 【问题描述】:

我正在处理这个网页:http://dev.mailagent.biz/cms/NEWS

它是响应式 html,适用于所有浏览器、所有窗口大小。它曾经在 iPhone 上也能正常工作,直到 ios9 出现。现在整个网站都坏了。添加了额外的边距(我猜),这意味着所有框似乎都有很多空白。下面是我 iPad 上的截图。

我将视口设置为

<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />

我尝试将边距设置为 0,甚至设置为负值,但框不会移动。我还尝试删除 div 标签之间的任何空格,没有任何变化。

我正在为所有浏览器使用响应式 css:dev.mailagent.biz/cms/css/main_responsive.css 然后附上这个专门针对iOS9的:http://dev.mailagent.biz/cms/css/iOS9.css

但是,大多数样式仍然被忽略,尤其是与边距有关的样式。例如。 iOS9 样式表实际上应该将整个站点向左对齐(.centeredWrapper 的边距:0 而不是边距:自动)。我知道 iOS9.css 是为 iPhone/iPad 附加的,例如与桌面版本相比,顶部菜单中的一些边距和颜色已成功更改。

有人知道发生了什么吗?如何告诉 Safari 停止尝试变得聪明?或者我应该如何更改我的标记?

【问题讨论】:

也可以在电脑上的 Safari 中查看。在那里看起来一样,可能更容易调试! 我在 Safari 中看到很多“无效的 CSS 属性声明”警告,这些警告似乎都与两个样式表中的 *property 选择器有关。不知道跟这个有没有关系。 是的,自从桌面 safari 升级到 9.0 后,它也有同样的问题。 CSS验证肯定存在问题,如下面的答案所示。谢谢! 【参考方案1】:

尝试为您的视口标签添加收缩以适应

<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">

【讨论】:

【参考方案2】:

main_responsive 中的第 281 行(或第 98 行)似乎是罪魁祸首:

.content ul, .content ol, :not(.content ul.slideshowUl)  margin: 0 0 10px 30px;

我在 Safari 检查器中将其注释掉,整个页面恢复正常。

【讨论】:

谢谢,你是对的,你认为新的 Safari 不喜欢 :not 语句吗? 实际上,使用语句中的逗号,:not 选择器似乎选择了页面上没有“.content ul.slideshowUL”类的所有内容。换句话说,这不是我认为它试图完成的正确语法。 但这并不能解释为什么 Safari 是唯一显示问题的! 其实iOS9上的Chrome应用也有同样的问题。我认为这与 Apple 在其 SDK 级别实现的新渲染算法有关。

以上是关于Safari 9(在 iOS9 中)忽略 CSS 设置的主要内容,如果未能解决你的问题,请参考以下文章

iOS 9 Safari webkit 仅在 iPad 上崩溃(iPhone 工作正常)

iOS9 mobile safari Landscape css bug with position: fixed;

iOS 9 Web 应用程序阻止在移动 Safari 中打开链接

iOS 9.3.1 更新推送,解决 Safari 崩溃问题

iOS 9.3 beta 版的Safari弹出框竟如此安卓?

忽略溢出的 CSS 不透明度过渡:隐藏在 Chrome/Safari 中