Flexbox 布局完整教程

什么是 Flexbox 布局?

Flexbox 是一种用于布局的 CSS3 模块,它可以轻松地实现响应式布局,使得页面元素在不同屏幕尺寸下能够自适应地排列。它的全称是 Flexible Box Layout,意为弹性布局。

Flexbox 布局的特点是灵活性和自适应性。它可以让元素在容器中的分布更加灵活,可以轻松地实现元素的水平和垂直居中、等高布局等常见布局需求。

Flexbox 布局的基本概念

在了解 Flexbox 布局之前,需要先了解一些基本概念:

  1. Flex Container(容器): 容器是指应用 Flexbox 布局的元素,它的 display 属性值为 flexinline-flex
  2. Flex Item(项目): 项目是指容器内被应用 Flexbox 布局的元素,它们的布局是基于容器的。
  3. Main Axis(主轴): 主轴是指容器的主要方向,可以是水平方向或垂直方向。默认情况下,主轴是水平方向,即 flex-direction: row
  4. Main Start / Main End(主轴起点 / 主轴终点): 主轴起点是指容器内项目的起点,主轴终点是指容器内项目的终点。在默认情况下,主轴起点在左侧,主轴终点在右侧(即从左到右排列)。
  5. Cross Axis(交叉轴): 交叉轴是指与主轴垂直的方向。默认情况下,交叉轴是垂直方向,即 flex-direction: row
  6. Cross Start / Cross End(交叉轴起点 / 交叉轴终点): 交叉轴起点是指容器内项目的起点,交叉轴终点是指容器内项目的终点。在默认情况下,交叉轴起点在顶部,交叉轴终点在底部(即从上到下排列)。

Flex Container 的属性

下面是一些常用的 Flex Container 属性:

display

设置元素为 Flex Container。

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

flex-direction

设置主轴方向。

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

flex-wrap

设置项目是否换行。

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

justify-content

设置项目在主轴上的对齐方式。

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

align-items

设置项目在交叉轴上的对齐方式。

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

align-content

设置多行项目在交叉轴上的对齐方式。

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

Flex Item 的属性

下面是一些常用的 Flex Item 属性:

flex-grow

设置项目的放大比例。

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

flex-shrink

设置项目的缩小比例。

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

flex-basis

设置项目的基准大小。

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

flex

flex-growflex-shrinkflex-basis 的缩写。

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

order

设置项目的排列顺序。

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

Flexbox 布局的示例代码

下面是一个简单的 Flexbox 布局示例代码:

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

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

这个示例代码实现了三个项目在水平方向上居中对齐,并且在垂直方向上也居中对齐。每个项目的大小相等,间隔为 1rem。在不同屏幕尺寸下,这个布局可以自适应地调整。

总结

Flexbox 布局是一种非常实用的 CSS 布局方式,它可以轻松地实现响应式布局和常见布局需求。掌握了 Flexbox 布局的基本概念和常用属性,就可以轻松地应对各种布局需求。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/66384cdcd3423812e464e959


猜你喜欢

  • 利用 Chai 测试框架结合 Sinon 进行 API 的 Mock 和 Stub

    前言 在前端开发中,我们经常需要对 API 进行测试。为了保证测试的准确性和完整性,我们需要使用 Mock 和 Stub 技术来模拟 API 的行为。本文将介绍如何使用 Chai 测试框架结合 Sin...

    6 个月前
  • 解决 Vue-router 的子路由不显示的问题

    Vue-router 是 Vue.js 中一个非常重要的插件,它可以帮助我们实现前端路由功能,让我们的应用可以像传统的多页面应用一样,通过 URL 来跳转到不同的页面。

    6 个月前
  • Flexbox 让 Flex 子项自适应父容器高度

    在前端开发中,我们经常会遇到需要让容器内的元素自适应容器高度的情况。在传统的布局方式中,这可能需要使用一些 hack 的方法来实现。但是在 Flexbox 布局中,这个问题可以轻松解决。

    6 个月前
  • Headless CMS 的技术教程:如何使用 Hugo 和 Netlify 创建高效网站

    在当今互联网时代,网站已经成为了企业和个人展示自己的必要途径之一。而网站的建设离不开前端技术的支持,而 Headless CMS 技术则是前端开发者们在网站建设中的利器之一。

    6 个月前
  • ECMAScript 2019:如何用更优雅的方式导出常量

    ECMAScript 2019(也称为ES10)是JavaScript的最新版本,其中包含了许多新特性和语言改进。其中一个最有用的改进是更好的常量导出方式。在本文中,我们将深入探讨这些改进,以及如何使...

    6 个月前
  • 如何利用 Django 实现 RESTful API

    随着 Web 应用的不断发展,RESTful API 成为了现代 Web 应用开发中的重要组成部分。而 Django 作为一款流行的 Web 框架,也提供了强大的功能来构建 RESTful API。

    6 个月前
  • ES12 中的 Intl.Segmenter API 简介

    在前端开发中,文本处理是一个非常重要的环节。随着多语言应用的不断增加,文本的分割和处理也变得越来越复杂。ES12 中新增了 Intl.Segmenter API,它可以帮助我们更方便地处理文本。

    6 个月前
  • Material Design 在前端 UI 优化中的应用

    Material Design 是谷歌在 2014 年推出的一种设计语言,旨在提供一种简单、直观、统一的设计风格,以便在移动设备和桌面端应用中提供一致的用户体验。在前端开发中,我们可以通过 Mater...

    6 个月前
  • Koa2 异常处理方案

    Koa2 是一个轻量级的 Node.js Web 框架,它的核心理念是中间件(middleware),它可以很好地处理异步流程和错误处理。在实际应用中,异常处理是非常重要的一部分,本文将介绍 Koa2...

    6 个月前
  • Sass 编写 CSS 实例之盒子样式

    在前端开发中,CSS 是必不可少的一项技能,而 Sass 则是一种 CSS 预处理器,它能够让 CSS 更加简洁、易读、易维护。本文将通过一个实例来介绍 Sass 如何编写盒子样式,旨在帮助读者更好地...

    6 个月前
  • Kubernetes 集群中的资源监控方法

    Kubernetes 是一个流行的容器编排系统,它允许用户轻松地管理和扩展容器化应用程序。然而,随着 Kubernetes 集群规模的增加,监控集群中的资源变得越来越重要。

    6 个月前
  • SSE 和 WebSocket: 优缺点对比

    在现代 Web 应用程序中,实时数据传输成为了一个重要的需求。SSE 和 WebSocket 是两种流行的实时数据传输协议。本文将介绍这两种协议的优缺点对比,并提供示例代码。

    6 个月前
  • 从 Flask 到 AngularJS:打造一个 SPA 应用

    前言 单页应用(Single Page Application,SPA)是一种非常流行的 Web 应用程序,它通过 AJAX 技术实现动态加载内容,从而实现快速响应和无缝的用户体验。

    6 个月前
  • 无障碍技术实战:解决屏幕阅读器兼容性问题

    前言 在当今数字化社会中,无障碍技术已经成为了越来越重要的一个话题。无障碍技术的目的是为了让所有人都能够方便地使用网站或应用,包括身体或认知上有障碍的人。其中,屏幕阅读器是一种常用的辅助工具,它可以帮...

    6 个月前
  • 解决 CSS Flexbox 中 Flex 子项高度撑满容器的问题

    CSS Flexbox 是一种非常强大的布局方式,它可以轻松地实现各种复杂的布局效果。但是在使用 Flexbox 时,经常会遇到一个比较棘手的问题,那就是如何让 Flex 子项的高度撑满容器。

    6 个月前
  • RxJS 中的 takeUntil 方法详解

    前言 RxJS 是一个非常强大的 JavaScript 函数式编程库,它提供了丰富的操作符来处理异步数据流。其中,takeUntil 是一个非常常用的操作符之一,它可以帮助我们在某个条件满足时,停止一...

    6 个月前
  • ES9 中的字符集匹配和 Unicode 属性详解

    在前端开发中,我们经常会涉及到字符集匹配和 Unicode 属性的使用。ES9 中增加了一些新的特性,使得这些操作更加方便和高效。本文将详细介绍 ES9 中的字符集匹配和 Unicode 属性,并提供...

    6 个月前
  • Docker + Kafka + ELK 构建日志分析平台

    在现代化的应用程序中,日志是十分重要的一部分。日志记录有助于监视应用程序的运行状况,发现并解决问题。但是,随着应用程序的规模和复杂性不断增加,日志的数量和复杂性也在不断增加。

    6 个月前
  • GraphQL Fragment 的妙用

    在 GraphQL 中,Fragment 是一种非常有用的技术。它可以让开发者在查询中重复使用字段集合,从而提高代码的可读性和可维护性。本文将详细介绍 GraphQL Fragment 的妙用,并为读...

    6 个月前
  • PM2 部署 MongoDB 应用,如何实现数据复制和分片集群

    前言 MongoDB 是目前非常流行的 NoSQL 数据库,它的优点是可以存储非结构化数据,支持高可用性和可扩展性。对于一个大型的应用来说,数据的复制和分片集群是必不可少的。

    6 个月前

相关推荐

    暂无文章