#Flex布局#

1、什么是flex布局?

flex 布局,全称弹性布局(Flexible Box Layout),是 CSS3 中引入的一种新的布局模式。它主要通过给容器设置相关属性,来控制容器内部子元素的排列方式。相比传统的浮动布局和定位布局,flex 布局更加灵活、直观,尤其适合响应式设计。​

简单来说,使用 flex 布局时,我们会有一个 “容器”,容器里面的元素被称为 “项目”。容器就像一个弹性的盒子,项目会根据容器的设置,以弹性的方式进行排列。

2、如何开启 flex 布局?

开启 flex 布局非常简单,只需要给容器添加display: flex;属性即可。例如:

.container {display: flex;
}

当容器设置为 flex 布局后,它的子元素(项目)就会自动成为 flex 项目,此时项目的 float、clear 和 vertical-align 属性将失效。

3、flex 布局的核心概念

  • 主轴:flex 项目默认沿着主轴排列。主轴的方向可以是水平的(默认,从左到右),也可以通过属性修改为垂直的(从上到下)等。​
  • 交叉轴:与主轴垂直的轴就是交叉轴。主轴方向变化时,交叉轴方向也会相应变化。

4、容器的主要属性

容器上有很多重要的属性,通过设置这些属性,可以改变项目的排列方式。​

1、flex-direction:决定主轴的方向​

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

2、justify-content:定义项目在主轴上的对齐方式

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

3、align-items:定义项目在交叉轴上的对齐方式

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

4、flex-wrap:定义项目是否换行

  • nowrap(默认):不换行,项目会压缩宽度以适应容器。​
  • wrap:换行,第一行在上方。​
  • wrap-reverse:换行,第一行在下方。

5、align-content:定义多根轴线的对齐方式(如果项目只有一根轴线,该属性不起作用)

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

5、项目的主要属性

除了容器的属性,项目也有一些常用的属性,可以单独控制某个项目的表现。

1、flex-grow:定义项目的放大比例,默认为 0,即如果存在剩余空间,也不放大。当所有项目的 flex-grow 属性都为 1 时,它们将等分剩余空间;如果其中一个项目的 flex-grow 属性为 2,其他项目都为 1,则前者占据的剩余空间将比其他项多一倍。

2、flex-shrink:定义项目的缩小比例,默认为 1,即如果空间不足,项目将缩小。如果一个项目的 flex-shrink 属性为 0,其他项目都为 1,则空间不足时,前者不缩小。

3、flex-basis:定义在分配多余空间之前,项目占据的主轴空间。默认值为 auto,即项目的本来大小。

4、flex:是 flex-grow、flex-shrink 和 flex-basis 的简写,默认值为 0 1 auto。该属性有两个快捷值:auto(1 1 auto)和 none(0 0 auto)。

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

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

6、注意事项

  • 当容器设置为 flex 布局后,子元素的 float、clear 和 vertical-align 属性失效。​
  • flex 布局是单向的,要么沿主轴排列,要么沿交叉轴排列,不能同时在两个方向上进行复杂的排列。​
  • 在使用 flex-wrap: wrap 时,要注意项目的宽度设置,避免出现意想不到的换行效果。

#Grid布局#

1、Grid布局是什么?

grid 布局,即网格布局,是 CSS 中另一种强大的布局模式。它与 flex 布局不同,flex 布局主要处理一维布局(要么是行,要么是列),而 grid 布局则是专门为二维布局(同时处理行和列)设计的。​

可以把 grid 布局想象成一张表格,有行和列,行和列交叉形成的区域就是单元格,我们可以把元素放在这些单元格中,还能让元素跨多行或多列。

2、如何开启 grid 布局?

开启 grid 布局也很简单,给容器添加display: grid;属性就行。例如:

.container {display: grid;
}

当容器设置为 grid 布局后,它内部的子元素就成为了 grid 项目。

3、grid 布局的核心概念

要理解 grid 布局,需要先清楚这些核心概念:​

  • 容器:设置了display: grid;的元素,是所有项目的父元素。​
  • 项目:容器内部的子元素。​
  • 行和列:容器被划分成若干水平的行和垂直的列。​
  • 行间距和列间距:行与行之间的距离叫行间距,列与列之间的距离叫列间距。​
  • 单元格:行和列交叉形成的最小单位。​
  • 网格线:划分行和列的线,水平的是行网格线,垂直的是列网格线。

4、容器的主要属性

(1)、grid-template-columns 和 grid-template-rows:定义列的宽度和行的高度​,可以直接指定具体的长度,也可以使用 fr 单位(表示剩余空间的等分比例)。

.container {display: grid;grid-template-columns: 100px 1fr 2fr; /* 三列,第一列宽100px,第二列占1份剩余空间,第三列占2份 */grid-template-rows: 50px 100px; /* 两行,第一行高50px,第二行高100px */
}

还可以使用repeat()函数简化重复的值,比如grid-template-columns: repeat(3, 100px);表示三列,每列宽 100px。

(2)、grid-row-gap 和 grid-column-gap:设置行间距和列间距,也可以用grid-gap简写(grid-gap: 行间距 列间距;)。

.container {grid-row-gap: 10px;grid-column-gap: 20px;/* 等同于 grid-gap: 10px 20px; */
}

在较新的 CSS 标准中,这些属性的前缀grid-可以省略,直接写row-gap、column-gap、gap。

(3)、grid-template-areas:定义网格区域。先给项目指定grid-area属性命名,然后在容器中用grid-template-areas来规划区域。

.container {grid-template-areas:"header header header""sidebar main main""footer footer footer";
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }
.footer { grid-area: footer; }

这样就定义了一个三行三列的网格,第一行是 header 区域,第二行左侧是 sidebar 区域,右侧是 main 区域,第三行是 footer 区域。

(4)、justify-items:设置项目在单元格中水平方向的对齐方式​。取值有start(左对齐)、end(右对齐)、center(居中)、stretch(拉伸,占满单元格宽度,默认值)。​

(5)、align-items:设置项目在单元格中垂直方向的对齐方式​。取值有start(上对齐)、end(下对齐)、center(居中)、stretch(拉伸,占满单元格高度,默认值)。​

(6)、justify-content:当网格总宽度小于容器宽度时,设置网格在容器水平方向的对齐方式​。取值有start、end、center、space-around(网格两侧间距相等,网格之间间距是两侧的两倍)、space-between(网格之间间距相等,两侧没有间距)、space-evenly(网格之间和两侧的间距都相等)。​

(7)、align-content:当网格总高度小于容器高度时,设置网格在容器垂直方向的对齐方式​。取值与justify-content类似。

5、项目的主要属性

项目也有一些属性来控制自身的位置和大小:​

1、grid-column-start 和 grid-column-end:设置项目所占列的起始和结束位置(基于列网格线)​

例如,grid-column-start: 1; grid-column-end: 3;表示项目从第 1 根列网格线开始,到第 3 根列网格线结束,也就是跨 2 列。可以简写为grid-column: 1 / 3;。​

2、grid-row-start 和 grid-row-end:设置项目所占行的起始和结束位置(基于行网格线)​

类似列的设置,简写为grid-row: 1 / 3;,表示项目跨 2 行。​

3、grid-area:有两个作用,一是给项目命名(配合容器的grid-template-areas使用),二是直接指定项目的位置,是grid-row-start、grid-row-end、grid-column-start、grid-column-end的简写,格式为grid-area: 行起始 / 列起始 / 行结束 / 列结束;。​

4、justify-self:设置单个项目在单元格水平方向的对齐方式,可覆盖容器的justify-items属性,取值与justify-items相同。​

5、align-self:设置单个项目在单元格垂直方向的对齐方式,可覆盖容器的align-items属性,取值与align-items相同。

6、注意事项

  • grid 布局是二维的,更适合复杂的网格布局,而 flex 布局适合一维布局,实际开发中可以根据需求结合使用。​
  • 项目的 margin 不会重叠,和 grid 布局的间距一起生效。​
  • 当项目设置了固定大小,而网格空间不足时,可能会出现溢出的情况,需要注意调整。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/90597.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/90597.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/90597.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《云计算蓝皮书 2025 》发布:云计算加速成为智能时代核心引擎

近日,中国信息通信研究院发布了《云计算蓝皮书(2025 年)》,全面剖析了云计算领域的发展现状与未来趋势。在人工智能蓬勃发展的当下,云计算正从基础资源供给向智能时代的核心引擎加速转变,成为重塑全球数字竞…

excel删除重复项场景

问题描述 问题描述:因为表格中存在多条相同的数据,我现在excel有一列,值为#N/A 。另外有列叫做药品名称、规格、厂家 我要删除值为 #N/A,并且 药品名称、规格、厂家相等的数据,那条相同的删掉,只保留一条,…

Vue 3 与 Element Plus 中的 /deep/ 选择器问题

Vue 3 与 Element Plus 中的 /deep/ 选择器问题 在 Vue3 中使用 Element Plus 组件时,使用 ::v-deep或 :deep()的场景取决于 ​​样式作用域​​ 和 ​​选择器目标​​。以下是关键区别:

2025暑期—06神经网络-常见网络

六个滤波核提取特征Maps5X5 卷积核,1个阈值 6个元素,卷积后两边各少两个,28*28像素 又有6个卷积核,所以有122304个连接,连接数不多是因为很多都是公用参数的。池化是参数池化,和当前平均最大不一样。编程14…

硅基计划3.0 学习总结 叁 栈和队列

文章目录一、栈1. 模拟实现栈2. 小试牛刀1. 判断一个栈的出栈顺序是否为题目给定情况2. 括号匹配3. 逆波兰表达式求值4. 求最小栈元素3. 单链表实现栈二、队列1. 官方队列类Queue2. 双向链表模拟实现Queue类3. 顺序表模拟实现Queue类4. 双端队列5. 队列实现栈6. 栈实现队列一、…

飞行控制领军者 | 边界智控携高安全级飞控系统亮相2025深圳eVTOL展

2025深圳eVTOL展将于2025年9月23日至25日在深圳坪山燕子湖国际会展中心盛大举办。本届展会以 “低空经济・eVTOL・航空应急救援・商载大型无人运输机” 为核心,预计将汇聚200余位发言嘉宾、500 余家顶尖展商及15,000余名专业观众,规模盛大,精…

React状态管理——Dva

目录 一、安装依赖 二、Dva注册model方式 2.1 自动注册models 2.2 手动注册model方式 三、创建 dva 实例 四、创建 model 五、在组件中使用 六、动态加载Dva Model Dva 是一个基于 redux 和 redux-saga 的轻量级前端框架,可以方便地在 React 应用中管理状态…

编程与数学 03-002 计算机网络 05_以太网技术

编程与数学 03-002 计算机网络 05_以太网技术一、以太网的基本原理(一)CSMA/CD协议的工作原理(二)以太网的帧结构二、以太网的拓扑结构与设备(一)传统以太网的拓扑结构(二)交换机的工…

解决英文版Windows10安装WireShark报错

问题点击WireShark安装包进行安装时报错原因编码方式故障解决方式修改操作系统编码1.WinR,输入Control,打开控制面板2.点击Small icons3.点击Region4.设置编码UTF-8

利用aruco标定板标定相机

1、生成aruco标定板#include <opencv2/opencv.hpp> #include <opencv2/aruco.hpp> #include <opencv2/objdetect/aruco_detector.hpp> #include <iostream> #include <string>using namespace cv; using namespace std;int main() {int markers…

C/C++语言程序使用三种主要的内存分配方式,和python语言一样么?

这是一个很好的比较问题&#xff01;C/C 和 Python 在内存分配方式上有本质的区别&#xff0c;虽然它们最终使用的都是计算机的物理内存&#xff08;堆、栈等&#xff09;&#xff0c;但语言层面提供的抽象和管理机制完全不同。核心区别&#xff1a;控制权&#xff1a; C/C 程序…

小电流驱动大电流:原理、实现方式与应用前景

目录 一、什么是“小电流驱动大电流”&#xff1f; 举个例子&#xff1a; 二、核心原理与实现方式 1. 电流放大原理 2. 电子开关元件 3. 控制电路设计 4. 附加保护措施 三、为什么采用“小电流驱动大电流”&#xff1f; 1. 提高安全性 2. 降低能耗 3. 改善效率 4. …

【DM数据守护集群搭建-读写分离】

DM数据守护集群搭建-读写分离 读写分离集群由一个主库以及一个或者多个配置了即时&#xff08;Timely&#xff09;归档或实时&#xff08;Realtime&#xff09;归档的备库组成&#xff0c;其主要目标是在保障数据库可用性基础上&#xff0c;实现读、写操作的自动分离&#xff0…

earth靶场

1、找ip和端口主机是192.168.6.213&#xff0c;因此靶场ip就是192.168.6.34&#xff0c;三个端口开放&#xff0c;我们去访问一下页面。三个端口都无法访问。我们使用nmap进行dns解析。nmap -A -p- -T4 -sV 192.168.6.34把这两条解析添加到hosts文件中去&#xff0c;这样我们才…

Kafka——Java消费者是如何管理TCP连接的?

引言在分布式消息系统中&#xff0c;网络连接是数据流转的"血管"&#xff0c;其管理效率直接决定了系统的吞吐量、延迟与稳定性。作为Kafka生态中负责数据消费的核心组件&#xff0c;Java消费者&#xff08;KafkaConsumer&#xff09;的TCP连接管理机制一直是开发者理…

idea监控本地堆栈

idea 安装插件 VisualVM Launcher重启idea后&#xff0c;配置 VisualVM 属性选择自己jdk的 jvisualvm启动时&#xff0c;选择监控&#xff0c;会自动弹出 VisualVM

系统性提升大模型回复准确率:从 RAG 到多层 Chunk 策略

大语言模型&#xff08;LLM&#xff09;在问答、搜索、对话等任务中展现出强大的生成能力&#xff0c;但它并不具备真实世界知识的完全记忆与对齐能力&#xff0c;尤其在涉及复杂信息、长文档引用或领域细节时&#xff0c;其“幻觉”问题&#xff08;hallucination&#xff09;…

【神经网络概述】从感知机到深度神经网络(CNN RNN)

文章目录1. 神经网络基础1.1 感知器&#xff08;Perceptron)1.2 深度神经网络&#xff08;DNN&#xff09;2. 卷积神经网络&#xff08;CNN&#xff09;2.1 核心思想2.2 典型结构2.3 ⾥程碑模型:2.4 卷积层 - CNN 核心2.5 池化层3. 循环神经网络&#xff08;RNN&#xff09;3.1…

界面规范3-列表下

4、内容文字有链接的采用蓝色字体<font colorblue></font>重要内容采用红字字体&#xff0c;如状态<font colorred></font>一般字体使用color: #3232325、行高height: 40px;line-height: 40px;6、其他表格占满界面空间&#xff0c;内容多时&#xff0c…

中文语音识别与偏误检测系统开发

中文语音识别与偏误检测系统开发 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c;觉得好请收藏。点击跳转到网站。 1. 系统概述 本系统旨在开发一个基于Paraformer模型的中文语音识别与偏误检…