前端基础知识库-深入理解flex布局

简介: 随着电子产品的快速迭代,传统的前端布局越来越难以是配多端的屏幕显示,无论是table布局还是float布局在移动端适配上都有着很大的局限性。09年,W3C提出了一种新的方案—-Flex布局,可以简便、完整、响应式地实现各种页面布局,flex的应用可以极大程度上补充传统布局的不足之处。

前言


随着电子产品的快速迭代,传统的前端布局越来越难以是配多端的屏幕显示,无论是table布局还是float布局在移动端适配上都有着很大的局限性。09年,W3C提出了一种新的方案—-Flex布局,可以简便、完整、响应式地实现各种页面布局,flex的应用可以极大程度上补充传统布局的不足之处。

flex布局是什么

Flex是flex box的缩写意为弹性布局,用来为盒状模型提供最大的灵活性。 特点:采用flex布局的元素成为flex容器,他的所有子元素自动成为容器的成员。 借用腾讯云社区的一张图

由图中我们可以看出flex布局其实是将我们的元素看成一个一左上角为原点的直角坐标系

如何使用flex布局

  • 主轴(flex布局以主轴和交叉轴为主的。理解他们是掌握flex布局的基础。)主轴由flex-direction定义他可以去四个值:row row-reverse column column-reverse
  1. row 或者 row-reverse,你的主轴将沿着 inline 方向延伸。
  2. column 或者 column-reverse,你的主轴会沿着上下方向延伸,及block方式。
  3. 交叉轴垂直于主轴,所以如果你的flex-direction (主轴) 设成了 row row-reverse则交叉轴为垂直方向
  4. 如果flex-direction (主轴) 设成了 column column-reverse则交叉轴为水平方向。
  • 按需固定元素位置(容器内元素属性设置)
  1. justify-content - 控制主轴上所有 flex 项目的对齐(相比margin auto要方便的多)。
  2. align-items - 控制交叉轴上所有 flex 项目的对齐(有了这个属性不用再考虑父元素有多高top是多少了)。
  3. align-self - 控制交叉轴上的单个 flex 项目的对齐。
  4. align-content - 控制“多条主轴”的 flex 项目在交叉轴的对齐(要使得 align-content 生效,flex 容器的height要大于 flex 项目的可视内容。然后它会将所有的 flex 项目打包成一块之后再对齐剩下的空间)。
  • 应对页面弹性伸缩(容器内元素属性设置)
  1. flex-shrink/grow: 比例缩小/放大
    flex-grow:flex-grow属性默认等于0,即使用本来的宽度,不拉伸。等于1时,就表示该项目宽度拉伸,占据当前行的所有剩余宽度。
    flex-shrink:flex-shrink的默认值为1,当父元素的宽度小于所有子元素的宽度的和时,子元素的宽度会减小。值越大,减小的越厉害。如果值为0,表示不减小。
  2. flex-basis(初始值:auto):指定了item在flex布局中的初始大小(前提是不改变盒模型的box-sizing),所谓的初始尺寸就是元素在flex-grow和flex-shrink生效前的尺寸。另外其设置的优先级高于width。
  • flex 属性总结(这里只做简要说明,详细请查看mdn文档)
  1. 容器属性 flex-flow:属性是flex-direction属性和flex-wrap属性的简写形式
    flex-direction:属性决定主轴的方向
    flex-wrap:属性决定轴线排不下,如何换行
    justify-content:属性决定项目在主轴上的对齐方式
    align-items:属性决定项目在交叉轴上的对齐方式
    align-content:属性定义了多根轴线的对齐方式(一条轴线时不起作用)
  2. 项目的属性
    order:定义项目的排列项目
    flex-grow:定义项目的放大
    flex-shrink:定义项目的缩小
    flex-basis:定义项目的基本大小
    flex:属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。
    align-self:单个项目定义的属性,可覆盖align-items属性。

为什么要使用flex布局

  1. flex布局的思想简单明了初学者很容易上手
  2. 他可以很好的适应多端布局(响应各种页面)
  3. 为盒状模型提供最大的灵活性

总结


随着当前电子产品的快速发展,适应各种设备的显示已成为我们前端开发者必备的技能。5-10年前我们只用考虑几种的设备适配,到如今的十几种细分来说甚至几十种,这就需要我们掌握一种可以轻松实现页面响应式布局的技能,而flex便可以满足我们当前的需求。

注意


Internet Explorer 10: 使用-ms-前缀;

UC浏览器: 使用-webkit-前缀。

现在,IE11 已经支持display: flex,但是在使用的时候会有一些bug。


相关文章
|
3月前
|
开发者 容器
flex 布局属性在实际项目中的应用场景有哪些?
flex 布局属性在实际项目中的应用场景有哪些?
|
22天前
|
容器
Bootstrap5 Flex(弹性)布局4
排序:.order 类可设置弹性子元素的排序,范围从 .order-1 至 .order-12,数字越小优先级越高。外边距:.ms-auto 和 .me-auto 分别用于设置子元素的右侧和左侧外边距为 auto。包裹:.flex-nowrap(默认)、.flex-wrap 和 .flex-wrap-reverse 用于控制弹性容器中的子元素是否换行及换行方向。
|
2月前
|
前端开发 UED 容器
使用 Flex 布局实现垂直居中效果
【10月更文挑战第7天】
241 57
|
21天前
|
容器
Bootstrap5 Flex(弹性)布局6
使用 `.align-self-*` 类可控制指定子元素的对齐方式,包括 `.align-self-start`, `.align-self-end`, `.align-self-center`, `.align-self-baseline`, 和 `.align-self-stretch`。示例代码展示了如何在一个弹性布局中应用这些类,以实现不同设备上的响应式设计。
|
21天前
Bootstrap5 Flex(弹性)布局5
使用 .align-content-* 控制多行子元素在垂直方向上的堆叠方式,如 .align-content-start、.align-content-center 等。对于单行子元素,使用 .align-items-* 控制对齐,例如 .align-items-start、.align-items-center 等。示例代码展示了不同对齐效果的应用。
|
22天前
Bootstrap5 Flex(弹性)布局2
介绍Flex布局的水平和垂直方向控制。`.flex-row`使子元素水平排列,默认左对齐;`.flex-row-reverse`则右对齐。`.flex-column`让子元素垂直排列;`.flex-column-reverse`则反向排列。示例展示了不同类的效果,通过改变类名实现布局调整。
|
22天前
Bootstrap5 Flex(弹性)布局3
`.justify-content-*` 类用于调整弹性子元素的对齐方式,支持 start、end、center、between、around 等值。`.flex-fill` 类使所有子元素等宽,而 `.flex-grow-1` 则让指定子元素占据剩余空间。这些类在布局设计中非常实用。
|
1月前
|
前端开发 UED 容器
在 CSS 中使用 Flex 布局实现页面自适应时需要注意什么?
【10月更文挑战第22天】在使用 Flex 布局实现页面自适应时,需要对其基本原理和特性有深入的理解,同时结合具体的布局需求和场景,进行细致的调整和优化。通过合理的设置和注意事项的把握,才能实现理想的自适应效果,提升用户体验。还可以根据实际情况进行更深入的探索和实践,以不断提升 Flex 布局的应用能力。
|
1月前
|
容器
HTML中使用Flex布局实现双行夹批效果
在HTML中,还可以用table元素来实现双行夹批效果,但比flex布局代码更复杂,效果也不见得更理想。
41 10
|
1月前
|
开发者 UED 容器
鸿蒙next版开发:ArkTS组件通用属性(Flex布局)
在HarmonyOS next中,ArkTS的Flex布局是一种强大且灵活的布局方式,支持水平或垂直方向排列元素,并能动态调整大小和位置以适应不同屏幕。主要属性包括justifyContent、alignItems、direction和wrap,适用于导航栏、侧边栏和表单等多种场景。示例代码展示了如何使用这些属性创建美观的布局。
77 10
下一篇
DataWorks