flex: flex-grow flex-shrink flex-basis|auto|initial|inherit
属性值
值 | 描述 |
---|---|
flex-grow | 一个数字,规定项目将相对于其他灵活的项目进行扩展的量。 |
flex-shrink | 一个数字,规定项目将相对于其他灵活的项目进行收缩的量。 |
flex-basis | 项目的长度。合法值:"auto"、"inherit" 或一个后跟 "%"、"px"、"em" 或任何其他长度单位的数字。 |
auto | 与 1 1 auto 相同。 |
none | 与 0 0 auto 相同。 |
initial | 设置该属性为它的默认值,即为 0 1 auto。请参阅 initial。 |
inherit | 从父元素继承该属性。请参阅 inherit。 |
flex-grow 定义和用法
flex-grow 属性用于设置或检索弹性盒子的扩展比率。。
<style>
#main {
width: 350px;
height: 100px;
border: 1px solid #c3c3c3;
display: flex;
}
#main div:nth-of-type(1) {flex-grow: 1;}
#main div:nth-of-type(2) {flex-grow: 3;}
#main div:nth-of-type(3) {flex-grow: 1;}
</style>
</head>
<body>
<div id="main">
<div style="background-color:coral;"></div>
<div style="background-color:lightblue;"></div>
<div style="background-color:khaki;"></div>
</div>
按比例扩展
CSS 语法
flex-grow: number|initial|inherit;
属性值
值 | 描述 |
---|---|
number | 一个数字,规定项目相对于其他灵活的项目进行扩展的量。默认值是 0。 |
initial | 设置该属性为它的默认值。请参阅 initial。 |
inherit | 从父元素继承该属性。请参阅 inherit。 |
flex-shrink: 定义和用法
lex-shrink 属性指定了 flex 元素的收缩规则。flex 元素仅在默认宽度之和大于容器的时候才会发生收缩,其收缩的大小是依据 flex-shrink 的值。
<style>
#content {display: flex; width: 400px;}
#content div {flex-basis: 120px;}
.box { flex-shrink: 1;}
.box1 { flex-shrink: 2; }
</style>
<div id="content">
<div class="box" style="background-color:red;">A</div>
<div class="box" style="background-color:lightblue;">B</div>
<div class="box" style="background-color:yellow;">C</div>
<div class="box1" style="background-color:brown;">D</div>
<div class="box1" style="background-color:lightgreen;">E</div>
</div>
iv 总宽度为 400px, flex-basic 为 120px。
A, B, C 设置 flex-shrink:1。 D , E 设置为 flex-shrink:2
D , E 宽度与 A, B, C 不同
本例中A、B、C 显式定义了 flex-shrink 为 1,D、E 定义了 flex-shrink 为 2,所以计算出来总共将剩余空间分成了 7 份,其中 A、B、C 占 1 份,D、E 占 2 份,即1:1:1:2:2
我们可以看到父容器定义为 400px,子项被定义为 120px,子项相加之后即为 600 px,超出父容器 200px。那么超出的 200px 需要被 A、B、C、D、E 消化 通过收缩因子,所以加权综合可得 200*1+200*1+200*1+200*2+200*2=700px。
于是我们可以计算 A、B、C、D、E 将被移除的溢出量是多少:
A 被移除溢出量:(200*1/700)*100,即约等于28.5px B 被移除溢出量:(200*1/700)*100,即约等于28.5px C 被移除溢出量:(200*1/700)*100,即约等于28.5px D 被移除溢出量:(200*2/700)*100,即约等于57px E 被移除溢出量:(200*2/700)*100,即约等于57px 最后A、B、C、D、E的实际宽度分别为:120-28.5=91.5px,120-57=63px,此外,这个宽度是包含边框的。
CSS 语法
flex-shrink: number|initial|inherit;
属性值
值 | 描述 |
---|---|
number | 一个数字,规定项目将相对于其他灵活的项目进行收缩的量。默认值是 1。 |
initial | 设置该属性为它的默认值。请参阅 initial。 |
inherit | 从父元素继承该属性。请参阅 inherit。 |
flex-basis: 定义和用法
flex-basis 属性用于设置或检索弹性盒伸缩基准值。。
<style>
#main {
width: 350px;
height: 100px;
border: 1px solid #c3c3c3;
display: flex;
}
#main div {
flex-grow: 0;
flex-shrink: 0;
flex-basis: 40px;
}
</style>
<div id="main">
<div style="background-color:coral;">红色 DIV</div>
<div style="background-color:lightblue;" id="myBlueDiv">蓝色 DIV</div>
</div>
CSS 语法
flex-basis: number|auto|initial|inherit;
属性值
值 | 描述 |
---|---|
number | 一个长度单位或者一个百分比,规定灵活项目的初始长度。 |
auto | 默认值。长度等于灵活项目的长度。如果该项目未指定长度,则长度将根据内容决定。 |
initial | 设置该属性为它的默认值。请参阅 initial。 |
inherit | 从父元素继承该属性。请参阅 inherit。 |
flex-direction 定义和用法
flex-direction 属性规定灵活项目的方向。
<style>
#main {
width: 400px;
height: 400px;
border: 1px solid #c3c3c3;
display: -webkit-flex; /* Safari */
-webkit-flex-direction: row-reverse; /* Safari 6.1+ */
display: flex;
flex-direction: row;
}
#main div {
width: 50px;
height: 50px;
}
</style>
<div id="main">
<div style="background-color:coral;">A</div>
<div style="background-color:lightblue;">B</div>
<div style="background-color:khaki;">C</div>
<div style="background-color:pink;">D</div>
<div style="background-color:lightgrey;">E</div>
<div style="background-color:lightgreen;">F</div>
</div>
设置flex-direction 属性一次为ow|row-reverse|column|column-reverse 看效果图
CSS 语法
flex-direction: row|row-reverse|column|column-reverse|initial|inherit;
属性值
值 | 描述 | 实例 |
---|---|---|
row | 默认值。灵活的项目将水平显示,正如一个行一样。 | 尝试一下 » |
row-reverse | 与 row 相同,但是以相反的顺序。 | 尝试一下 » |
column | 灵活的项目将垂直显示,正如一个列一样。 | 尝试一下 » |
column-reverse | 与 column 相同,但是以相反的顺序。 | 尝试一下 » |
initial | 设置该属性为它的默认值。请参阅 initial。 | 尝试一下 » |
inherit | 从父元素继承该属性。请参阅 inherit。 |
flex-wrap 定义和用法
flex-wrap 属性规定flex容器是单行或者多行,同时横轴的方向决定了新行堆叠的方向。。
注意:如果元素不是弹性盒对象的元素,则 flex-wrap 属性不起作用。
<style>
#main {
width: 200px;
height: 200px;
border: 1px solid #c3c3c3;
display: -webkit-flex; /* Safari */
-webkit-flex-wrap: wrap; /* Safari 6.1+ */
display: flex;
flex-wrap: wrap;
}
#main div {
width: 50px;
height: 50px;
}
</style>
<div id="main">
<div style="background-color:coral;">A</div>
<div style="background-color:lightblue;">B</div>
<div style="background-color:khaki;">C</div>
<div style="background-color:pink;">D</div>
<div style="background-color:lightgrey;">E</div>
<div style="background-color:lightgreen;">F</div>
</div>
CSS 语法
flex-wrap: nowrap|wrap|wrap-reverse|initial|inherit;
属性值
值 | 描述 |
---|---|
nowrap | 默认值。规定灵活的项目不拆行或不拆列。 |
wrap | 规定灵活的项目在必要的时候拆行或拆列。 |
wrap-reverse | 规定灵活的项目在必要的时候拆行或拆列,但是以相反的顺序。 |
initial | 设置该属性为它的默认值。请参阅 initial。 |
inherit | 从父元素继承该属性。请参阅 inherit。 |
定义和用法
flex-flow 属性是 flex-direction 和 flex-wrap 属性的复合属性。
flex-flow 属性用于设置或检索弹性盒模型对象的子元素排列方式。
flex-direction 属性规定灵活项目的方向。
flex-wrap 属性规定灵活项目是否拆行或拆列。
CSS 语法
flex-flow: flex-direction flex-wrap|initial|inherit;
属性值
值 | 描述 |
---|---|
flex-direction | 可能的值: row row-reverse column column-reverse initial inherit 默认值是 "row"。 规定灵活项目的方向。 |
flex-wrap | 可能的值: nowrap wrap wrap-reverse initial inherit 默认值是 "nowrap"。 规定灵活项目是否拆行或拆列。 |
initial | 设置该属性为它的默认值。请参阅 initial。 |
inherit | 从父元素继承该属性。请参阅 inherit。 |