固定定位在 Safari 7 中不起作用

Posted

技术标签:

【中文标题】固定定位在 Safari 7 中不起作用【英文标题】:Fixed Positioning not working in Safari 7 【发布时间】:2014-02-14 20:28:48 【问题描述】:

我在使用 Safari 7(在 OSX 上)的网站上遇到问题。 网址是:

如果你点击垂直的新闻通讯按钮,在内容框的右边缘,会弹出一个叠加层。

这个叠加层在大多数浏览器上看起来不错,但 safari 存在问题。

覆盖内容是一个固定宽度的绝对定位框。它包含一个类为“bg”的 div,它是一个 CSS 位置设置为固定且 CSS 顶部、右侧、底部左侧设置为 0 的 div。

想要的(并且通常获得的)效果是,这个 bg 框的大小可以达到视口的宽度和高度。在 safari 中,它的行为就好像它的位置设置为“绝对”一样——它的大小只是容器 div 的宽度和高度。

这是 Safari 的一个已知问题吗?是否提交了错误?有更新吗?

我可以通过重写 html、CSS 和 javascript 的一小部分来解决这个问题(如果有人有更简单的解决方案,欢迎分享!)但我想先了解发生了什么。

【问题讨论】:

【参考方案1】:

我不确定那个定位是怎么回事,但这是我在浏览器中获得相同结果的方法:

#overlays .overlay   /* line 1081 */
    ...
    width: 100%;
    height:100%;
    ...


#overlays .overlay .content.text   /* line 1185 */
    ...
    margin:0 auto;
    ...

【讨论】:

【参考方案2】:

您可以使用 Z-index,但 Z-index 与 position:fixed 不可靠,如下小提琴所示:http://jsfiddle.net/mZMkE/2/ 使用 translateZ 转换。

transform:translateZ(1px);

在您的页面元素上。

编辑:在您的代码中,添加这个 css:

.bla, .projects, .contact  
      -webkit-transform:translateZ(1px);
      -moz-transform:translateZ(1px);
      -o-transform:translateZ(1px);
      transform:translateZ(1px);

然后从这些元素和 .intro 中删除 z-index 引用。

你也可以在其他浏览器上试试

【讨论】:

我不认为这是堆叠问题,而是盒子大小的问题。

以上是关于固定定位在 Safari 7 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

HTML 5 地理定位在 Safari 中不起作用

嵌套的 Flexbox 100% 高度在 Safari 中不起作用 [重复]

回发在 Windows 7 的 Safari 中不起作用

CSS flexbox布局在Safari中不起作用

W3C 地理定位 API 在 Safari 5 上不起作用

Access-control-expose-headers 在 Safari 5.1.7 中不起作用