柔性框中的行换行不包装在Safari中

Lar*_*arz 37 css safari flexbox

一个弹性容器有四个孩子,每个孩子的灵活度为25%,最小宽度.flex-flow设置为row wrap.Safari之外的浏览器按预期处理这个:如果达到最小宽度,它将下一个项目包装到下一行.在Safari中,它会溢出容器.

请参阅此处的演示:http: //codepen.io/lbilharz/pen/aJbkI

h1 Why this ain't wrappin' in mobile-safari?
  .flex
    for i in ['one','two','three','four']
      .item
        h2=i
Run Code Online (Sandbox Code Playgroud)

唱针

.flex
  display flex
  flex-wrap wrap
  flex-direction row
  padding 1em
  background lightyellow
  .item
    flex 1 0 25%
    padding 1em
    box-sizing border-box
    min-width 15em
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Jos*_*sen 52

根据对bugs.webkit.org评论,似乎解决方案很简单!

如果你的风格是

div.flex {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
    -webkit-flex-direction: row;
    flex-direction: row;
}
div.flex .item {
    min-width: 15em;
    -webkit-flex: 1;
    flex: 1;
}
Run Code Online (Sandbox Code Playgroud)

你只需要为你的flex声明添加更多的明确性.事实上,我认为只有一条线需要改变

div.flex {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
    -webkit-flex-direction: row;
    flex-direction: row;
}
div.flex .item {
    min-width: 15em;
    -webkit-flex: 1 1 15em; /* this */
    flex: 1;
} 
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的评论,它帮助我更多地了解了flex-basis.你也可以省略min-width并写`-webkit-flex:1 0 15em; flex:1 0 15em;`. (5认同)

kmg*_*dev 6

我正在使用max-width我的flex项目,所以我能够通过max-widthflex属性中明确设置来解决这个问题:

.wrapper {
  display: flex;
  flex-flow: row wrap;
}
li {
  width: 100%;
  max-width: 500px;
  flex: 1 1 500px;
}
Run Code Online (Sandbox Code Playgroud)


nin*_*xel -2

某些浏览器并不完全支持所有 CSS3 元素。尝试这个:

  display:-webkit-box;
  display:-webkit-flex;
  display:-webkit-flexbox;
  display:-moz-flex;
  display:-moz-box;
  display:-ms-flexbox;
  display:flex;
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回复,但是如果您查看 codepen,您会发现供应商前缀是自动添加的。 (4认同)