Flexbox 不尊重 overflow-x: hidden on body (Safari / iOS webkit)

Posted

技术标签:

【中文标题】Flexbox 不尊重 overflow-x: hidden on body (Safari / iOS webkit)【英文标题】:Flexbox doesn't respect overflow-x: hidden on body (Safari / iOS webkit) 【发布时间】:2019-01-24 11:25:46 【问题描述】:

通常,在 body 上设置overflow-x: hidden 应该意味着整个页面永远不会滚动。

但在 MacOS Safari 和 ios webkit(Safari、Chrome 等)中,如果嵌套的 flexbox 元素溢出正文,overflow-x: hidden 将不受尊重。

在 Chrome / Firefox 中打开以下内容,一切正常。

在 Safari 或 iOS webkit 中打开,它会滚动。

https://codepen.io/anon/pen/jdPbGN

body 
  width: 100vw;
  overflow-x: hidden;
  margin: 0;


.flex 
  display: flex;


.sidebar 
  width: 100%;
  height: 200px;
  flex: 1 0 auto;
  background-color: orange;
<body>
  <main class="flex">
    <aside class="sidebar">
      
    </aside>
    <section class="content">
      <img src="https://via.placeholder.com/150" />
    </section>
  </main>
</body>

【问题讨论】:

【参考方案1】:

有一个简单的修复方法,但如果您假设 overflow-x: hidden 则并不明显

解决方法是将overflow-x: hidden 放在与display: flex 相同的元素上。

我觉得这是 Safari / iOS webkit 中的一个错误。好奇别人是否同意。

【讨论】:

以上是关于Flexbox 不尊重 overflow-x: hidden on body (Safari / iOS webkit)的主要内容,如果未能解决你的问题,请参考以下文章

Flexbox 防止边距被尊重

Internet Explorer 不尊重我的最小高度:100% 使用 flexbox

CSS:flexbox水平溢出[关闭]

Flexbox溢出-x最后一个边距[重复]

Flexbox溢出-x最后边距[重复]

为啥 chrome 不为嵌入式 Twitter 时间线渲染 flexbox 定位?