Flex 缩放

视频教程

Flex 竖向

在 flex 主轴方向不换行布局时,我们可以通过内部布局元素的缩放属性来控制他们占据的空间,控制元素缩放在日常布局中是一个必备的技能。

flex-grow

flex-grow 属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。

如果所有项目的 flex-grow 属性都为 1,则它们将等分剩余空间(如果有的话)。

如果一个项目的 flex-grow 属性为 2,其他项目都为 1,则前者占据的剩余空间将比其他项多一倍。

示例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<div class="flexBox">
	<div class="item">项目1</div>
	<div class="item" style="flex-grow:1;">项目2</div>
	<div class="item" style="flex-grow:2;">项目3</div>
</div>
<style type="text/css">
.flexBox{
	display:flex; 
	flex-direction:row; 
	width:900px; 
	background:#F8F8F8; 
	padding:10px; 
	box-sizing:border-box;
	justify-content:space-between;
}
.item{
	background-color:aquamarine; 
	width:100px; height:100px; 
	text-align:center; 
	line-height:100px;
	margin:8px;
}
</style>
</body>
</html>

flex-shrink

flex-shrink 属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。如果设置此属性为 0 代表元素不会被缩小。

示例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<div class="flexBox">
	<div class="item" style="flex-shrink:0;">项目1</div>
	<div class="item">项目2</div>
	<div class="item">项目3</div>
	<div class="item">项目3</div>
</div>
<style type="text/css">
.flexBox{
	display:flex; 
	flex-direction:row; 
	width:900px; 
	background:#F8F8F8; 
	padding:10px; 
	box-sizing:border-box;
	justify-content:space-between;
}
.item{
	background-color:aquamarine; 
	width:300px; height:100px; 
	text-align:center; 
	line-height:100px;
	margin:8px;
}
</style>
</body>
</html>

flex-basis

flex-basis 属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为 auto,即项目的本来大小。

.item {flex-basis: <length> | auto; /* default auto */}

它可以设为跟 width 或 height 属性一样的值(比如500px),则项目将占据固定空间。

flex

flex 属性是 flex-grow, flex-shrink 和 flex-basis 的简写,默认值为 0 1 auto,后两个属性可选。

如 :

.flexDemo{flex:0 0 auto;}