ss相信剛開(kāi)始學(xué)習(xí)開(kāi)發(fā)小程序的初學(xué)者一定對(duì)界面的布局很困擾,不知道怎么布局,怎么擺放位置,其原因是不了解CSS樣式的屬性,所以,今天代碼君打算寫(xiě)一篇關(guān)于CSS的教程,給大家普及一下。
說(shuō)起CSS布局,首先要講解的就是FLex布局,這個(gè)可以說(shuō)是一個(gè)萬(wàn)能鑰匙,遇到什么復(fù)雜的布局,都可以通過(guò)Flex布局搞定,為了方便大家理解Flex屬性,我將會(huì)一步步解析FLex的屬性,并附上效果圖
采用 Flex 布局的元素,稱為 Flex 容器(flex container),簡(jiǎn)稱"容器"。它的所有子元素自動(dòng)成為容器成員,稱為 Flex 項(xiàng)目(flex item),簡(jiǎn)稱"項(xiàng)目"。
Flex總共有6個(gè)屬性
flex-direction 設(shè)置排列方向
flex-wrap 內(nèi)容滿一行,是否換行
flex-flow flex-direction屬性和flex-wrap屬性的簡(jiǎn)寫(xiě)形式
justify-content 左右對(duì)齊方式
align-items 上下對(duì)齊方式
align-content 多行上下對(duì)齊方式
1. flex-direction屬性
flex-direction決定了item里面排列的方向,有下面四個(gè)屬性值
row(默認(rèn)值):橫向排序,從左邊起開(kāi)始排列item。
row-reverse:橫向排序,從右邊起開(kāi)始排列item。
column:縱向排列,從頂部開(kāi)始排列item。
column-reverse:縱向排列,從底部開(kāi)始排列item。
2.
flex-wrap屬性
默認(rèn)情況下,項(xiàng)目都排在一行上不換行,flex-wrap有三個(gè)屬性值
nowrap (默認(rèn))不換行
wrap 如果第一行滿了,換行
wrap-reverse 換行,第一行在下方
3. flex-flow屬性是flex-direction屬性和flex-wrap屬性的簡(jiǎn)寫(xiě)形式,這里不建議使用,就不介紹了
4.
justify-content屬性
justify-content用來(lái)定義item 左右對(duì)齊的方式,有以下五種
flex-start(默認(rèn)值):左對(duì)齊
flex-end:右對(duì)齊
center: 居中
space-between:等距對(duì)齊,兩端對(duì)齊,item之間的間隔都相等。
space-around:每個(gè)item兩側(cè)的間隔相等。所以,item之間的間隔比item與邊框的間隔大一倍。
5.
align-items屬性
align-items用來(lái)定義item上下對(duì)齊的方式,也有五種
flex-start:向上對(duì)齊
flex-end:向下對(duì)齊。
center:居中。
baseline: item的第一行文字的基線對(duì)齊。
stretch(默認(rèn)值):如果item未設(shè)置高度或設(shè)為auto,將占滿整個(gè)容器的高度。
6.
align-content屬性
align-content是多行對(duì)齊方式,如果只有把一行,此屬性不起作用
flex-start:向上對(duì)齊。
flex-end:向下對(duì)齊。
center:居中。
space-between:等距對(duì)齊,兩端對(duì)齊,item之間的間隔都相等。
space-around:每個(gè)item兩側(cè)的間隔相等。所以,item之間的間隔比item與邊框的間隔大一倍。
stretch(默認(rèn)值):所有item占滿整個(gè)容器。
7. 擴(kuò)展:如果想對(duì)容器內(nèi)的item按比例劃分的話,可以用flex-grow屬性,賦值就是該item占一行的比例
初始代碼
<!--index.wxml-->
<view class="container">
<view class="item">
v1
</view>
<view class="item">
v2
</view>
<view class="item">
v3
</view>
</view>
/**index.wxss**/
.container {
height: 1000rpx;
width: 100%;
background-color: rgb(13, 134, 78);
display: flex;
}
.item {
height: 100rpx;
width: 100rpx;
border: 5rpx solid #fff;
}
上圖為初始效果圖,因?yàn)? flex-direction默認(rèn)為row,所以剛開(kāi)始會(huì)橫向排列,如果要縱向排列加入flex-direction設(shè)置為column即可
/**index.wxss**/
.container {
height: 1000rpx;
width: 100%;
background-color: rgb(13, 134, 78);
display: flex;
/* 改動(dòng)的代碼 */
flex-direction: column;
}
改過(guò)屬性的效果圖如上,剩下的兩個(gè)屬性就不演示了,接下來(lái)試一下justify-content左右對(duì)齊方式,我們就實(shí)現(xiàn)一下等距對(duì)齊方式吧
/**index.wxss**/
.container {
height: 1000rpx;
width: 100%;
background-color: rgb(13, 134, 78);
display: flex;
/* 改動(dòng)的代碼 */
flex-direction: row;
justify-content: space-between;
}
ok,接下來(lái)是上下對(duì)齊,align-items這個(gè)里面有一個(gè)和左右對(duì)齊不一樣的,就是根據(jù)內(nèi)容文字對(duì)齊baseline,讓我們看一下效果是什么樣的,為了有對(duì)比性,我把文字的高度設(shè)置的不一樣
/**index.wxss**/
.container {
height: 1000rpx;
width: 100%;
background-color: rgb(13, 134, 78);
display: flex;
/* 改動(dòng)的代碼 */
flex-direction: row;
justify-content: space-between;
align-items: baseline;
}
.item {
height: 100rpx;
width: 100rpx;
border: 5rpx solid #fff;
}
.item2 {
height: 100rpx;
width: 100rpx;
border: 5rpx solid #fff;
padding-top: 20rpx;
}
看到了吧,這個(gè)屬性就是根據(jù)第一行文字為基線對(duì)齊的,因?yàn)榈诙€(gè)view字位置和其他不一樣,所以整體往上移動(dòng)了,最后一個(gè),實(shí)現(xiàn)以下等比劃分item,用到的屬性是flex-grow,這個(gè)屬性需要設(shè)置在item里面才可以
/**index.wxss**/
.container {
height: 1000rpx;
width: 100%;
background-color: rgb(13, 134, 78);
display: flex;
/* 改動(dòng)的代碼 */
flex-direction: row;
justify-content: space-between;
align-items: baseline;
}
.item {
height: 100rpx;
width: 100rpx;
border: 5rpx solid #fff;
/*占比1*/
flex-grow: 1;
}
.item2 {
height: 100rpx;
width: 100rpx;
border: 5rpx solid #fff;
/*占比1*/
flex-grow: 1;
}
好了,這些就是Flex的全部屬性,最后告訴一下讀者,不要只看文章,一定要跟著教程,去實(shí)戰(zhàn)一下,只有這樣,才可以對(duì)屬性了解透徹,如果你掌握這些,相信市面上的小程序基礎(chǔ)布局,你都可以實(shí)現(xiàn)的。