为什么这些弹性项目没有包裹?

时间:2017-09-09 11:32:38

标签: html css css3 flexbox wrapping

我有一个flex项目也是一个flex容器.sub-con,问题是.sub-con的flex项目拒绝换行,即使在添加:flex-flow: row wrap之后。

任何人都可以为我解决这个问题,或指出我做错了什么。

.container {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-flow: row wrap;
  height: 100vh;
}

.sub-con {
  margin-right: 50px;
  margin-left: 50px;
  height: 500px;
  background-color: #fff;
  display: flex;
  justify-content: center;
  flex-flow: row wrap;
}

.col-one {
  height: 100px;
  border: 1px solid lightgreen;
  flex-grow: 2;
}

.col-two {
  height: 100px;
  border: 1px solid red;
  flex-grow: 1;
}
<div class="container">
  <div class="sub-con">
    <div class="col-one"></div>
    <div class="col-two"></div>
  </div>
</div>

1 个答案:

答案 0 :(得分:2)

嵌套容器中的弹性项目的大小为百分比

.col-one{
  width: 40%;
  height: 100px;
  border: 1px solid lightgreen;
}
.col-two{
  width: 40%;
  height: 100px;
  border: 1px solid red;
}

因为百分比长度是基于父级的长度,所以没有理由包装。它们将始终是父母的40%,即使父母的宽度为1%。

如果您使用其他单位作为长度,例如pxem,它们将会换行。

jsFiddle demo

&#13;
&#13;
 .container {
   display: flex;
   justify-content: center;
   align-items: center;
   flex-flow: row wrap;
   height: 100vh;
 }
 
 .sub-con {
   flex: 1;  /* for demo only */
   align-content: flex-start; /* for demo only */
   margin-right: 50px;
   margin-left: 50px;
   height: 500px;
   background-color: #fff;
   display: flex;
   justify-content: center;
   flex-flow: row wrap;
 }
 
 .col-one {
   width: 200px;
   height: 100px;
   border: 1px solid lightgreen;
 }
 
 .col-two {
   width: 200px;
   height: 100px;
   border: 1px solid red;
 }
&#13;
<div class="container">
  <div class="sub-con">
    <div class="col-one"></div>
    <div class="col-two"></div>
  </div>
</div>
&#13;
&#13;
&#13;