移动端开发必备模块-flex布局

需求背景

为解决 移动端 开发中

  1. 特殊布局
  2. 盒子内元素 垂直居中

的疑难问题,引入弹性盒布局模型,目的是提供一种更加有效的方式来对一个容器中的子元素进行排列、对齐和分配空白空间

一、Flex布局是什么

Flex 是 Flexible Box 的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。
任何一个容器都可以指定为 Flex 布局。父级元素设定flex布局后,子元素 的float、clear、vertical-align属性将会全部失效。
采用 Flex 布局的元素,称为 Flex 容器(flex container),简称”容器”。它的所有子元素称为 Flex 项目(flex item),简称”项目”。

总结原理:
通过给父级盒子添加flex元素,来控制子盒子的位置和排列方式

二、 父级常见属性

1. flex-direction属性 主轴方向
2. justify-content属性 主轴上子元素排列方式
3. flex-wrap属性 子元素是否换行
4. align-content属性 侧轴上子元素排列方式(多行)
5. align-items属性 侧轴上子元素排列方式(单行)
6. flex-flow属性 复合属性,相当同时设置1、3

2.1 flex-direction属性

默认主轴方向是x轴方向,水平向右
默认侧轴方向是y轴方向,水平向左

属性值说明
row水平,从左到右,默认值
row-reverse水平,从右到左
column垂直,从上到下
column-reverse垂直, 从下到上

2.2 justify-content属性 主轴上子元素排列方式

首先确定好主轴方向是哪一个

属性值说明
flex-start从头部开始,若主轴是x轴,从左到右,默认值
flex-end从尾部开始排列
center在主轴居中对齐,若主轴是x轴,则水平居中
space-around每一个子盒子平分剩余空间
space-between先两边贴边,在平分剩余空间

注意!
水平方向上,
justify-content:flex-end是贴着右边布局,顺序不反转,1234 =>>1234”
flex-direction:row-reverse是反转顺序,1234 =>> 4321

2.3 flex-wrap属性 子元素是否换行

属性值说明
nowrap不换行,可能会缩小子盒子宽或者高属性,默认值
wrap换行
wrap-reverse换行,子盒子顺序会相反

2.4 align-content属性 侧轴上子元素排列方式(多行)

多行与否看的是wrap 的值

属性值说明
flex-start在侧轴上从头部开始,默认值
flex-end在侧轴上从尾部开始
center在侧轴中间显示
space-around子元素在侧轴均分剩下元素
space-between子元素在侧轴先分布在两头,在均分剩下元素
stretch拉伸

2.5 align-items属性 侧轴上子元素排列方式(单行)

属性值说明
flex-start从头部开始,当x轴是主轴时,从上到下,默认值
flex-end从尾部开始, 当x轴是主轴时,从下到上
center垂直居中
stretch拉伸,x轴为主轴时候不要设置高度,y轴为主轴时候不要设置宽度

2.6 flex-flow属性 复合属性,相当同时设置1、3

三、子集常见元素

3.1 flex属性

flex属性定义子项目分配剩余空间,用flex来表示占多少份数

3.2 常见分配方式整理

常见分配方式1,顶部导航栏式

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			section{
				display: flex;
				width: 60%;
				height: 150px;
				margin: 0 auto;
				background-color: antiquewhite;
			}
			section div:nth-child(1){
				width: 100px;
				height: 150px;
				margin: 0 10px;
				background-color: aqua;
			}
			section div:nth-child(2){
				flex: 1;
				background-color: #00FFFF;
			}
			section div:nth-child(3){
				width: 100px;
				height: 150px;
				margin: 0 10px;
				background-color: aqua;
			}
		</style>
	</head>
	<body>
		<section>
			<div></div>
			<div></div>
			<div></div>
		</section>
	</body>
</html>

在这里插入图片描述

常见分配方式2,五等均分

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			section{
				display: flex;
				width: 60%;
				height: 150px;
				margin: 0 auto;
				background-color: antiquewhite;
			}
			div {
				flex: 1;
				background-color: aqua;
				margin: 10px;
			}
		</style>
	</head>
	<body>
		<section>
			<div>1</div>
			<div>2</div>
			<div>3</div>
			<div>4</div>
			<div>5</div>
		</section>
	</body>
</html>

在这里插入图片描述

常见分配方式3,7/3分配

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			section{
				display: flex;
				width: 60%;
				height: 150px;
				margin: 0 auto;
				background-color: antiquewhite;
			}
			
			div:nth-child(1){
				flex: 7;
				background-color: aqua;
				margin: 10px;
			}
			div:nth-child(2){
				flex: 3;
				background-color: aqua;
				margin: 10px;
			}
		</style>
	</head>
	<body>
		<section>
			<div>7</div>
			<div>3</div>
		</section>
	</body>
</html>

在这里插入图片描述

Flex布局是一种用来为盒状模型提供最大灵活性的布局方式。它是移动端开发中非常重要的布局方式,被广泛应用于80%以上的移动端开发中。与rem媒体查询结合使用,可以说是移动端开发的主流布局方式。 Flex布局的原理是通过给父容器添加flex属性来控制子项目的位置和排列方式。当我们将父容器设置为flex布局后,子元素的float、clear和vertical-align属性将失效。Flex容器中的子元素自动成为容器成员,称为Flex项目。 要实现Flex布局,只需要为父容器添加display:flex;属性即可。通过设置不同的flex属性值,可以实现不同的布局效果。例如,设置flex-direction: row;可以使子项目横向排列,而设置flex-direction: column;则可以使子项目纵向排列。 总之,Flex布局是一种弹性的、灵活的布局方式,适用于移动端开发,并可以与rem媒体查询结合使用,是移动端开发中的主流布局方式。它通过给父容器添加flex属性来控制子项目的位置和排列方式,为开发者提供了更大的布局自由度。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [移动端flex布局](https://blog.csdn.net/yexiangCSDN/article/details/116591641)[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_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值