--- title: flex slug: Web/CSS/flex tags: - CSS - CSS Flexible Boxes - CSS Property - CSS 弹性盒子布局 - Flex - Reference translation_of: Web/CSS/flex ---
flex
CSS简写属性设置了弹性项目如何增大或缩小以适应其弹性容器中可用的空间。
这个交互案例的源码存储在github仓库。如果你想对此案例做贡献,请克隆项目https://github.com/mdn/interactive-examples 并且给我们推送一个请求(PR)。
此属性是以下CSS属性的简写:
/* 关键字值 */ flex: auto; flex: initial; flex: none; /* 一个值, 无单位数字: flex-grow */ flex: 2; /* 一个值, width/height: flex-basis */ flex: 10em; flex: 30px; flex: min-content; /* 两个值: flex-grow | flex-basis */ flex: 1 30px; /* 两个值: flex-grow | flex-shrink */ flex: 2 2; /* 三个值: flex-grow | flex-shrink | flex-basis */ flex: 2 2 10%; /*全局属性值 */ flex: inherit; flex: initial; flex: unset;
可以使用一个,两个或三个值来指定 flex
属性。
单值语法: 值必须为以下其中之一:
flex:<number> 1 0;
<flex-shrink>
的值被假定为1,然后<flex-basis>
的值被假定为0
。<flex-basis>的值。
none
,auto
或initial
.双值语法: 第一个值必须为一个无单位数,并且它会被当作 <flex-grow>
的值。第二个值必须为以下之一:
<flex-shrink>
的值。<flex-basis>
的值。三值语法:
<flex-grow>
的值。<flex-shrink>
的值。<flex-basis>
的值。initial
flex: 0 1 auto
"。auto
flex: 1 1 auto
".none
flex: 0 0 auto
"。<'flex-grow'>
0
)<'flex-shrink'>
1
。 (初始值为 1
)<'flex-basis'>
0
,则必须加上单位,以免被视作伸缩性。省略时默认值为 0。(初始值为 auto)大多数情况下,开发者需要将 flex
设置为以下值之一: auto
,initial
,none
,或一个无单位正数。要查看这些值的效果,请尝试调整以下 flex容器的大小:
<div class="flex-container"> <div class="item auto">auto</div> <div class="item auto">auto</div> <div class="item auto">auto</div> </div> <div class="flex-container"> <div class="item auto">auto</div> <div class="item initial">initial</div> <div class="item initial">initial</div> </div> <div class="flex-container"> <div class="item auto">auto</div> <div class="item auto">auto</div> <div class="item none">none</div> </div> <div class="flex-container"> <div class="item initial">initial</div> <div class="item none">none</div> <div class="item none">none</div> </div> <div class="flex-container"> <div class="item four">4</div> <div class="item two">2</div> <div class="item one">1</div> </div>
* { box-sizing: border-box; } .flex-container { background-color: #F4F7F8; resize: horizontal; overflow: hidden; display: flex; margin: 1em; } .item { margin: 1em; padding: 0.5em; width: 110px; min-width: 0; background-color: #1B5385; color: white; font-family: monospace; font-size: 13px; } .initial { flex: initial; } .auto { flex: auto; } .none { flex: none; } .four { flex: 4; } .two { flex: 2; } .one { flex: 1; }
{{EmbedLiveSample("flex", 1200, 370, "", "", "example-outcome-frame")}}
默认情况下,元素不会缩短至小于内容框尺寸,若想改变这一状况,请设置元素的{{cssxref("min-width")}} 与 {{cssxref("min-height")}}属性。
{{cssinfo}}
<div id="flex-container"> <div class="flex-item" id="flex">Flex box (click to toggle raw box)</div> <div class="raw-item" id="raw">Raw box</div> </div>
#flex-container { display: flex; flex-direction: row; } #flex-container > .flex-item { flex: auto; } #flex-container > .raw-item { width: 5rem; }
var flex = document.getElementById("flex"); var raw = document.getElementById("raw"); flex.addEventListener("click", function() { raw.style.display = raw.style.display == "none" ? "block" : "none"; });
#flex-container { width: 100%; font-family: Consolas, Arial, sans-serif; } #flex-container > div { border: 1px solid #f00; padding: 1rem; } #flex-container > .raw-item { border: 1px solid #000; }
{{EmbedLiveSample('示例','100%','60')}}
规范 | 状态 | 备注 |
---|---|---|
{{SpecName('CSS3 Flexbox', '#flex-property', 'flex')}} | {{Spec2('CSS3 Flexbox')}} | Initial definition |
{{cssinfo}}
{{Compat("css.properties.flex")}}