弹性布局flex属性详解

弹性布局flex属性详解注意 如果元素不是弹性盒模型对象的子元素 则 flex 属性不起作用 flex 属性用于设置或检索弹性盒模型对象的子元素如何分配空间 flex 属性是 和属性的简写属性

注意:如果元素不是弹性盒模型对象的子元素,则 flex 属性不起作用。

flex 属性用于设置或检索弹性盒模型对象的子元素如何分配空间。

flex 属性是 flex-growflex-shrinkflex-basis 属性的简写属性。

flex: auto | initial | none | inherit | [ flex-grow ] || [ flex-shrink ] || [ flex-basis ] 
  • auto: 计算值为 1 1 auto
  • initial: 计算值为 0 1 auto
  • none:计算值为 0 0 auto
  • inherit:从父元素继承
  • [ flex-grow ]:定义弹性盒子元素的扩展比率。
  • [ flex-shrink ]:定义弹性盒子元素的收缩比率。
  • [ flex-basis ]:定义弹性盒子元素的默认基准值。

flex-grow:用于设置或检索弹性盒子的扩展比率

让第二个元素的宽度为其他元素的三倍:

<div id="main"> <div style="background-color:coral;"> 
     div> <div style="background-color:lightblue;"> 
      div> <div style="background-color:khaki;"> 
       div> <div style="background-color:pink;"> 
        div> <div style="background-color:lightgrey;"> 
         div>  
          div> 
#main { 
    width: 350px; height: 100px; border: 1px solid #c3c3c3; display: flex; } #main div:nth-of-type(1) { 
   flex-grow: 1;} #main div:nth-of-type(2) { 
   flex-grow: 3;} #main div:nth-of-type(3) { 
   flex-grow: 1;} #main div:nth-of-type(4) { 
   flex-grow: 1;} #main div:nth-of-type(5) { 
   flex-grow: 1;} 

flex-grow

flex-shrink:指定了 flex 元素的收缩规则。

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

<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> 
#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; } 

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

flex-basis:用于设置或检索弹性盒伸缩基准值

设置第二个弹性盒元素的初始长度为 80 像素:

<div id="main"> <div style="background-color:coral;"> 
     div> <div style="background-color:lightblue;"> 
      div> <div style="background-color:khaki;"> 
       div> <div style="background-color:pink;"> 
        div> <div style="background-color:lightgrey;"> 
         div>  
          div> 
#main { 
    width: 350px; height: 100px; border: 1px solid #c3c3c3; display: -webkit-flex; /* Safari */ display: flex; } #main div { 
    -webkit-flex-grow: 0; /* Safari 6.1+ */ -webkit-flex-shrink: 0; /* Safari 6.1+ */ -webkit-flex-basis: 40px; /* Safari 6.1+ */ flex-grow: 0; flex-shrink: 0; flex-basis: 40px; } #main div:nth-of-type(2) { 
    -webkit-flex-basis: 80px; /* Safari 6.1+ */ flex-basis: 80px; } 

flex-basis

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215123.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午2:39
下一篇 2026年3月18日 下午2:39


相关推荐

  • 情感词典构建_晦涩情感词典

    情感词典构建_晦涩情感词典看到一篇文章写的很清楚简洁,直接转了。————————————————————————————————————————某主席说,“没有情感词典的“使用该情感词典进行情感分析”都是耍流氓。”某帝说,“要有情感词典。”

    2022年8月23日
    9
  • intellij 2021.4 激活码_通用破解码

    intellij 2021.4 激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    220
  • Python基础教程(crossin全60课)[通俗易懂]

    Python基础教程(crossin全60课)[通俗易懂]【Python第第11 课】安装………………………………………………………………………………………………….4【Python第第22 课】print………………………….

    2022年10月12日
    5
  • 二传感器尺寸「建议收藏」

    二传感器尺寸「建议收藏」说到传感器的尺寸,其实是说感光器件的面积大小,这里就包括了CCD和CMOS。感光器件的面积越大,CCD/CMOS面积越大,捕捉的光子越多,感光性能越好,信噪比越高。下面是家用小DC图像传感器尺寸换算为公制的大小(单位为毫米):2/3英寸的画幅面积为(8.8×6.6mm)1/1.8英寸的画幅面积为(7.178×5.319mm)1/2英寸的画幅面积为(6.4×4.8mm)1/2.7英寸的画幅面…

    2022年6月12日
    50
  • IPV6地址格式解析

    IPV6地址格式解析一 IPV6 地址格式 1 1 概述格式 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 冒号分 16 进制 每 4 个 16 进制数为一组 每一组可以表示 16 个二进数所以一共有 128 个二进制数 16 进制数 0 9 A F 字母大小不敏感 最终设备显示为大写每段中前面为 0 是允许的 IPV4 中不可以 00XX 00ab XXXX XXXX XXXX XXXX XXXX XXXX1 2 地址的缩写方法 如果一个段全为 0 可以缩写为一个 000AF 0000 0000 0000 X

    2026年3月16日
    3
  • java if语句例子_实例学习if语句用法

    java if语句例子_实例学习if语句用法我们前面学习了 java 中的 for 循环和 dowhile 语法及原理的相关内容 同样是 java 三大控制语句之一的选择语句 在实际的项目开发中使用频率也非常高 今天我们来学习选择语句中 if 语句用法和相关内容 都是属于 java 中的基本知识 java 零基础的朋友们可以一起来学习下面的内容 If 语句属于 java 中的选择语句 选择语句又称为分支语句 if 语句用法是比较简单的 它通过对给定的条件进行判断 从而决定执

    2026年3月17日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号