CSS 之flex布局(二)

59 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情

实现布局方式

css的布局方式有很多,传统布局方式以前我们用的有如下: 首先是定位布局,关键词: position: fixed;固定布局,将元素固定在一个位置,不随页面移动而移动,

position: relative;相对定位,相对于元素自身定位,不脱离文档流,相当于定义一个参照物,一般和绝对定位结合使用。

position: absolute;绝对定位,脱离文档流,一般和相对定位结合使用,如果不定义相对定义,将会相对于整个浏览器定位,所以定位布局,一般情况下都是相对定位和绝对定位结合着来,相当定位相当于划定一个势力范围,制定一个封闭的容器块,然后绝对定位就行对于相对定位来定位,从而达到有效的布局。

下面我们主要讲述flex布局的实现方式。

实现2个子元素,第一个放满,第二个占满剩下的布局效果

image.png 对应的布局为

                <view class="v-flex">
			<view class="v-box-left">这是左边的元素 </view>
			<view class="v-box-right">这是右边的元素</view>
			
		</view>

	.v-flex{
		display: flex;
		flex-direction: row;		
		
	}
	.v-box-left{
		background-color: green;
		padding: 20rpx;
		color: wheat;
	}
	.v-box-right{
		background-color: red;
		padding: 20rpx;
		flex: 1;
		
	}
		

即哪个元素需要占满剩下的空间,就把对应的容器设置为flex为1。

实现2个子元素左右排列,布局平均分

image.png

            .v-flex-2{
		display: flex;
		flex-direction: row;
		justify-content: space-around;
		margin-top: 50rpx;
		.v-box-left-2{
			background-color: green;
			padding: 20rpx;
			color: wheat;
			flex: 1;
		}
		.v-box-right-2{
			background-color: red;
			padding: 20rpx;
			flex: 1;
			text-align: end;
			
		}
	}

这种布局就是需要设置justify-content: space-around,然后给子容器在设置一个flex:1 就能实现这样的效果了。

常用的一个居中效果

image.png 用flex实现的方式为

.v-center{
		display: flex;
		justify-content: center;
		align-items: center;
		width: 400rpx;
		height: 400rpx;
		color: wheat;
		background-color: greenyellow;
	}

把justify-content: center;align-items: center;都设置出来就能达到这样的需求。

子容器横向排列,超过就换行

image.png 如图所示,可能存在很多子容器,我们需要设置超过一行就换行展示

    		<view class="v-flex-wrap">
			
			<view v-for="(item,index) in 20" :key="index" class="v-box">横向排列{{index}}</view>
		</view>
	.v-flex-wrap{
		display: flex;
		flex-direction: row;
		flex-wrap: wrap;
		margin-top: 50rpx;
		.v-box{
			background-color: red;
			width: 200rpx;
			height: 100rpx;
			color: white;
			margin-top: 20rpx;
			margin-left: 20rpx;
			
		}
	}

这种实现利用flex布局 的方式就非常容易实现。

总结

flex的布局还远不致于此,更多的好的效果需要在我们实际开发中去寻找,去发现。我目前能想到的一些常用的效果大概就是以上这些了。偶尔还需要flex布局结合绝对布局、相对布局去实现一些效果。