iPad Safari 在 flex 项目过大时忽略边距

iPad Safari ignores margins when flex item gets too large

提问人:Madara's Ghost 提问时间:5/8/2017 最后编辑:BoltClockMadara's Ghost 更新时间:5/8/2017 访问量:603

问:

我有几个 flex 容器,每个容器有 3 个 flex 项目。前两个 flex-item 有一个 ,它们彼此之间以及与第三个 item 隔开。前两项总是很短(在本例中是恒定宽度),第三项具有可变宽度(可以长到足以换行)。margin-right

下面是一个示例(在 Chrome 中看起来不错,在 iPad 上就不那么好了)

li {
  display: flex;
  display: -webkit-flex;
}

.one, .two {
  margin-right: 10px;
}
<ul>
  <li>
    <span class="one">hey</span>
    <span class="two">ho</span>
    <span class="three">Lorem ipsum dolor sit amet.</span>
  </li>
  <li>
    <span class="one">hey</span>
    <span class="two">ho</span>
    <span class="three">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate molestias dolore in, nam neque facilis nulla eum beatae, excepturi fugiat.</span>
  </li>
  <li>
    <span class="one">hey</span>
    <span class="two">ho</span>
    <span class="three">Lorem ipsum dolor.</span>
  </li>
</ul>

这在几乎所有浏览器中都很好用(我省略了 -ms- 前缀,因为它们与此问题无关),但在 iPad 的 Safari 中(特别是运行 Safari 8 的 iPad Air 2,也许是其他浏览器),当第三项试图变大时,边距被完全忽略,前两项被混在一起。


预期

Expected


实际

Actual


这闻起来很像 Safari 中的错误,但我在网上找不到任何错误报告或讨论。它在几乎所有其他浏览器中的行为都符合预期。我试过摆弄几乎所有的属性,但无济于事。flex-

我首先在寻找解决方法,然后也在寻找为什么会发生这种情况的解释。

HTML CSS Safari FlexBox

评论


答:

4赞 CoenFuze 5/8/2017 #1

添加到类中。这会告知父容器此元素是灵活的。;-)-webkit-flex: 1;.three

评论

0赞 Madara's Ghost 5/11/2017
供将来参考。IE11 显然不喜欢 ,所以作为替代品效果很好。flex: 1flex: 1 0 auto