前端flex布局和grid布局

本文详细介绍了前端布局中的flex和grid布局,包括flex-direction、flex-wrap、justify-content、align-items等关键属性的用法,以及grid-template-rows、grid-template-columns和grid-auto-flow等grid布局特性。通过实例解析,帮助开发者掌握这两种强大的布局工具。
摘要由CSDN通过智能技术生成

9.flex布局

9.1定义弹性盒子

特点:自动计算宽高和不换行

父容器样式里面写上

.box{
   
    display:flex;
    display:-webkit-flex;
}

设置弹性盒子的兼容性

  • ​ -webkit-谷歌内核
    ​ -moz- 火狐
    ​ -o- 欧鹏
    ​ -ms- IE

9.2容器属性

有以下几个


可参照弹性盒子布局(阮一峰)

https://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

9.2.1flex-direction 定义子项的顺序

row(默认):起点在左边,水平排列

9.2.2.1.row-reverse:主轴为水平方向,起点在右端
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
		*{
    
			margin: 0;
			padding: 0;
		}
		/* 
		定义弹性盒子flex
		
		 容器的属性
			flex-direction 定义子项的顺序
				row(默认):起点在左边,水平排列
				row-reverse:主轴为水平方向,起点在右端
				column:垂直排列,起点在面
				column-reverse:垂直排列,起点下面
			
			flex-wrap:定义子项是否换行
				nowrap不换行
				wrap换行
				wrap-reverse换行(倒叙)
			
			flex-flow:flex-direction flex-wrap(是排列顺序列和换行的复合)
			
			justify-content定义子项目横向对齐方式(横轴)
				flex-start(默认值):左对齐
				flex-end:右对齐
				center:居中
				space-between:两端对齐,项目之间有间隔
				space-around:每个项目两侧的间隔相等。所有项目之间的间隔比项目与边框的间隔大一倍
			
			align-items:定义纵向的对齐方式(纵轴方向)
				flex-start:交叉轴的起点(顶部)对齐
				flex-end:交叉轴的重点(底部)对齐
				center:交叉轴的中点对齐
				baseline:项目的第一行文字的基线对齐
				stretch(默认值):如果项目没有设置宽高或则为auto,沾满这个容器的高度
		 */
		div.box{
    
			width: 1200px;
			height: 500px;
			border: 1px solid black;
			margin: 0 auto;
			/* 设置弹性盒子
				-webkit-谷歌内核
				-moz- 火狐
				-o- 欧鹏
				-ms- IE
				
			 */
			display: flex;
			display: -webkit-flex;
			flex-direction: row-reverse;
		}
		div.box>div{
    
			width: 380px;
			height: 480px;
			background: #ffaa00;
			margin: 10px;
		}
		</style>
	</head>
	<body>
		<div class="box">
			<div class="d1">1</div>
			<div class="d1">2</div>
			<div class="d1">3</div>
			<div class="d1">4</div>
			<!-- <div class="d1">5</div>
			<div class="d1">6</div>
			<div class="d1">7</div>
			<div class="d1">8</div>
			<div class="d1">9</div>
			<div class="d1">10</div> -->
		</div>
	</body>
</html>

image-20210722180805463

9.2.2.2.column:主轴为垂直方向,起点在上沿。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
		*{
    
			margin: 0;
			padding: 0;
		}
		/* 
		定义弹性盒子flex
		
		 容器的属性
			flex-direction 定义子项的顺序
				row(默认):起点在左边,水平排列
				row-reverse:主轴为水平方向,起点在右端
				column:垂直排列,起点在面
				column-reverse:垂直排列,起点下面
			
			flex-wrap:定义子项是否换行
				nowrap不换行
				wrap换行
				wrap-reverse换行(倒叙)
			
			flex-flow:flex-direction flex-wrap(是排列顺序列和换行的复合)
			
			justify-content定义子项目横向对齐方式(横轴)
				flex-start(默认值):左对齐
				flex-end:右对齐
				center:居中
				space-between:两端对齐,项目之间有间隔
				space-around:每个项目两侧的间隔相等。所有项目之间的间隔比项目与边框的间隔大一倍
			
			align-items:定义纵向的对齐方式(纵轴方向)
				flex-start:交叉轴的起点(顶部)对齐
				flex-end:交叉轴的重点(底部)对齐
				center:交叉轴的中点对齐
				baseline:项目的第一行文字的基线对齐
				stretch(默认值):如果项目没有设置宽高或则为auto,沾满这个容器的高度
		 */
		div.box{
    
			width: 1200px;
			height: 500px;
			border: 1px solid black;
			margin: 0 auto;
			/* 设置弹性盒子
				-webkit-谷歌内核
				-moz- 火狐
				-o- 欧鹏
				-ms- IE
				
			 */
			display: flex;
			display: -webkit-flex;
			flex-direction: column;
		}
		div.box>div{
    
			width: 380px;
			height: 480px;
			background: #ffaa00;
			margin: 10px;
		}
		</style>
	</head>
	<body>
		<div class="box">
			<div class="d1">1</div>
			<div class="d1">2</div>
			<div class="d1">3</div>
			<div class="d1">4</div>
			<!-- <div class="d1">5</div>
			<div class="d1">6</div>
			<div class="d1">7</div>
			<div class="d1">8</div>
			<div class="d1">9</div>
			<div class="d1">10</div> -->
		</div>
	</body>
</html>

image-20210722180825071

9.2.2.3.column-reverse:主轴为垂直方向,起点在下沿
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
		*{
    
			margin: 0;
			padding: 0;
		}
		/* 
		定义弹性盒子flex
		
		 容器的属性
			flex-direction 定义子项的顺序
				row(默认):起点在左边,水平排列
				row-reverse:主轴为水平方向,起点在右端
				column:垂直排列,起点在面
				column-reverse:垂直排列,起点下面
			
			flex-wrap:定义子项是否换行
				nowrap不换行
				wrap换行
				wrap-reverse换行(倒叙)
			
			flex-flow:flex-direction flex-wrap(是排列顺序列和换行的复合)
			
			justify-content定义子项目横向对齐方式(横轴)
				flex-start(默认值):左对齐
				flex-end:右对齐
				center:居中
				space-between:两端对齐,项目之间有间隔
				space-around:每个项目两侧的间隔相等。所有项目之间的间隔比项目与边框的间隔大一倍
			
			align-items:定义纵向的对齐方式(纵轴方向)
				flex-start:交叉轴的起点(顶部)对齐
				flex-end:交叉轴的重点(底部)对齐
				center:交叉轴的中点对齐
				baseline:项目的第一行文字的基线对齐
				stretch(默认值):如果项目没有设置宽高或则为auto,沾满这个容器的高度
		 */
		div.box{
    
			width: 1200px;
			height: 500px;
			border: 1px solid black;
			margin: 0 auto;
			/* 设置弹性盒子
				-webkit-谷歌内核
				-moz- 火狐
				-o- 欧鹏
				-ms- IE
				
			 */
			display: flex;
			display: -webkit-flex;
			flex-direction: column-reverse;
		}
		div.box>div{
    
			width: 380px;
			height: 480px;
			background: #ffaa00;
			margin: 10px;
		}
		</style>
	</head>
	<body>
		<div class="box">
			<div class="d1">1</div>
			<div class="d1">2</div>
			<div class="d1">3</div>
			<div class="d1">4</div>
			<!-- <div class="d1">5</div>
			<div class="d1">6</div>
			<div class="d1">7</div>
			<div class="d1">8</div>
			<div class="d1">9</div>
			<div class="d1">10</div> -->
		</div>
	</body>
</html>

image-20210722180848878

9.2.2flex-wrap 定义子项是否换行
flex-wrap:wrap换行
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
		*{
    
			margin: 0;
			padding: 0;
		}
		/* 
		定义弹性盒子flex
		
		 容器的属性
			flex-direction 定义子项的顺序
				row(默认):起点在左边,水平排列
				row-reverse:主轴为水平方向,起点在右端
				column:垂直排列,起点在面
				column-reverse:垂直排列,起点下面
			
			flex-wrap:定义子项是否换行
				nowrap不换行
				wrap换行
				wrap-reverse换行(倒叙)
			
			flex-flow:flex-direction flex-wrap(是排列顺序列和换行的复合)
			
			justify-content定义子项目横向对齐方式(横轴)
				flex-start(默认值):左对齐
				flex-end:右对齐
				center:居中
				space-between:两端对齐,项目之间有间隔
				space-around:每个项目两侧的间隔相等。所有项目之间的间隔比项目与边框的间隔大一倍
			
			align-items:定义纵向的对齐方式(纵轴方向)
				flex-start:交叉轴的起点(顶部)对齐
				flex-end:交叉轴的重点(底部)对齐
				center:交叉轴的中点对齐
				baseline:项目的第一行文字的基线对齐
				stretch(默认值):如果项目没有设置宽高或则为auto,沾满这个容器的高度
		 */
		div.box{
    
			width: 1200px;
			height: 500px;
			border: 1px solid black;
			margin: 0 auto;
			/* 设置弹性盒子
				-webkit-谷歌内核
				-moz- 火狐
				-o- 欧鹏
				-ms- IE
				
			 */
			display: flex;
			display: -webkit-flex;
			flex-wrap: wrap;
		}
		div.box>div{
    
			width: 280px;
			height: 220px;
			background: #ffaa00;
			margin: 10px;
		}
		</style>
	</head>
	<body>
		<div class="box">
			<div class="d1">1</div>
			<div class="d1">2</div>
			<div class="d1">3</div>
			<div class="d1">4</div>
			<div class="d1">5</div>
			<div class="d1">6</div>
		</div>
	</body>
</html>

image-20210722180904189

flex-wrap:wrap-reverse换行(倒叙)
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
		*{
    
			margin: 0;
			padding: 0;
		}
		/* 
		定义弹性盒子flex
		
		 容器的属性
			flex-direction 定义子项的顺序
				row(默认):起点在左边,水平排列
				row-reverse:主轴为水平方向,起点在右端
				column:垂直排列,起点在面
				column-reverse:垂直排列,起点下面
			
			flex-wrap:定义子项是否换行
				nowrap不换行
				wrap换行
				wrap-reverse换行(倒叙)
			
			flex-flow:flex-direction flex-wrap(是排列顺序列和换行的复合)
			
			justify-content定义子项目横向对齐方式(横轴)
				flex-start(默认值):左对齐
				flex-end:右对齐
				center:居中
				space-between:两端对齐,项目之间有间隔
				space-around:每个项目两侧的间隔相等。所有项目之间的间隔比项目与边框的间隔大一倍
			
			align-items:定义纵向的对齐方式(纵轴方向)
				flex-start:交叉轴的起点(顶部)对齐
				flex-end:交叉轴的重点(底部)对齐
				center:交叉轴的中点对齐
				baseline:项目的第一行文字的基线对齐
				stretch(默认值):如果项目没有设置宽高或则为auto,沾满这个容器的高度
		 */
		div.box{
    
			width: 1200px;
			height: 500px;
			border: 1px solid black;
			margin: 0 auto;
			/* 设置弹性盒子
				-webkit-谷歌内核
				-moz- 火狐
				-o- 欧鹏
				-ms- IE
				
			 */
			display: flex;
			display: -webkit-flex;
			flex-wrap: wrap-reverse;
		}
		div.box>div{
    
			width: 280px;
			height: 220px;
			background: #ffaa00;
			margin: 10px;
		}
		</style>
	</head>
	<body>
		<div class="box">
			<div class="d1">1</div>
			<div class="d1">2</div>
			<div class="d1">3</div>
			<div class="d1">4</div>
			<div class="d1">5</div>
			<div class="d1">6</div>
		</div>
	</body>
</html>

image-20210722180919514

9.2.3flex-flow:flex-direction flex-wrap

排列顺序列和换行的复合

9.2.4justify-content定义子项目横向对齐方式(横轴)
  • 1.flex-start(默认值):左对齐
  • 2.flex-end:右对齐
  • 3.center:居中
  • 4.space-between:两端对齐,项目之间有间隔
  • 5.space-around:每个项目两侧的间隔相等。所有项目之间的间隔比项目与边框的间隔大一倍
9.2.5align-items:定义纵向的对齐方式(纵轴方向)
1.flex-start:Y轴的起点(顶部)对齐
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
		*{
    
			margin: 0;
			padding: 0;
		}
		div.box{
    
			width: 1200px;
			height: 500px;
			border: 1px solid black;
			margin: 0 auto;
			display: flex;
			display: -webkit-flex;
			align-items: flex-start;
		}
		div.box>div{
    
			margin: 0px 10px;
		}
		div.box>div:nth-child(1){
    
			width: 280px;
			height: 200px;
			background: #aaff00;
		}
		div.box>div:nth-child(2){
    
			width: 280px;
			height: 100px;
			background: #aaff7f;
		}
		div.box>div:nth-child(3){
    
			width: 280px;
			height: 150px
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值