flex 伸缩布局:

27 篇文章 0 订阅

伸缩布局
传统的布局方案,基于盒状模型,依赖display+position+float属性。它对于那些特殊布局非常不方便,
重要属性:
display:flex 如果一个容器设置了这个属性,那么这个盒子里面的所有直接元素都会自动变成伸缩项flex
justify-content:
设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式。
语法:justify-content:flex-start|flex-end|center|space-between|space-around

设置子元素的排列方式:调整内容
flex-start:从左到右排列
flex-end:从父容器右边到左边
center:让子元素从父元素的中间位置开始排列
space-between:左右与父容器的左右对齐,中间产生同等的间距
space-around:将多余的空间,平均的分在每个子元素的两边,类似magin + auto


伸缩盒子的属性flex-flow:
flex属性是flex-grow,flex-shrink,flex-basis的简写,默认值是0 1 auto。
语法:flex:[flex-grow][flex-shrink][flex-basis]大多数情况下没必要用这种方法,都使用flex缩写。
flex:[number]这个语法制定了一个数字,代表了这个伸缩项目该占用的剩余空间比例。
flex:auto 属性值设为suto的伸缩项目,会根据主轴自动伸缩以自用所有剩余空间。

=============================

等比扩张grow, 收缩比例shrink。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>扩张比例grow和 收缩比例shrink</title>
		<style>
			* {
				padding: 0;
				margin: 0;
			}
			.box {
				width: 500px;
				height: 600px;
				border: 1px solid red;
				margin: 0 auto;
				/* 设置父容器为盒子,会使每一个子元素自动变成收缩项
				 当子元素的宽度和大于父容器宽度的适合,子元素会自动平均收缩。*/
				display: flex;
				/* 设置子元素的主轴方向上的排列方式 */
				justify-content: space-around;
				
			}

			.first {
				width: 200px;
				height: 200px;
				background-color: red;
				/* flex-grow:扩展子元素的宽度, 类似安卓LinearLayout的layout_weight属性 
				设置当前元素应该占据剩余空间的比例值,默认值0 */
				/* flex-grow: 1; */
				/* flex-shrink:定义收缩比例(不够空间的分配比例),通过设置的值来计算收缩空间,默认值1。 
				空间不够,不够的那一部分。由每个子元素来平摊。
				eg:
				当值为1:0:0,就是第一个元素占据所有的收缩空间,最后div显示宽度分别为100-200-200。
				当值为0:0:0,就都不做不够空间的分配,最后可能会溢出。
				当值是2:1:1,div显示宽度是150-175-175
				比例值计算:当前空间flex-shrink/所有兄弟元素的flex-shrink的和*/
				flex-shrink: 2;
			}
			.second {
				width: 200px;
				height: 200px;
				background-color: #006400;
				/* flex-grow: 0; */
				flex-shrink: 1;
			}
			.third {
				width: 200px;
				height: 200px;
				background-color: yellow;
				flex-shrink: 1;
			}
		</style>
	</head>
	<body>
		<div class="box">
			<div class="first"></div>
			<div class="second"></div>
			<div class="third"></div>
		</div>
	</body>
</html>

=======================

flex:1比4划分区域,类似使用百分比,划分div占用的宽度。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>flex:1比4划分区域</title>
		<style>
			*{margin: 0;padding: 0;}
			.box{
				width: 100%;
				height: 500px;
				background-color: #CCCCCC;
				margin: 0 auto;
				/* 设置父容器为伸缩盒子 */
				display: flex;
				/* 设置子元素在主轴方向上排列方式 */
				/* justify-content: flex-start; */
			}
			.left{
				flex: 1;
				background-color: yellowgreen;
			}.right{
				flex: 4;
				background-color: pink;
			}
		</style>
	</head>
	<body>
		<div class="box">
			<div class="left"></div>
			<div class="right"></div>
		</div>
	</body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面我们来看一些Flex布局的实例。 ## 实例一:水平居中 让一个元素在父容器中水平居中,可以使用以下方法: ```html <div class="container"> <div class="box">Hello World</div> </div> ``` ```css .container { display: flex; justify-content: center; align-items: center; height: 100vh; } .box { background-color: #ccc; padding: 20px; } ``` 解释: - `display: flex;`设置容器为Flex布局。 - `justify-content: center;`将子元素水平居中。 - `align-items: center;`将子元素垂直居中。 - `height: 100vh;`设置容器高度为100vh,保证子元素在垂直方向上居中。 ## 实例二:等分布局 让多个元素等分布局可以使用以下方法: ```html <div class="container"> <div class="box">1</div> <div class="box">2</div> <div class="box">3</div> </div> ``` ```css .container { display: flex; justify-content: space-between; } .box { flex: 1; background-color: #ccc; padding: 20px; margin: 0 10px; } ``` 解释: - `display: flex;`设置容器为Flex布局。 - `justify-content: space-between;`将子元素等间距排列。 - `flex: 1;`将子元素等分布局。 ## 实例三:垂直居中 让一个元素在父容器中垂直居中,可以使用以下方法: ```html <div class="container"> <div class="box">Hello World</div> </div> ``` ```css .container { display: flex; justify-content: center; align-items: center; height: 100vh; } .box { background-color: #ccc; padding: 20px; margin: auto; } ``` 解释: - `display: flex;`设置容器为Flex布局。 - `justify-content: center;`将子元素水平居中。 - `align-items: center;`将子元素垂直居中。 - `height: 100vh;`设置容器高度为100vh,保证子元素在垂直方向上居中。 - `margin: auto;`使元素在水平方向上居中。 ## 实例四:项目排序 使用Flex布局可以很方便地对项目进行排序,例如: ```html <div class="container"> <div class="box">1</div> <div class="box">2</div> <div class="box">3</div> <div class="box">4</div> <div class="box">5</div> </div> ``` ```css .container { display: flex; flex-wrap: wrap; } .box { flex: 1 0 200px; height: 100px; background-color: #ccc; margin: 10px; display: flex; justify-content: center; align-items: center; font-size: 24px; color: #fff; text-shadow: 1px 1px #000; } .box:nth-child(1) { order: 3; } .box:nth-child(2) { order: 1; } .box:nth-child(3) { order: 4; } .box:nth-child(4) { order: 2; } .box:nth-child(5) { order: 5; } ``` 解释: - `display: flex;`设置容器为Flex布局。 - `flex-wrap: wrap;`设置弹性容器的子元素在一行排不下时,自动换行。 - `flex: 1 0 200px;`设置子元素伸缩比例为1,基准大小为0,最大值为200px。 - `margin: 10px;`设置子元素的外边距为10px。 - `order:`设置子元素的显示顺序。 以上就是一些Flex布局的实例,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值