flex布局总结

1.简述:

(1)什么是flex布局

flex布局是页面布局的一种形式,为布局而生,非常灵活,是目前最常用的布局写法

(2)适用范围

  • 任何一个容器都可以指定为flex布局
  • 父元素使用flex布局后,子元素的float、clear、vertical-align都将失效

2.定义弹性盒模型

<style type="text/css">
		.item{
			text-align: center;
			line-height: 100px;
		}
		.one,.two{
			background-color:red;
			width:200px;
			height: 100px;
			margin: 30px;
		}
	</style>
	<body>
		<div class="item">
			<div class="one">1</div>
			<div class="two">2</div>
		</div>

只要给父元素设置display:flex,即可让两个盒子在一行显示

		.item{
			display: flex;
			text-align: center;
			line-height: 100px;
		}

3.弹性盒模型中的容器属性

  1. flex-direction
  2. flex-wrap
  3. flex-flow
  4. justify-content
  5. align-items:定义项目在Y轴上的对齐方式
  6. align-content:定义多行主轴对齐方式(如果只有一行主轴,该属性不起作用)

(1)flex-direction:设置容器内元素的排列方向

  • row:弹性盒按x轴方向排列(默认值)
  • row-reverse:按x轴方向逆序排列
  • column:弹性盒按y轴方向排列
  • column-reverse:按y轴方向逆序排列
row 效果图
row-reverse 效果图
column 效果图
column-reverse 效果图

(2)flex-wrap:设置弹性盒换行方式

当设置 flex-wrap:wrap 时,可通过缩小、扩展浏览器页面查看换行状态。

如果一行承载不下则自动换行,当浏览器足够承载盒子宽度时换行则无效

  • nowrap:不换行(默认值)会压缩宽度
  • wrap:换行
  • wrap-reverse:换行,反转排列

nowrap 效果
wrap-reverse 效果
wrap 效果

(3)flex-flow:是flex-direction和flex-wrap的简写,默认为"flex-flow:row nowrap" 

(4) justify-content:项目在X轴方向上的对齐方式

  • flex-start:左对齐(默认值)
  • flex-end:右对齐
  • center:居中对齐
  • space-between:两端对齐,每个盒子间隔相等,靠着容器壁,平分剩余空间
  • space-around:每个盒子两侧间隔相等,因此两个盒子间的距离是盒子与左右项目边框距离的二倍,不靠容器壁

总结: space-between 与 space-around 都可以实现盒子等距布满屏幕(等距分布);

space-between 是单纯等距分布、平分剩余空间的概念;

space-around 在此基础上...存在两个盒子的间距以及跟边框距离的倍数关系;

flex-start 效果图
flex-end 效果图
center 效果图

space-between 效果图
space-around 效果图

 (5) align-items:项目在y轴方向上的对齐方式

注意!!定义项目在垂直(y轴)方向上的对齐方式,首先要确保其父级元素有height值【父级元素有高度】 

  • flex-star:上对齐
  • flex-end:下对齐
  • center:垂直居中对齐 
  • baseline:项目的第一行文字的基线对齐
  • stretch:如果项目未设置高度或高度为auto,将占满整个容器的高度
flex-star 效果图
flex-end 效果图

center 效果图
baseline 效果图

stretch 效果图

 (6) align-content:定义多行主轴的对齐方式,如果项目只有一行主轴,则该属性不起作用;与 justify-content 有着相同属性,但多行主轴会涉及垂直的距离——与align-items类似(更像是二者的结合版)

  • flex-start:每一行左、顶对齐(默认值)
  • flex-end:每一行左、底对齐
  • center:垂直居中对齐
  • space-between:上下两端对齐,紧挨上下容器壁,平分剩余垂直空间
  • space-around:每个盒子上下间隔相等,因此上下两个盒子间的距离是与上下容器壁距离的二倍,不紧靠上下容器壁
  • stretch:轴线占满整个高度 (子项目未定义高度、父级有准确高度时,子元素则自动伸展填满父级高度)

flex-start 效果图
flex-end 效果图
center 效果图
space-between 效果图
space-around 效果图
stretch 效果图

附上代码,可修改属性自己测试效果 ......

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>flex弹性盒布局</title>
	</head>
	<style type="text/css">
		body{
			background-color:#f5f5f5;
		}
		/* .yyy{
			width:100%;
			height:700px;
			background-color:gray;
			
		} */
		.item{
			width:100%;
			/* height:500px; */
			background-color:grey;
			display: flex;
			flex-direction:row;
			flex-wrap: wrap;
			font-size: 20px;
			align-content:flex-end;
			
		}
		.one,.two{
			background-color:bisque;
			width:200px;
			/* height:100px; */
 			/* margin:0 30px 0 0; */
			
		}
		.two{
			background-color:gold
		}
	</style>
	<body>
		<div class="yyy">
			<div class="item">
				<div class="one">1</div>
				<div class="two">2</div>
				<div class="one">3</div>
				<div class="two">4</div>
				<div class="one">5</div>
				<div class="two">6</div>
				<div class="one">7</div>
			</div>
		</div>
	</body>
</html>

4.弹性盒模型中子元素的属性

  1. order
  2. flex-grow
  3. flex-shrink
  4. flex-basis
  5. flex
  6. align-self
 (1)order: 定义项目的排列顺序;
                       1.1 数值越小,排列越靠前;
                       1.2 可以为负数,默认值为0;

		.one{
			order:1;
		}
		.two{
			order: 2;
		}
		.three{
			order: -1;
		}
		.four{
			
			
		}
		.five{

		}

 

 (2)flex-grow:当父级元素存在剩余空间的时候,定义项目在父级元素中的放大倍数
  • 放大倍数默认为0,即使存在剩余空间,也不放大;
  • 如果项目 flex-grow 的值都为1,则等分剩余空间;
  • 如果一个项目的 flex-grow 值为2,其他项目的 flex-grow 都为1,则前者占据的剩余空间是后者的二倍;
.one{
			flex-grow:1;
		}
		.two{
			flex-grow:1;
		}
		.three{
			flex-grow:1;
		}
		.four{
			flex-grow:1;
			
		}
		.five{
			flex-grow:1;
		}
flex-grow 的值都为1,则等分剩余空间

		.one{
			background-color: #fff;
			flex-grow:0;
		}
		.two{
			background-color: aquamarine;
			flex-grow:1;
		}
		.three{
			background-color: #fff;
			flex-grow:2;
		}
		.four{
			background-color: aquamarine;
			flex-grow:3;
			
		}
		.five{
			background-color: #fff;
			flex-grow:4;
		}

(3)flex-shrink 当所有项目的默认宽度之和大于容器时,定义项目的缩小比例
  • number值不能为负;
  • 默认值为1,如果空间不足,项目则缩小;
  • 如果项目的 flex-shrink 值都为1,空间不足时它们都将等比例缩小;
  • 如果一个项目的 flex-shrink 为0,其他项目的 flex-shrink 都为1,则当空间不足时前者不缩小,后者等比例缩小;
		.one{
			background-color: #fff;
			flex-shrink: 0;
		}
		.two{
			background-color: aquamarine;
			flex-shrink: 1;
		}
		.three{
			background-color: #fff;
			flex-shrink: 1;
		}
		.four{
			background-color: aquamarine;
			flex-shrink: 1;
			
		}
		.five{
			background-color: #fff;
			flex-shrink: 1;
		}

一个项目的 flex-shrink 为0,其他都为1,前者不缩小,后者等比例缩小
(4)flex是 flex-grow属性、flex-shrink属性、flex-basis属性的简写。默认值为:0 1 auto

(5)align-self属性表示当前项目可以和其他项目拥有不一样的对齐方式,有六个可设定的值。默认值为auto (和父元素align-self的值一致)

用法与 align-content 一致

  • flex-start:每一行左、顶对齐(默认值)
  • flex-end:每一行左、底对齐
  • center:垂直居中对齐
  • space-between:上下两端对齐,紧挨上下容器壁,平分剩余垂直空间
  • space-around:每个盒子上下间隔相等,因此上下两个盒子间的距离是与上下容器壁距离的二倍,不紧靠上下容器壁
  • stretch:轴线占满整个高度 (子项目未定义高度、父级有准确高度时,子元素则自动伸展填满父级高度)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Flex布局,也称为弹性布局,是一种浏览器提倡的布局模型。它的特点是可以更简单、灵活地布局网页,避免了浮动脱标的问题。通过使用Flex布局,我们可以精确灵活地控制块级盒子的布局方式,避免浮动布局中脱离文档流现象的发生。Flex布局非常适合用于结构化布局。 Flex布局的设置方式是在父元素上添加`display: flex`,这样子元素就可以自动地被挤压或拉伸。Flex布局由弹性容器、弹性盒子、主轴、侧轴/交叉轴组成。 在Flex布局中,`flex`属性是`flex-grow`、`flex-shrink`和`flex-basis`三个属性的简写,默认值为`0 1 auto`。其中`flex-grow`表示弹性元素的放大比例,`flex-shrink`表示弹性元素的缩小比例,`flex-basis`表示弹性元素的初始大小。 除了`flex`属性,还有一些其他的属性可以用来设置Flex布局,这些属性设置在容器上,包括`flex-direction`、`flex-wrap`、`flex-flow`、`justify-content`、`align-items`和`align-content`等属性,用来控制弹性容器和弹性盒子的布局方式。 总结来说,Flex布局是一种简单、灵活的布局模型,通过使用弹性容器和弹性盒子,可以精确控制块级盒子的布局方式,避免了浮动布局中的问题。使用Flex布局可以使网页的布局更加简单、灵活,适用于结构化布局。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Flex布局(弹性布局)-图文介绍](https://blog.csdn.net/qq_52031408/article/details/124053711)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [flex弹性布局](https://blog.csdn.net/m0_48958478/article/details/125508280)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值