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;

    小伙伴你算出来了嘛?

  • 相关阅读:
    Java Properties 类读配置文件保持顺序
    mysql在增加列前进行判断该列是否存在
    java中用jdom创建xml文档/将数据写入XML中
    JavaFX 简介
    ActiveMQ详细入门使用教程
    Jquery Pagination分页插件使用
    Jquery选择器总结
    自己4月份面试的一些总结
    Java面试题全集(下)转载
    Java面试题全集(上)转载
  • 原文地址:https://www.cnblogs.com/0314dxj/p/14705398.html
Copyright © 2011-2022 走看看