Flexbox是否会受到基于弹性箱的影响?

时间:2018-01-22 11:29:44

标签: html css css3 flexbox

我有以下HTML

<div class="container">
  <div class="box box1">one </div>
  <div class="box box2">two </div>
  <div class="box box3">three </div>
  <div class="box box4">four </div>
  <div class="box box5">five </div>
  <div class="box box6">six </div>
</div>

使用flexbox

使用此CSS设置样式
.container {
  display:flex;
  flex-wrap:wrap;
}

.box {
  flex-basis:500px;
  flex-grow:1;
}

.box3 {
  flex-grow:10;
}

我假设flex-grow:10;会使box 3 10倍大于box 4落在我的屏幕上,但我看到了:

enter image description here

为什么这不是10倍大?

这是相对CodePen

1 个答案:

答案 0 :(得分:1)

  

弹性增长会受弹性基础影响吗?

在某种程度上,是的,正如flex-grow所做的那样,在项目大小减小之后,空间分配,其中项目可以通过内容或显式集。

例如,如果父母的宽度为1000像素,则有2个孩子,每个孩子的宽度为300像素,空间将为1000px-300px-300px = 400px。

如果一个孩子的弹性增长值为1而另一个孩子的弹性值为10,则前者为300px +(1/11 * 400px),后者为300px +(10/11 * 400px)

在此处详细了解flex-grow

所以在你的情况下,每个项目设置为500px使用,每行2个,当剩下空间时,该空间将在所有行上均等地共享,但是{{ 1}}。在该行上,空间将与10/11共享box3和1/11共享。

如果每行3个项目,box3的共享为10/12,另外两个为1/12。

  

为什么这不是10倍大?

在这种情况下,当在项目上设置宽度时,box3会在项目中分配剩余空间

如果您想使用flex-grow来调整项目的大小,请为其flex-grow flex-basis。这将使0的计算认为这些项目是空的,并且它会大10倍。

&#13;
&#13;
flex-grow
&#13;
/* We start writing out flexbox here. The above is just page setup */
.container {
  display:flex;
  flex-wrap:wrap;
}

.box {
  flex-basis:0;
  flex-grow:1;
  overflow: hidden;        /*  to allow items to be smaller
                               than its content  */
}

.box3 {
  flex-grow:10;
}


/* CSS Normalize */
article,aside,details,figcaption,figure,footer,header,hgroup,nav,section,summary{display:block;}audio,canvas,video{display:inline-block;}audio:not([controls]){display:none;height:0;}[hidden]{display:none;}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}a:focus{outline:thin dotted;}a:active,a:hover{outline:0;}h1{font-size:2em;}abbr[title]{border-bottom:1px dotted;}b,strong{font-weight:700;}dfn{font-style:italic;}mark{background:#ff0;color:#000;}code,kbd,pre,samp{font-family:monospace, serif;font-size:1em;}pre{white-space:pre-wrap;word-wrap:break-word;}q{quotes:\201C \201D \2018 \2019;}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-.5em;}sub{bottom:-.25em;}img{border:0;}svg:not(:root){overflow:hidden;}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em;}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0;}button,input{line-height:normal;}button,html input[type=button],/* 1 */
input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;}button[disabled],input[disabled]{cursor:default;}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0;}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none;}textarea{overflow:auto;vertical-align:top;}table{border-collapse:collapse;border-spacing:0;}body,figure{margin:0;}legend,button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}

/* Box-sizing border-box */
* { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; }


/* Some default styles to make each box visible */
.box {
  color:white;
  font-size: 50px;
  text-align: center;
  text-shadow:4px 4px 0 rgba(0,0,0,0.1);
  padding:10px;
}

/* Colours for each box */
.box1 { background:#1abc9c;}
.box2 { background:#3498db;}
.box3 { background:#9b59b6;}
.box4 { background:#34495e;}
.box5 { background:#f1c40f;}
.box6 { background:#e67e22;}
.box7 { background:#e74c3c;}
.box8 { background:#bdc3c7;}
.box9 { background:#2ecc71;}
.box10 { background:#16a085;}
&#13;
&#13;
&#13;

相关问题