一、box-flex
定义两个可伸缩的 p 元素。如果父元素的总宽度是 300 像素,则 #p1 的宽度是 100 像素,而 #p2 的宽度是 200 像素
1 #p1 2 { 3 -moz-box-flex:1.0; /* Firefox */ 4 -webkit-box-flex:1.0; /* Safari 和 Chrome */ 5 box-flex:1.0; 6 border:1px solid red; 7 } 8 9 #p2 10 { 11 -moz-box-flex:2.0; /* Firefox */ 12 -webkit-box-flex:2.0; /* Safari 和 Chrome */ 13 box-flex:2.0; 14 border:1px solid blue; 15 }
目前没有浏览器支持 box-flex 属性。
Firefox 支持替代的 -moz-box-flex 属性。
Safari、Opera 以及 Chrome 支持替代的 -webkit-box-flex 属性。
2.flex
flex
CSS简写属性 设置了弹性项目如何增大或缩小以适应其弹性容器中可用的空间。
此属性是以下CSS属性的简写:
1 /* 关键字值 */ 2 flex: auto; 3 flex: initial; 4 flex: none; 5 6 /* 一个值, 无单位数字: flex-grow */ 7 flex: 2; 8 9 /* 一个值, width/height: flex-basis */ 10 flex: 10em; 11 flex: 30px; 12 flex: min-content; 13 14 /* 两个值: flex-grow | flex-basis */ 15 flex: 1 30px; 16 17 /* 两个值: flex-grow | flex-shrink */ 18 flex: 2 2; 19 20 /* 三个值: flex-grow | flex-shrink | flex-basis */ 21 flex: 2 2 10%; 22 23 /*全局属性值 */ 24 flex: inherit; 25 flex: initial; 26 flex: unset;
可以使用一个,两个或三个值来指定 flex
属性。
单值语法: 值必须为以下其中之一:
- 一个无单位数(
<number>
): 它会被当作flex:<number> 1 0;
<flex-shrink>
的值被假定为1,然后<flex-basis>
的值被假定为0
。 - 一个有效的宽度(
width
)值: 它会被当作<flex-basis>的值。
- 关键字
none
,auto
或initial
.
双值语法: 第一个值必须为一个无单位数,并且它会被当作 <flex-grow>
的值。第二个值必须为以下之一:
- 一个无单位数:它会被当作
<flex-shrink>
的值。 - 一个有效的宽度值: 它会被当作
<flex-basis>
的值。
三值语法:
- 第一个值必须为一个无单位数,并且它会被当作
<flex-grow>
的值。 - 第二个值必须为一个无单位数,并且它会被当作
<flex-shrink>
的值。 - 第三个值必须为一个有效的宽度值, 并且它会被当作
<flex-basis>
的值。
initial
- 元素会根据自身宽高设置尺寸。它会缩短自身以适应 flex 容器,但不会伸长并吸收 flex 容器中的额外*空间来适应 flex 容器 。相当于将属性设置为"
flex: 0 1 auto
"。
auto
- 元素会根据自身的宽度与高度来确定尺寸,但是会伸长并吸收 flex 容器中额外的*空间,也会缩短自身来适应 flex 容器。这相当于将属性设置为 "
flex: 1 1 auto
". none
- 元素会根据自身宽高来设置尺寸。它是完全非弹性的:既不会缩短,也不会伸长来适应 flex 容器。相当于将属性设置为"
flex: 0 0 auto
"。 <‘flex-grow‘>
- 定义 flex 项目的
flex-grow
。负值无效。省略时默认值为 1。 (初始值为0
) <‘flex-shrink‘>
- 定义 flex 元素的
flex-shrink
。负值无效。省略时默认值为1
。 (初始值为1
) <‘flex-basis‘>
- 定义 flex 元素的
flex-basis
属性。若值为0
,则必须加上单位,以免被视作伸缩性。省略时默认值为 0。(初始值为 auto)
大多数情况下,开发者需要将 flex
设置为以下值之一: auto
,initial
,none
,或一个无单位正数。要查看这些值的效果,请尝试调整以下 flex容器的大小: