zoukankan      html  css  js  c++  java
  • 【面试题flex】关于弹性盒子中 flex: 0 1 auto 的一系列问题

    一 弹性盒子中 flex: 0 1 auto 表示什么意思

    三个参数分别对应的是 flex-grow, flex-shrinkflex-basis,默认值为 0 1 auto。

    1.flex-grow 属性定义项目的放大比例,默认为 0,即如果存在剩余空间,也不放大。

    2.flex-shrink 属性定义了项目的缩小比例,默认为 1,即如果空间不足,该项目将缩小。

    3.flex-basis 属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。

    二 计算出下列盒子各站多少宽度?

    #box {display:flex;400px;height:100px;}
    #box li:nth-child(1){-webkit-flex:1 1 400px;flex:1 1 400px;} #box li:nth-child(2){-webkit-flex:1 2 400px;flex:1 2 400px;} #box li:nth-child(3){-webkit-flex:1 2 400px;flex:1 2 400px;} <ul id="box" class="box"> <li>flex:1 1 400px;</li> <li>flex:1 2 400px;</li> <li>flex:1 2 400px;</li> </ul>

    一看过去懵了,这个是怎么计算的,以前没遇到过,凉了凉了...

    下面我就来看一下这个题目,及详细解释:

    上面定义了父容器(即主轴宽为400),由于子元素设置了flex,
    即 400+400+400=1200px, 那么子元素将会溢出1200-400=800px;
    由于同时设置了收缩因子,所以加权综合可以得出:400*1+400*2+400*2=2000px;
    于是可以得出三个li标签被溢出量是多少:
    第一个li:(400*1/2000)*800 = 160px;
    第二个li: (400*2/2000)*800 = 320px;
    第三个li: (400*2/2000)*800 = 320px;
    所以可以三个li标签实际宽度为:400-160=240px; 400-320=80px; 400-320px=80px;

    经过上面详细的解释,想必各位都清楚了如何计算flex中子元素的宽度,下面来看下一题,顺便练练手!

    #box {display:flex;400px;height:100px;}
    #box li:nth-child(1){-webkit-flex:1 1 400px;flex:1 0 100px;}
    #box li:nth-child(2){-webkit-flex:1 2 400px;flex:2 0 100px;}
    #box li:nth-child(3){-webkit-flex:1 2 400px;flex:3 0 100px;}
    
    <ul id="box" class="box">
        <li>flex:1 0 100px;</li>
        <li>flex:2 0 100px;</li>
        <li>flex:3 0 100px;</li>
    </ul>

    你能算出它们实际占多少宽度嘛!

    解释:

    上面定义了父容器(即主轴宽为400),由于子元素设置了flex,
    即 100+100+100=300px, 那么超出情况则400-300=100px;因为设置了flex-grow,则:
    100/(1+2+3)=16.67; 于是可以得出三个li标签最后的宽度为: 第一个li: 100+1*16.67=116.67px;
    第二个li: 100+2*16.67=133.34px; 第三个li: 100+3*16367=150px;

    小伙伴你算出来了嘛?

  • 相关阅读:
    Docker学习-安装,配置,运行
    Docker学习-从无知到有知的学习过程
    学习记录-java基础部分(一)
    对get post等http请求方式的理解
    Mac和window实现双向数据传输
    git pull时 git cannot lock ref XXXXXX (unable to update local ref)错误解决方案
    三年内我的计划和方向
    关于云服务器和云部署的实操(新手级别入门)
    win7蓝屏死机0x0000003B错误蓝屏故障解决
    JAVA代码:生成一个集合,自定义大小,100以内的随机整数
  • 原文地址:https://www.cnblogs.com/0314dxj/p/14705398.html
Copyright © 2011-2022 走看看