【问题标题】:Safari 6 (iOS 6) flex layout doesn't wrap elementsSafari 6 (iOS 6) flex 布局不包裹元素
【发布时间】:2014-05-05 16:08:40
【问题描述】:

我需要将两个框放在列中。这适用于我测试过的其他浏览器,但不适用于 iOS 6 上的 Safari 6。

示例:http://jsfiddle.net/5FESj/1/

display: -webkit-box;
-webkit-box-direction: normal;
-webkit-box-orient: horizontal;
-webkit-box-align: center;

我需要使用行(水平)布局,我只希望所有超过 100% 的元素都被推送到下一行。

【问题讨论】:

标签: html css flexbox


【解决方案1】:

Demo

HTML

<div class="page-wrap">
    <div class="content1">
         <h1>DIV 1</h1>
    </div>
    <div class="content2">
         <h2>DIV 2</h2>
    </div>
</div>

CSS

.page-wrap > div {
    width: 100%;
    height: 100px;
    background-color: lightBlue;
    border: 1px solid black;
}
.page-wrap {
    display: -webkit-box;
    /* OLD - iOS 6-, Safari 3.1-6 */
    display: -moz-box;
    /* OLD - Firefox 19- (doesn't work very well) */
    display: -ms-flexbox;
    /* TWEENER - IE 10 */
    display: -webkit-flex;
    /* NEW - Chrome */
    display: flex;
    /* NEW, Spec - Opera 12.1, Firefox 20+ */
}
.content1 {
    -webkit-box-ordinal-group: 1;
    /* OLD - iOS 6-, Safari 3.1-6 */
    -moz-box-ordinal-group: 1;
    /* OLD - Firefox 19- */
    -ms-flex-order: 1;
    /* TWEENER - IE 10 */
    -webkit-order: 1;
    /* NEW - Chrome */
    order: 1;
    /* NEW, Spec - Opera 12.1, Firefox 20+ */
    min-width:200px;
    width: 50%;
    /* No flex here, other cols take up remaining space */
    -moz-box-flex: 1;
    /* Without this, Firefox 19- expands to widest paragraph, overrides width */
}
.content2 {
    -webkit-box-ordinal-group: 2;
    /* OLD - iOS 6-, Safari 3.1-6 */
    -moz-box-ordinal-group: 2;
    /* OLD - Firefox 19- */
    -ms-flex-order: 2;
    /* TWEENER - IE 10 */
    -webkit-order: 2;
    /* NEW - Chrome */
    order: 2;
    /* NEW, Spec - Opera 12.1, Firefox 20+ */
    -webkit-box-flex: 2;
    /* OLD - iOS 6-, Safari 3.1-6 */
    -moz-box-flex: 2;
    /* Firefox 19- */
    /* For OLD syntax, otherwise collapses. */
    min-width:200px;
    -ms-flex: 2;
    /* TWEENER - IE 10 */
    -webkit-flex: 2;
    /* NEW - Chrome */
    flex: 2;
    /* NEW, Spec - Opera 12.1, Firefox 20+ */
    background: #ccc;
}

@media screen and (max-width: 500px) {
    .page-wrap {
        display: block;
    }
}

参考资料:(1) (2)


Demo

css

@media screen and (max-width: 500px) {
    .page-wrap {
        flex-direction: column-reverse;
    }
}

Refer

【讨论】:

  • 嗯,你设置了 display: block 为包装器,用 flex 是不可能的吗?
  • 是的,使用 flex-direction: column-reverse;查看编辑后的演示
  • 所以这是 Safari 6 中的一个错误,其中元素不像使用水平布局和 flex 的普通网格布局那样换行?
  • flexbox 布局是方向不可知的,而不是常规布局(基于垂直的块和基于水平的内联)。虽然这些适用于页面,但它们缺乏支持大型或复杂应用程序的灵活性(尤其是在改变方向、调整大小、拉伸、收缩等方面)。注意:Flexbox 布局最适合应用程序的组件和小规模布局,而 Grid 布局适用于更大规模的布局。 (css-tricks.com/snippets/css/a-guide-to-flexbox)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-25
  • 1970-01-01
  • 2018-03-10
  • 1970-01-01
  • 1970-01-01
  • 2016-07-19
  • 2019-03-03
相关资源
最近更新 更多