directory search
简介 更新历史 关于样式表 属性 定位 布局 position z-index top right bottom left clip display float clear visibility overflow overflow-x overflow-y 尺寸 width min-width max-width height min-height max-height 外补白 margin margin-top margin-right margin-bottom margin-left 内补白 padding padding-top padding-right padding-bottom padding-left 边框 border border-width border-style border-color border-top border-top-width border-top-style border-top-color border-right border-right-width border-right-style border-right-color border-bottom border-bottom-width border-bottom-style border-bottom-style border-bottom-color border-left border-left-width border-left-style border-left-color border-radius border-top-left-radius border-top-right-radius border-bottom-right-radius border-bottom-left-radius box-shadow border-image border-image-source border-image-slice border-image-width border-image-outset border-image-repeat 背景 background background-color background-image background-repeat background-attachment background-position background-origin background-clip background-size 颜色 color opacity 字体 font font-style font-variant font-weight font-size font-family font-stretch font-size-adjust 文本 text-transform white-space tab-size word-break word-wrap overflow-wrap text-align text-align-last text-justify word-spacing letter-spacing text-indent vertical-align line-height text-size-adjust 文本装饰 text-decoration text-decoration-line text-decoration-color text-decoration-style text-decoration-skip text-underline-position text-shadow 书写模式 direction unicode-bidi writing-mode 列表 list-style list-style-image list-style-position list-style-type 表格 table-layout border-collapse border-spacing caption-side empty-cells 内容 content counter-increment counter-reset quotes 用户界面 appearance text-overflow outline outline-width outline-color outline-style outline-offset nav-index nav-up nav-right nav-down nav-left cursor zoom box-sizing resize ime-mode user-select pointer-events 多列 columns column-width column-count column-gap column-rule column-rule-width column-rule-style column-rule-color column-span column-fill column-break-before column-break-after column-break-inside 伸缩盒(旧) box-orient box-pack box-align box-flex box-flex-group box-ordinal-group box-direction box-lines 伸缩盒(新) flex flex-grow flex-shrink flex-basis flex-flow flex-direction flex-wrap align-content align-items align-self justify-content order 变换 transform transform-origin transform-style perspective perspective-origin backface-visibility 过渡 transition transition-property transition-duration transition-timing-function transition-delay 动画 animation animation-name animation-duration animation-timing-function animation-delay animation-iteration-count animation-direction animation-play-state animation-fill-mode 打印 page page-break-before page-break-after page-break-inside 媒体查询 width height device-width device-height orientation aspect-ratio device-aspect-ratio color color-index monochrome resolution scan grid Only IE scrollbar-3dlight-color scrollbar-darkshadow-color scrollbar-highlight-color scrollbar-shadow-color scrollbar-arrow-color scrollbar-face-color scrollbar-track-color scrollbar-base-color filter behavior Only webkit -webkit-text-fill-color -webkit-text-stroke -webkit-text-stroke-width -webkit-text-stroke-color -webkit-box-reflect -webkit-tap-highlight-color -webkit-user-drag -webkit-overflow-scrolling 选择符 元素选择符 通配选择符(*) 类型选择符(E) ID选择符(E#id) 类选择符(E.class) 关系选择符 包含选择符(E F) 子选择符(E>F) 相邻选择符(E+F) 兄弟选择符(E~F) 属性选择符 E[att] E[att="val"] E[att~="val"] E[att^="val"] E[att$="val"] E[att*="val"] E[att|="val"] 伪类选择符 E:link E:visited E:hover E:active E:focus E:lang(fr) E:not(s) E:root E:first-child E:last-child E:only-child E:nth-child(n) E:nth-last-child(n) E:first-of-type E:last-of-type E:only-of-type E:nth-of-type(n) E:nth-last-of-type(n) E:empty E:checked E:enabled E:disabled E:target @page:first @page:left @page:right 伪对象选择符 E:first-letter/E::first-letter E:first-line/E::first-line E:before/E::before E:after/E::after E::placeholder E::selection 语法与规则 !important /*comment*/ @import @charset @media @font-face @page @keyframes @supports 取值与单位 长度 em ex ch rem vw vh vmax vmin cm mm q in pt pc px 角度 deg grad rad turn 时间 s ms 频率 Hz kHz 布局 fr gr 分辨率 dpi dpcm dppx 颜色 Color Name HEX RGB RGBA HSL HSLA transparent currentColor 文本 inherit initial unset 函数 calc() toggle() 生成内容 counter() counters() attr() 图像 image() image-set() linear-gradient() radial-gradient() repeating-linear-gradient() repeating-radial-gradient() 数字 附录 颜色关键字 媒体类型 CSS Hack 条件Hack 属性级Hack 选择符级Hack 问题和经验 Bugs和解决方案 技巧和经验 其它经验
characters

语法:

flex:none | <' flex-grow '> <' flex-shrink >'? || <' flex-basis '>

默认值看各分拆属性

适用于:flex子项

继承性:无

动画性:否

计算值:看各分拆属性

取值:

  • none:none关键字的计算值为: 0 0 auto

  • <' flex-grow '>:用来指定扩展比率,即剩余空间是正值时此「flex子项」相对于「flex容器」里其他「flex子项」能分配到空间比例。

在「flex」属性中该值如果被省略则默认为「1」

  • <' flex-shrink '>:用来指定收缩比率,即剩余空间是负值时此「flex子项」相对于「flex容器」里其他「flex子项」能收缩的空间比例。

在收缩的时候收缩比率会以伸缩基准值加权
在「flex」属性中该值如果被省略则默认为「1」

  • <' flex-basis '>:用来指定伸缩基准值,即在根据伸缩比率计算出剩余空间的分布之前,「flex子项」长度的起始数值。

在「flex」属性中该值如果被省略则默认为「0%」

在「flex」属性中该值如果被指定为「auto」,则伸缩基准值的计算值是自身的 <' width '> 设置,如果自身的宽度没有定义,则长度取决于内容。

说明:

复合属性。设置或检索弹性盒模型对象的子元素如何分配空间。
  • 如果缩写「flex: 1」, 则其计算值为「1 1 0%」

  • 如果缩写「flex: auto」, 则其计算值为「1 1 auto」

  • 如果「flex: none」, 则其计算值为「0 0 auto」

  • 如果「flex: 0 auto」或者「flex: initial」, 则其计算值为「0 1 auto」,即「flex」初始值

  • 示例:如下情况每个元素的计算宽是多少

    Code:

    • a
    • b
    • c
    .flex{display:flex;width:800px;margin:0;padding:0;list-style:none;} .flex :nth-child(1){flex:1 1 300px;} .flex :nth-child(2){flex:2 2 200px;} .flex :nth-child(3){flex:3 3 400px;}

    本例定义了父容器宽(即主轴宽)为800px,由于子元素设置了伸缩基准值flex-basis,相加300+200+400=900,那么子元素将会溢出900-800=100px;
    由于同时设置了收缩因子,所以加权综合可得300*1+200*2+400*3=1900px;
    于是我们可以计算a,b,c将被移除的溢出量是多少:
    a被移除溢出量:(300*1/1900)*100,即约等于16px
    b被移除溢出量:(200*2/1900)*100,即约等于21px
    c被移除溢出量:(400*3/1900)*100,即约等于63px
    最后a,b,c的实际宽度分别为:300-16=284px, 200-21=179px, 400-63=337px

    • a

    • b

    • c

  • 仍然是上面这个例子,不过将容器的宽度改成了1500px

    Code:

    • a
    • b
    • c
    .flex{display:flex;width:1500px;margin:0;padding:0;list-style:none;} .flex :nth-child(1){flex:1 1 300px;} .flex :nth-child(2){flex:2 2 200px;} .flex :nth-child(3){flex:3 3 400px;}
    本例定义了父容器宽(即主轴宽)为1500px,由于子元素设置了伸缩基准值flex-basis,相加300+200+400=900,那么容器将有1500-900=600px的剩余宽度;
    于是我们可以计算a,b,c将被扩展量是多少:
    a的扩展量:(1/(1+2+3))*600,即约等于100px
    b的扩展量:(2/(1+2+3))*600,即约等于200px
    c的扩展量:(3/(1+2+3))*600,即约等于300px
    最后a,b,c的实际宽度分别为:300+100=400px, 200+200=400px, 400+300=700px
    从本例能看出:

    当「flex-basis」在「flex」属性中不为0时(包括值为auto,此时伸缩基准值等于自身内容宽度),「flex子项」将分配容器的剩余空间(剩余空间即等于容器宽度减去各项的伸缩基准值)

    当「flex-basis」在「flex」属性中等于0时,「flex子项」将分配容器的所有空间(因为各项的伸缩基准值相加等于0,剩余空间等于容器宽度减去各项的伸缩基准值,即减0,最后剩余空间值等于容器宽度),所以可以借助此特性,给各子项定义「flex: n」来进行按比例均分容器总宽度

    • a

    • b

    • c

  • 对应的脚本特性为flex

兼容性:

Values IE Firefox Chrome Safari Opera iOS Safari Android Browser Android Chrome
Basic Support 6.0-10.0 2.0-21.0 4.0-20.0 6.0 15.0+-webkit- 6.0-6.1 2.1-4.3 18.0-19.0
11.0+ 22.0+ 21.0+-webkit- 6.1+-webkit- 17.0+ 7.0+-webkit- 4.4+ 20.0+-webkit-
29.0+ 9.0+ 9.0+ 28.0+

示例:

实例

    align-content_CSS参考手册_web前端开发参考手册系列   

flex示例:

  • flex:1;
  • flex:1;
  • flex:1;
  • flex:1 0 100px;
  • flex:2 0 100px;
  • flex:3 0 100px;
  • flex:1 1 400px;
  • flex:1 2 400px;
  • flex:1 2 400px;

运行实例 »

点击 "运行实例" 按钮查看在线实例


Previous article: Next article: