CSS Flex Box --- flex-wrap:wrap;如何设计特定的线条?

时间:2013-10-29 18:49:09

标签: css flexbox

我的问题涉及根据浏览器窗口的宽度将Flex-Box包装(flex-wrap:wrap;)的样式设置为多行:除了JavaScript之外,还有什么方法可以设计特定的行吗?

我们有以下div

 <body>
 <div class="flexwrap">
     <div class=flexbox"></div>
     <div class=flexbox"></div>
     <div class=flexbox"></div>
 </div>
 </body>

以下样式表

.flexwrap {
    display: -webkit-box;
    -webkit-box-orient: horizontal;
    display: -moz-box;
    -moz-box-orient: horizontal;
    display: flex;
    box-orient: horizontal;
    display: -ms-flexbox;
    -ms-flex-direction: row;
    flex-wrap: wrap;
}

.flexbox {
    -webkit-box-flex: 1;
    -moz-box-flex: 1;
    box-flex: 1;
    flex-grow:1;
    flex-shrink:0;
    width:300px;
    height:100px;
}

当浏览器窗口的宽度超过900px时,具有.flexbox类的所有div将在一条水平线中彼此相邻。当浏览器窗口的宽度小于900px时,带有.flexbox类的div将分为2行或3行,并在浏览器宽度上显示。

我想设置第二行中所有div的样式。这意味着以下内容:

Browser width > 900px = no div is styled
Browser width < 900px and Browser width > 600px  = the third div is styed
Browser width < 600px  = the second div is styled

有没有办法用css实现呢?

提前致谢

1 个答案:

答案 0 :(得分:2)

没有。 Flexbox不提供在多行Flex容器中设置特定行样式的方法。

Flexbox 允许灵活项目根据其弹性基础值调整大小。

http://codepen.io/cimmanon/pen/GKEfD

.flexwrap {
  display: -ms-flexbox;
  display: -webkit-flex;
  -webkit-flex-wrap: wrap;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
}
@supports (flex-wrap: wrap) {
  .flexwrap {
    display: flex;
  }
}

.flexbox {
  -webkit-flex: 1 20em;
  -ms-flex: 1 20em;
  flex: 1 20em;
  height: 100px;
}

请注意,这不适用于2009 Flexbox实施:

  • 虽然指定了换行,但没有浏览器实现它
  • 没有弹性基础

相关:CSS3 flexbox adjust height of vertically aligned elements