前端的学习-CSS(弹性布局-flex)

一:什么是弹性布局-Flex

flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。

语法:

css 复制代码
.box{
    display: flex;
}
css 复制代码
.box{
    display: inline-flex;
}

注意,设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效。

基本概念:

按照我自己的理解,横向代表主轴的方向,纵向代表交叉轴的方向,横向的方向由左到右为开始到结束,纵向则是由上到下。

我将被设置弹性布局的盒子称作父元素,将里面的内容称为子元素。方便记忆。

通常设置盒子页面都是按照标准流进行排列。块元素的话就是从上到下排列。如下图。

现在给父元素也就是绿色的盒子设置弹性布局。 子元素的盒子会自动按照主轴方向排列。

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>弹性布局</title>
		<style type="text/css">
			.main-box {
				width: 800px;
				height: 300px;
				background-color: aquamarine;
				margin: 0 auto;
                /* 设置弹性盒子 */
				display: flex;
			}

			.main-box>div {
				width: 200px;
				height: 200px;
				border: 1px solid red;
				font-size: 20px;
				color: #000;
			}
		</style>
	</head>
	<body>
		<div class="main-box">
			<div>1</div>
			<div>2</div>
			<div>3</div>
		</div>
	</body>
</html>

以下6个属性设置在容器上。

flex-direction:项目的排列方向

flex-wrap:项目如何换行

flex-flow: flex-direction 属性和 flex-wrap的简写方式。

justify-content:项目在主轴上的对齐方式

align-items:项目在交叉轴上如何对齐

align-content:多根轴线的对齐方式

1: flex-direction:项目的排列方向

flex-direction,默认排列为主轴方向,也就是水平方向。

css 复制代码
box {
    flex-direction: row | row-reverse | column | column-reverse;
}

row:默认方向,主轴的方向

row-reverse:主轴方向,但元素会从主轴结束的方向开始排列,并且元素的顺序会反过来。

column:交叉轴方向

colmun-reverse:交叉轴方向,但元素会从交叉轴结束的方向开始排列,并且元素的顺序会反过来。。

css 复制代码
flex-direction: row-reverse;

设置交叉轴方向

css 复制代码
flex-direction: column;

设置交叉轴反向

css 复制代码
flex-direction: column-reverse;
2:flex-wrap:项目如何换行

首先弹性布局默认是不会换行,当子元素的宽度或者高度总和加起来大于父元素的宽度时,子元素会被压缩。如下。

这时如果需要换行,则需要flex-warp属性来控制,flex-warp默认是 flex-warp: no-warp;

这时将其值为:flex-warp: warp;

css 复制代码
flex-wrap: wrap;

交叉轴方向换行

css 复制代码
.main-box {
	width: 800px;
	height: 300px;
	background-color: aquamarine;
	margin: 0 auto;
	/* 设置弹性盒子 */
	display: flex;
	/* 设置交叉轴方向 */
	flex-direction: column;
	flex-wrap: wrap;
}
3:justify-content:项目在主轴上的对齐方式
css 复制代码
.box {
    justify-content: flex-start | flex-end | center | space-between |
    space-around;
}
css 复制代码
justify-content: flex-start;
css 复制代码
justify-content: flex-end;
css 复制代码
justify-content: space-between;
css 复制代码
justify-content: space-around;
css 复制代码
justify-content: space-evenly;

space-around与space-evenly的区别是,space-evenly的间隙全是一样的,而,sapce-around的最左右两别的间隙和子元素之间的间隙是不一样的,space-beween的只有中间存在空隙。

4: align-items:项目在交叉轴上如何对齐
css 复制代码
.box {
    align-items: flex-start | flex-end | center | baseline | stretch;
}
css 复制代码
align-items: flex-start;
css 复制代码
align-items: flex-end;
css 复制代码
align-items: center;

align-items: baseline;以第一行文字的基线作为对齐的基准。

css 复制代码
align-items: baseline;

如果子元素未设置高度,而设置了align-items: stretch; 则会占满整个父元素。

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>弹性布局</title>
		<style type="text/css">
			.main-box {
				width: 800px;
				height: 300px;
				background-color: aquamarine;
				margin: 0 auto;
				/* 设置弹性盒子 */
				display: flex;
				/* 设置交叉轴方向 */
				align-items: stretch;
			}

			.main-box>div {
				width: 100px;
				/* height: 300px; */
				border: 1px solid red;
				font-size: 20px;
				color: #000;
			}
		</style>
	</head>
	<body>
		<div class="main-box">
			<div class="box1">1</div>
			<div class="box2">2</div>
			<div class="box3">3</div>
			<div class="box4">4</div>
			<div class="box5">5</div>
		</div>
	</body>
</html>
5: align-content:多根轴线的对齐方式

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

css 复制代码
.box {
    align-content: flex-start | flex-end | center | space-between | spacearound | stretch;
}
css 复制代码
align-content: flex-start;
css 复制代码
align-content: flex-end;
css 复制代码
align-content: space-around;
css 复制代码
align-content: space-between;
css 复制代码
align-content: space-evenly;
css 复制代码
align-content: center;
css 复制代码
align-content: stretch;

今天就先这样。。。。。。

相关推荐
小羊没烦恼!3 分钟前
浅谈SQL Server中的事务日志(二)----事务日志在修改数据时的角色
前端·数据库·后端·python·web安全·oracle
myaifas6 分钟前
新人的第一个任务该怎么选
前端·产品经理
ly_Enhs15 分钟前
从无光照到 PBR:我的环境光照学习记录
学习·vulkan图形渲染c/c++
小李不想当小白16 分钟前
USART串口数据包(STM32标准库学习笔记)
经验分享·笔记·stm32·单片机·嵌入式硬件·学习
怕浪猫18 分钟前
前端转全栈最低成本的技术栈选择
前端·javascript·面试
狂师20 分钟前
AI时代我们要如何玩抓包测试:Reqable + AI Agent
前端·程序员·测试
data analyse 45622 分钟前
页面卸载时埋点上报总丢失?sendBeacon 上报与补偿方案
大数据·运维·服务器·前端·数据库·人工智能·数据分析
xier_ran25 分钟前
【infra之路】AI 编译器学习笔记(八):向量化——把小块变成 SIMD 指令
人工智能·笔记·学习
kmomo..25 分钟前
Linux 驱动开发学习笔记:I2C 子系统从入门到实践
linux·驱动开发·学习
WebInfra30 分钟前
Rsdoctor 2.0 发布:Agent 驱动的全自动优化工具
前端·javascript·node.js