阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

    教程列表

    数据库
    抓包专区
    测试专区

    CSS3 flex-shrink

    CSS flex-shrink

    A, B, C 设置 flex-shrink:1, D , E 设置为 flex-shrink:2:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>阿西河教程(axihe.com)</title>
    <style>
    #content {
      display: flex;
      width: 500px;
    }
     
    #content div {
      flex-basis: 120px;
      border: 3px solid rgba(0,0,0,.2);
    }
     
    .box { 
      flex-shrink: 1;
    }
     
    .box1 { 
      flex-shrink: 2; 
    }
    </style>
    </head>
    <body>
     
    <p>div 总宽度为 500px, flex-basic 为 120px。</p>
    <p>A, B, C 设置 flex-shrink:1。 D , E 设置为 flex-shrink:2</p>
    <p>D , E 宽度与 A, B, C 不同</p>
    <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>
    </body>
    </html>
    

    实例解析:

    flex-shrink的默认值为1,如果没有显示定义该属性,将会自动按照默认值1在所有因子相加之后计算比率来进行空间收缩。

    本例中A、B、C 显式定义了 flex-shrink 为 1,D、E 定义了 flex-shrink 为 2,所以计算出来总共将剩余空间分成了 7 份,其中 A、B、C 占 1 份,D、E 占 2 份,即1:1:1:2:2

    我们可以看到父容器定义为 500px,子项被定义为 120px,子项相加之后即为 600 px,超出父容器 100px。那么超出的 100px 需要被 A、B、C、D、E 消化 通过收缩因子,所以加权综合可得 100*1+100*1+100*1+100*2+100*2=700px。

    于是我们可以计算 A、B、C、D、E 将被移除的溢出量是多少:

    A 被移除溢出量:(100*1/700)*100,即约等于14px
    B 被移除溢出量:(100*1/700)*100,即约等于14px
    C 被移除溢出量:(100*1/700)*100,即约等于14px
    D 被移除溢出量:(100*2/700)*100,即约等于28px
    E 被移除溢出量:(100*2/700)*100,即约等于28px
    

    最后A、B、C、D、E的实际宽度分别为:

    120-14=106px, 120-14=106px, 120-14=106px, 120-28=92px,120-28=92px,
    

    此外,这个宽度是包含边框的。


    浏览器支持

    表格中的数字表示支持该属性的第一个浏览器的版本号。

    紧跟在 -webkit-, -ms- 或 -moz- 后的数字为支持该前缀属性的第一个版本。

    属性 IE Chrome FF safari Open
    flex-shrink 29.0
    21.0 -webkit-
    11.0
    10.0 -ms-
    28.0
    18.0 -moz-
    9.0
    6.1 -webkit-
    17.0

    定义和用法

    flex-shrink 属性指定了 flex 元素的收缩规则。flex 元素仅在默认宽度之和大于容器的时候才会发生收缩,其收缩的大小是依据 flex-shrink 的值。

    **注意:**如果元素不是弹性盒对象的元素,则 flex-shrink 属性不起作用。

    默认值: 1
    继承:
    可动画化: 是。请参阅 可动画化(animatable)。
    版本: CSS3
    JavaScript 语法: object.style.flexShrink=“5”

    CSS 语法

    flex-shrink: number|initial|inherit;
    

    属性值

    描述
    number 一个数字,规定项目将相对于其他灵活的项目进行收缩的量。默认值是 1。
    initial 设置该属性为它的默认值。请参阅 initial。
    inherit 从父元素继承该属性。请参阅 inherit。

    相关文章

    CSS 参考手册:flex

    CSS 参考手册:flex-basis

    CSS 参考手册:flex-direction

    CSS 参考手册:flex-flow

    CSS 参考手册:flex-grow

    CSS 参考手册:flex-shrink

    CSS 参考手册:flex-wrap

    卖前端学习教程

    只需几十元,就能买到培训班的内部教程!开启高薪之路!

    零基础小白阿里P7的教程都有!

    同时长期收购所有培训班的前端教程

    目录
    目录