使用 css 时flexbox,三个主要浏览器在某些区域的行为似乎完全不同。
flexbox
在这种情况下,我正在尝试创建一个图像网格:
<div class="container"> <div class="photo"></div> <div class="photo"></div> <div class="photo"></div> <div class="photo"></div> <div class="photo"></div> <div class="photo"></div> </div> .container { display:inline-flex; flex-flow : column wrap; align-content : flex-start; height : 100%; }
在这个例子中,我需要一个容器,它本身包含几个元素,这些div元素设置为从上到下流动,并在它们到达底部时包裹起来。最终为我提供了照片列。
div
但是我需要容器水平扩展以容纳包裹的元素:
这是一个快速的jsFiddle来演示。
行为如下:
在这种情况下,我想在其他两个浏览器中实现 IE11 的行为。因此我的问题是,如何使flexbox容器水平扩展以匹配其column wrap内容。
column wrap
提前致谢。
奇怪的是,大多数浏览器都没有正确实现列 flex 容器,但对写入模式的支持相当不错。
因此,您可以使用具有垂直书写模式的 row flex 容器。这会将块方向与内联方向交换,因此弹性项目将垂直流动。然后你只需要在弹性项目内部恢复水平书写模式。
.container { display: inline-flex; writing-mode: vertical-lr; flex-wrap: wrap; align-content: flex-start; height: 350px; background: blue; } .photo { writing-mode: horizontal-tb; width: 150px; height: 100px; background: red; margin: 2px; } <div class="container"> <div class="photo">1</div> <div class="photo">2</div> <div class="photo">3</div> <div class="photo">4</div> <div class="photo">5</div> <div class="photo">6</div> <div class="photo">7</div> <div class="photo">8</div> <div class="photo">9</div> </div>
这种方法在极端情况下可能有其自身的错误,尤其是当您混合使用浮动和嵌套弹性框等高级布局技术时。但在大多数情况下,它似乎工作正常。