CSS布局 Flex 和 Grid

embedded/2024/9/24 22:58:46/

在 CSS 中,理解 flex 和 Grid 布局非常重要,今天把这两个重要知识点回顾一下。

Flexbox 弹性盒子布局

弹性布局支持 flex、inline-flex,支持块和内联。

容器
  1. 轴的概念,在 Flexbox,有主轴和侧轴的概念,轴可以理解行和列,对于轴还有一个方向的概念,默认情况,行的方向是从左至右,列的方向是从上至下。通过 flex-direction 控制
  2. 对齐方式,flex 容器的对齐方方式有三种,justify-content 主轴对齐,默认flex-start 左对齐,align-items 侧轴对齐,默认stretch充满,align-content 行对其方式,默认stretch充满。align-items和 align-content,一个是元素在行内的对齐方式,一个行间的对其方式。
  3. 换行:默认 flexbox 是不换行的。
元素
  1. 支持元素按比例缩放,flex-grow: 放大占比,flex-shrink:缩小占比,flex-basis:初始化尺寸。flex-basis 一般都是 auto,如果需要将布局与实际元素尺寸进行分离可以设置对应的大小。
  2. 自对齐:与容器的 3 种对齐方式不同,自对齐只针对元素自身。
  3. 顺序:可以定义元素顺序,元素在容器内根据顺序进行排列

从 CSS tricky 盗了一张图,帮助使用理解 flexbox,非常直观。

在这里插入图片描述

Grid网格布局

Flexbox 设计用于一维布局(行或列),而 Grid 允许同时进行水平和垂直布局对齐,非常适合更复杂的网页设计。通过将元素的 display 属性设置为 grid 或 inline-grid来实现一个网格布局,支持块和内联。

容器
  1. 网格定义:显式网格:可以使用 grid-template-rows、grid-template-columns 和 grid-template-areas 定义网格行和列。隐式网格:自动生成行和列,通过 grid-auto-rows、grid-auto-columns 和 grid-auto-flow 进行管理。例如我如果网络超出了定义,如果定义了 3x3 网格,但却放入了 10 个元素,那么网格就会使用隐式定义,auto-rows、auto-columns 默认都是auto,auto-flow 默认是行,自动加行。
  2. 指定位置:可以使用 grid-row-start、grid-row-end、grid-column-start 和 grid-column-end 指定放到什么位置。或者使用简写属性 grid-row、grid-column 和 grid-area。grid-area 属性允许将项目放置在 grid-template-areas 中定义的特定区域。例如,下面的代码
.item-a {grid-column: 1 / 2;grid-row: 2 / 3;
}.item {grid-area: 2 / 1 / 4 / 3; // 指定坐标<row-start> / <column-start> / <row-end> / <column-end>;
}
  1. 对齐:网格提供 justify-items(单元格内行对齐)、align-items(单元格内列对齐)、justify-content(行对齐) 和 align-content(列对齐) 等属性来控制元素在其单元格内的对齐方式以及整个网格在其容器内的对齐方式。
  2. 间隙属性:row-gap、column-gap 和简写的 gap 属性允许定义行和列之间的空间。
  3. FR单位:自动调整以适应可用空间,例如 repeat(3, 1fr); 等宽 3 列。
元素
  1. 对齐:justify-self单个元素单元格内行对齐,align-self单个元素单元格内列对齐。

Grid 布局比 Flow 布局灵活也复杂一些,同样来一张图便于理解。

在这里插入图片描述


http://www.ppmy.cn/embedded/9677.html

相关文章

HarmonyOS ArkUI实战开发-窗口模块(Window)

窗口模块用于在同一物理屏幕上&#xff0c;提供多个应用界面显示、交互的机制。 对应用开发者而言&#xff0c;窗口模块提供了界面显示和交互能力。对于终端用户而言&#xff0c;窗口模块提供了控制应用界面的方式。对于操作系统而言&#xff0c;窗口模块提供了不同应用界面的…

【Interconnection Networks 互连网络】Torus 网络拓扑

1. Torus 网络拓扑2. Torus 网络拓扑结构References 1. Torus 网络拓扑 Torus 和 Mesh 网络拓扑&#xff0c;又可以称为 k-ary n-cubes&#xff0c;在规则的 n 维网格中包裹着 N k^n 个节点&#xff0c;每个维度都有 k 个节点&#xff0c;并且最近邻居之间有通道。k-ary n-c…

Linux 目录操作函数

目录操作函数 ls -l 可以查看目录中文件的信息&#xff0c;比如&#xff1a; petriXX:~/lesson01/05_io/目录操作函数$ ls -l a.txt -rw-r--r-- 1 petri petri 0 Apr 22 18:51 a.txtLinux系统中的目录操作函数&#xff1a; int rename(const char *oldpath, const char *new…

通过Docker新建并使用MySQL数据库

1. 安装Docker 确保您的系统上已经安装了Docker。可以通过以下命令检查Docker是否安装并运行&#xff1a; systemctl status docker如果没有安装或运行&#xff0c;请按照官方文档进行安装和启动。 2. 拉取MySQL镜像 从Docker Hub拉取MySQL官方镜像。这里以MySQL 5.7版本为…

一个typescript 5 + rollup 4 打包lib模板仓库实现

前言 昨天在写点什么东西的时候&#xff0c;发现有些逻辑可以搞成一个 npm 模块。 找了下看看&#xff0c;有没有什么好用现成模板用于开发。。发现并没有&#xff1b; 那有需求就解决需求。。 需求 基于当前的流行技术栈选型(rollup 4.x typescript 5.x)提供一个最小化模…

Leetcode 86. 分隔链表

题目链接&#xff1a; 86. 分隔链表 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/partition-list/description/ 题目&#xff1a; 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出…

【推理优化】超详细!AIGC面试系列 大模型推理系列(2)

本期问题聚焦于大模型的推理优化技术 本期问题快览 有哪些常见的大模型推理优化技术介绍下通过流水线处理技术来加速大模型推理方案介绍下并行计算技术来加速大模型推理的方案有哪些通过硬件来加速大模型推理的方式&#xff1f;模型量化是如何加速大模型推理的&#xff1f;有哪…

【面试经典 150 | 链表】分隔链表

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;模拟 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等内容进行回顾…