Flexbox 布局笔记(一):初识 Flexbox 布局模型

阅读时长 9 分钟读完

概述

Flexbox 是一种强大的 CSS 布局模型,可以非常方便地实现复杂的页面布局。Flexbox 已经成为现代前端开发中不可或缺的一部分。

Flexbox 提供了一种基于弹性盒子(flex box)的布局方式,能够在不同的屏幕和设备上自适应地调整布局。与传统的 float 和 position 布局方式相比,Flexbox 更加灵活和轻便,代码可读性和维护性大大提高。

在本篇文章中,我们将介绍 Flexbox 最基础的内容,包括如何创建 Flex container 和 Flex item,并设置其属性。

创建 Flex container

Flexbox 使用弹性盒子的概念来布局。在 Flexbox 布局中,父容器称为 Flex container,所有的子元素则称为 Flex item。

创建一个 Flex container 需要设置父容器的 display 属性为 flexinline-flex。这将使用弹性盒子模型来布局子元素。

创建 Flex item

Flex item 是 Flex container 内的所有子元素。Flex item 可以设置特定属性来定义其行为和排列顺序。

Flex item 的默认行为是沿着主轴(main axis)上水平方向水平排列,垂直方向垂直排列。

以下是三个示例子元素:

Flex container 属性

Flex container 有多个属性可用于控制其布局和行为。

flex-direction

flex-direction 属性用于定义 Flex container 内的 Flex items 沿主轴方向的排列方式。默认值是 row

justify-content

justify-content 属性用于控制 Flex item 沿主轴方向的对齐方式。默认值是 flex-start

align-items

align-items 属性用于控制 Flex item 沿交叉轴(cross axis)方向的对齐方式。默认值是 stretch

flex-wrap

flex-wrap 属性用于控制 Flex item 在一行内放不下时的换行方式。默认值是 nowrap

align-content

align-content 属性用于控制多行 Flex item 的对齐方式,仅在多行情况下生效。默认值是 stretch

-- -------------------- ---- -------
--------------- -
  -------------- -------- -- --- ---- --------- --
  -------------- ----------- -- --- ----- ---- ---- --
  -------------- --------- -- --- ----- ---- ---- --
  -------------- ------- -- --- ----- ---- ---- --
  -------------- -------------- -- - ----- ---- ------ --
  -------------- ------------- -- - ----- ---- ------------- ---- ----- --
  -------------- ------------- -- - ----- ---- --------- ---- ---- --
-

Flex item 属性

Flex item 有多个属性可用于控制其布局和行为。以下是最常用的三种属性:

flex

flex 属性用于定义 Flex item 的扩展方式。默认值是 0 1 auto

flex 属性可以接受一个三值参数,分别表示:flex-growflex-shrinkflex-basis。其中:

  • flex-grow 定义 Flex item 在剩余空间中的扩展比例,如果所有 Flex item 的 flex-grow 值相同,它们将均分可用空间。如果选择性地将一个 Flex item 的 flex-grow 值增加,它将比其他 Flex item 更具扩展性。
  • flex-shrink 定义 Flex item 在空间不足时的缩小比例。默认为 1,表示在可用空间不足时,Flex item 将自动缩小,保持尽可能大的空间。如果所有 Flex item 的 flex-shrink 值相同,则它们将按比例缩小。
  • flex-basis 定义了 Flex item 的初始大小。它可以是一个固定值或自动,取决于 Flex item 内容的宽度。默认是 auto,表示由元素的自身宽度自动设置大小。

align-self

align-self 属性允许每个 Flex item 单独定义交叉轴对齐方式。默认是继承父容器中的 align-items

order

order 属性用于定义 Flex item 的排列顺序,默认情况下 Flex item 按照 HTML 中的顺序排列。order 值小的元素排在前面,值相同时按照 HTML 顺序排列。

示例

下面是一个使用 Flexbox 布局的示例代码:

-- -------------------- ---- -------
--------------- -
  -------- -----
  --------------- ----
  ---------------- -------------
  ------------ -------
  ------- ------
-

---------- -
  ----- --
  -------- -----
  ---------------- -------
  ------------ -------
  ---------- -----
  ------------ -----
  ------ ------
-

这段代码将创建一个横向一行,子元素间距平均分布的 Flex container。子元素均为 Flex item,使用 Flexbox 属性进行对齐。

在这个示例中,flex: 1 将平均分配子元素的宽度,并将它们的宽度扩展到可用空间的宽度。justify-content: space-around 将子元素之间的空间均匀分布,align-items: center 将子元素对齐于 cross axis 的中心。

总结

本文介绍了 Flexbox 布局的基础内容,包括如何创建 Flex container 和 Flex item,并设置其属性。这些属性非常强大,在实际项目开发中可以灵活应用。

在下一篇文章中,我们将更深入地介绍 Flexbox 布局,包括如何使用媒体查询和嵌套 Flexbox 容器等高级用法,敬请期待!

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64dff4bef6b2d6eab3b1bb69

纠错
反馈