注意:如果元素不是弹性盒模型对象的子元素,则 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-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属性详解相关推荐

  1. 弹性布局flex:1详解

    在最初学习flex布局的时候,局限于使用flex的属性来布局,但是实际的详细刨铣却很少,最近在一些大厂的面试中被闻到一些细节,感觉自己学的有些粗糙,这里好好整理下 首先明确一点是, flex 是 fl ...

  2. 弹性盒子(Flex Box)详解

    1 . 弹性盒子的特点 弹性盒子是 CSS3 的一种新的布局模式. CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当 ...

  3. Css 弹性布局(Flex)详细介绍(Flex 属性详解、场景分析)

    目录​​​​​​​ 前言 Flex 布局是什么? Flex 简介 Flex 容器属性 Flex 基本使用 场景一 flex-direction 场景二 justify-content align-it ...

  4. CSS弹性布局 Flex属性

    flex是Flexible Box的缩写,就是弹性盒子布局的意思 通过flex我们可以解决元素居中问题,自动弹性伸缩,适配不同大小的屏幕和移动端. Flex布局简介 序号 简记 术语 1 二成员 容器 ...

  5. 弹性盒子(flexbox)布局属性详解

    弹性盒子布局属性详解 1 弹性盒子概述 2 基本概念 3 常用属性 3.1 布局方向flex-direction 3.2 环绕效果flex-wrap 3.3 水平对齐方式justify-content ...

  6. CSS 浮动布局放弃float,拥抱flex(详解)

    CSS 浮动布局放弃float,拥抱flex(详解) 文章目录 CSS 浮动布局放弃float,拥抱flex(详解) 说明 Flex布局 容器和项目 容器属性 flex-direction属性 fle ...

  7. php中的文字排版问题,CSS布局中常用的文字排版相关属性详解

    本篇文章给大家带来的内容是关于CSS布局中常用的文字排版相关属性详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. CSS布局中常用的文字排版相关属性详解 一.设定文字字体.颜色.大 ...

  8. display属性详解及用法

    display属性详解 1 block.inline.inline-block 2 flow-root 3 table.inline-table 4 flex.inline-flex 5 none 6 ...

  9. python布局管理_Python基础=== Tkinter Grid布局管理器详解

    本文转自:https://www.cnblogs.com/ruo-li-suo-yi/p/7425307.html          @ 箬笠蓑衣 Grid(网格)布局管理器会将控件放置到一个二维的表 ...

最新文章

  1. spring简单总结part2
  2. SQL SERVER数据库修改是否区分大小写
  3. Matlab注释语句
  4. python 语言教程(3)变量
  5. Linux apt-get install无法定位问题
  6. numpy.ceil() 和 numpy.floor()--向上取整和向下取整
  7. 一文讲清楚FusionInsight MRS CDL如何使用
  8. python取列表中位数_Python如何获取列表(List)的中位数
  9. 又要头秃?2020 年七大 AI 编程语言大盘点
  10. Eclipse 相同变量背景高亮显示设置(Occurrences)
  11. phantom.js - HTML To PDF
  12. 如何让ie窗口显示到最前面
  13. 【解题报告】2021牛客寒假算法基础集训营4
  14. 带你从Vue入门到进阶
  15. 算法:CLH锁的原理及实现
  16. torch.contiguous()函数用法
  17. 智慧灯杆迈向标准化,5G智能灯杆网关加速“数字覆城”
  18. Centos7安装部署BookStack
  19. oracle数据库常用sql整理
  20. 【动手学深度学习v2李沐】学习笔记07:权重衰退、正则化

热门文章

  1. 求几何形状的面积之和
  2. node.js学习笔记(5)——excel-export模块导出excel表
  3. 3.1 使用STC89C52控制MC20拨打电话
  4. 酷睿i7 10510u参数 i710510u相当于台式机什么水平 i710510u玩游戏怎么样
  5. python对列表切片操作_Python列表切片操作实例总结
  6. 怎样辨别自己的手机是水货或行货?试试这个
  7. java date转filetime,Java:格式化FileTime
  8. Ubuntu切换到root用户无法找到环境变量PATH的问题
  9. HDU-1730 Northcott Game
  10. Oracle服务连接不上 ORA-12514 ORA-01034 ORA-27012