可以少去理解一些不必要的概念,而多去思考为什么会有这样的东西,它解决了什么问题,或者它的运行机制是什么?

1. 弹性盒子布局概念

Flex 是 Flexible Box 的缩写,意为“弹性布局”,用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为 Flex 布局。比如:

.box{
display:flex;
}

容器、项目的理解?

采用 Flex 布局的元素,称为 Flex 容器(container),称为“容器”。它的所有子元素自动成为容器成员,称为 Flex 项目(item)。

下面借用别人一张图展示:

容器两根轴线:主轴、交叉轴:

水平的主轴(main axis):主轴的开始位置(与边框的交叉点)叫做 main start,结束位置叫做 main end;

垂直的交叉轴(cross axis):交叉轴的开始位置叫做 cross start,结束位置叫做cross end。

项目默认沿主轴排列。单个项目占据的主轴空间叫做 main size,占据的交叉轴空间叫做 cross size。

2. 容器的属性

详细记录各项属性之前,先看下基础样式代码及效果如下所示:

<div class="box">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>
.box{
width: 500px;
height:200px;
padding: 10px;
border: 2px solid red;
display: flex;
}
.item {
width: 50px;
height: 50px;
color: white;
font-size: 1.4em;
text-align: center;
line-height: 50px;
margin: 1px 1px;
background: #1f1d99;
}

默认的布局方式,由于子元素是 div 以及自身属于块级元素,所以独立占据一行,下面我们给外层盒子添加 display:flex看看效果:

2.1 flex-direction

设置主轴方向,即项目排列方式,默认 row。它有如下4个值:row、row-reverse column、column-reverse。

  • row(默认值):主轴为水平方向,起点在左端。
  • row-reverse:主轴为水平方向,起点在右端。
  • column:主轴为垂直方向,起点在上沿。
  • column-reverse:主轴为垂直方向,起点在下沿。

2.2 flex-wrap

默认情况下,项目都排在一条线(又称”轴线”)上。flex-wrap 属性定义,如果一条轴线排不下,如何换行,它有如下3个值:nowrap(默认)、wrap 、wrap-reverse

  • nowrap(默认):不换行。
  • wrap:换行,第一行在上方。
  • wrap-reverse:换行,第一行在下方。

2.3 flex-flow

flex-flow 是 flex-direction 属性和 flex-wrap 属性的简写形式,默认值为 row 、nowrap。

2.4 justify-content

设置项目在主轴上都对其方式,它有如下5个值:center、flex-start、flex-end、space-between、space-around。具体对齐方式与轴的方向有关,这里以主轴为从左到右为例:

  • flex-start(默认值):左对齐。
  • flex-end:右对齐。
  • center:居中。
  • space-between:两端对齐,项目之间的间隔都相等。
  • space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

2.5 align-items

align-items 属性定义项目在交叉轴上如何对齐,它有如下5个值:center、flex-start、flex-end、stretch(默认)、baseline 。具体的对齐方式与交叉轴的方向有关,这里以交叉轴从上到下为例:

  • flex-start:交叉轴的起点对齐。
  • flex-end:交叉轴的终点对齐。
  • center:交叉轴的中点对齐。
  • stretch(默认):如果项目未设置高度或设为auto,将占满整个容器的高度。
  • baseline: 项目的第一行文字的基线对齐。

2.6 align-content

align-content 属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性与 align-items 属性效果相同。它有如下6个值:center、flex-start、flex-end、space-between、space-around、stretch。

  • flex-start:与交叉轴的起点对齐。
  • flex-end:与交叉轴的终点对齐。
  • center:与交叉轴的中点对齐。
  • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布
  • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
  • stretch(默认值):轴线占满整个交叉轴。

参考:

https://baijiahao.baidu.com/s?id=1711671351238047881&wfr=spider&for=pc

3. 项目的属性

3.1 order

order 属性定义项目的排列顺序。数值越小,排列越靠前,默认为 0。

3.2 flex-grow

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

3.3 flex-shrink

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

3.4 flex-basis

flex-basis 在 Flex 布局中,一个 Flex 子项的宽度是由元素自身尺寸,flex-basis 设置的基础尺寸,以及外部填充(flex-grow)或收缩(flex-shrink)规则3者共同决定的。

参考:https://blog.csdn.net/qq_41635167/article/details/104190865

3.5 flex

flex 属性是 flex-grow、flex-shrink、和 flex-basis 的简写,默认值为 0 1 auto。后两个属性可选。

3.6 align-self

align-self 属性允许单个项目有与其他项目不一样的对齐方式,可覆盖 align-items 属性。默认值为 auto,表示继承父元素的 align-items 属性,如果没有父元素,则等同于 stretch。

参考:https://zhuanlan.zhihu.com/p/440852043

Flex 弹性盒子布局的更多相关文章

  1. flex弹性盒子布局

    一.在需要使用弹性盒子的容器上添加属性:display:flex 或者 display:inline-flex; 二.在父容器上添加flex-direction设置子元素主轴方向: 不写默认值是X轴从 ...

  2. css3 flex弹性盒子布局梳理,打通任督二脉

    挺早就接触了css的flex布局,深入使用也就是在近期移动端开发.老来多健忘,只能自己梳理一下知识点,当做温故知新吧. ,请原谅小白的才疏学浅,写的不到位的地方请指正. flex属性用于设置或检索弹性 ...

  3. Flex 弹性盒子布局使用教程

    本文转载于<https://blog.csdn.net/lyznice/article/details/53981062>

  4. flex属性值----弹性盒子布局

    里面的属性都 是在有display: flex的情况 下才生效. 兼容性写法:   display: -webkit-box; /*老版本语法: Safari, iOS, Android browse ...

  5. CSS3总结五:弹性盒子(flex)、弹性盒子布局

    弹性盒子容器的属性与应用 display:flex/inline-flex flex-direction flex-wrap justify-content align-items align-con ...

  6. css横向 弹性盒子布局的一些属性

    <head> <meta charset="utf-8"> <meta name="viewport" content=" ...

  7. 网页布局——Flex弹性框布局

    布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现. 需要安卓4.4及以上版本可以使用 ...

  8. CSS:CSS弹性盒子布局 Flexible Box

    一.简介 flexbox:全称Flexible Box, 弹性盒子布局.可以简单实现各种伸缩性的设计,它是由伸缩容器和伸缩项目组成.任何一个元素都可以指定为flexbox布局.这种新的布局方案在200 ...

  9. flex弹性盒子中flex-grow与flex的区别

    ​大家在使用flex布局的时候很多情况下都会用到flex-grow这个属性, flex-grow 属性用于设置父元素剩余空间的瓜分比例, flex 属性是 flex-grow.flex-shrink  ...

  10. Flex box 弹性盒子布局

    display: -webkit-flex 标识使用弹性布局 flex: num  占容器的比例   Flex等比划分 导航1 : Flex :1;  导航2  Flex: 2;     ————&g ...

随机推荐

  1. 【转帖】linux环境下使用route指令设置多个网络连接的优先级(通过修改路由表的默认网关条目)

    1. 背景 在生活中的会经常遇见一台PC同时连接多个网络的场景.最典型的,一台笔记本可以同时连接一个无线网(手机热点)和一个有线网(以太网).linux和window操作系统在默认情况都会使用最早连接 ...

  2. [转帖]ARM64体系结构编程与实践:基础知识

    ARM64体系结构编程与实践:基础知识 原创 异步社区 2022-03-30 12:44:16 著作权 文章标签 寄存器 体系结构 v8 ARM64体系结构 ARM 文章分类 物联网 阅读数1570 ...

  3. [转贴]更改 CMD 编码(解决 VSJupyter 乱码)

    https://zhuanlan.zhihu.com/p/521376336 以 将编码更改为 UTF-8 为例 1. 临时修改编码 运行 CMD 输入 chcp 查看当前的代码页 (代码页和国家/地 ...

  4. 分布式日志追踪ID实战 | 京东物流技术团队

    本文通过介绍分布式应用下各个场景的全局日志ID透传思路,以及介绍分布式日志追踪ID简单实现原理和实战效果,从而达到通过提高日志查询排查问题的效率. 背景 开发排查系统问题用得最多的手段就是查看系统日志 ...

  5. 插件时间格式处理moment如何使用

    第1步下载插件 cnpm i moment -S 第2步 在main.js中去使用 在main.js中 注册全局过滤器 fmtdata是等会你用的 可以自定义 fmtdata直接可以调用.是一个过滤器 ...

  6. 🛠 开源即时通讯(IM)项目OpenIM源码部署指南

    OpenIM的部署涉及多个组件,并支持多种方式,包括源码.Docker和Kubernetes等.这要求在确保不同部署方式之间的兼容性同时,还需有效管理各版本之间的差异.确实,这些都是复杂的问题,涉及到 ...

  7. SqlSugar多库/多租户

    1. 多库和多租户 如果是接口ISugarClient先看一下标题6,看完在看这儿 1.1 固定多数据库模式 数据库数量是固定的一般在声明的全部加上 //通过ConfigId进行数据库区分 var d ...

  8. 基于50W携程出行攻略构建事件图谱(含码源):交通工具子图谱、订酒店吃饭事件图谱等

    基于50W携程出行攻略构建事件图谱(含码源):交通工具子图谱.订酒店吃饭事件图谱等 项目构成 本项目由两个部分的组成,具体包括语料的获取以及基于语料的事件挖掘两个部分,具体项目目录包括: news_s ...

  9. NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等

    NLP专栏简介:数据增强.智能标注.意图识别算法|多分类算法.文本信息抽取.多模态信息抽取.可解释性分析.性能调优.模型压缩算法等 专栏链接:NLP领域知识+项目+码源+方案设计 订阅本专栏你能获得什 ...

  10. 10.5 认识XEDParse汇编引擎

    XEDParse 是一款开源的x86指令编码库,该库用于将MASM语法的汇编指令级转换为对等的机器码,并以XED格式输出,目前该库支持x86.x64平台下的汇编编码,XEDParse的特点是高效.准确 ...