仅在Safari中 - 位置:当父级位置时固定子级被切断:固定且溢出:隐藏

Thr*_*ive 16 css safari hidden fixed overflow

我只在Safari中看到这个问题(6.1 os x)

当父div设置为position:fixed overflow:hidden并且子div设置为position:fixed并且其中一部分溢出父级,它将被切断.

看看Chrome和Safari中的这个jsfiddle看看我的意思:http://jsfiddle.net/y2dg65y7/3/

<div class="wrapper">
    <div class="inner">
        Why is cut off in Safari?       
    </div>
</div>

.wrapper{
    background-color: red;
    width: 200px;
    overflow: hidden;
    height: 400px;
    position: fixed;
}

.inner{
    background-color: silver;
    padding: 20px;
    width: 400px;
    height: 200px;
    position: fixed !important;
    top: 50px;
    left: 40px;
}
Run Code Online (Sandbox Code Playgroud)

这是Safari中的错误吗?有任何想法吗?解决方法?

谢谢! - = B = -

jxm*_*ett 8

我在 macOS Catalina 10.15 上的 Safari 13.0.2 中找到了一个对我有用的解决方案。

诀窍是拆分position: fixedoverflow: hidden跨越两个 div,如下所示:

<div class="wrapper">
  <div class="wrap2">
    <div class="inner">
        Great success in safari 13.0.2 on MacOS Catalina 10.15       
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)
.wrapper{
    background-color: red;
    padding: 40px;
    width: 200px;
    height: 400px;
    position: fixed;
    top: 0;
    left: 0;
}

.wrap2{
  background-color: yellow;
  overflow: hidden;
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
}

.inner{
    background-color: silver;
    padding: 20px;
    width: 400px;
    height: 200px;
    position: fixed !important;
    top: 50px;
    left: 40px;
}
Run Code Online (Sandbox Code Playgroud)

还有一个 JS 小提琴:https : //jsfiddle.net/jxmallett/gsyb326v/1/

编辑:确认这适用于 iPad 上 iOS 12.3.1 上的 Safari。


小智 0

不确定这是否是您想要的,但这有效

溢出:可见;

.wrapper{ background-color: red; width: 200px; overflow: visible; height: 400px; position: fixed; }

  • 这是如何解决的?具有“overflow:hidden”的元素不应隐藏具有“position:fixed”的子元素。如果用户将元素设置为“overflow:hidden”,并且您告诉他删除它,这是有原因的。 (13认同)