day02-微信小程序基礎(chǔ)(wxml+wxss)

WXSS語法
WXSS和CSS:

WXSS(WeiXin Style Sheets) 具有 CSS 大部分特性。同時(shí)為了更適合開發(fā)微信小程序, WXSS 對 CSS 進(jìn)行了擴(kuò)充以及修
改。主要體現(xiàn)在兩個(gè)方面:

  1. 尺寸單位。
  2. 樣式導(dǎo)入。
rpx尺寸單位:

可以根據(jù)屏幕寬度進(jìn)行自適應(yīng)。規(guī)定屏幕寬為 750rpx 篇恒。如在 iPhone6 上,屏幕寬度為 375px 凶杖,共有 750個(gè)物理像素 胁艰,則 750rpx = 375px = 750物理像素 , 1rpx = 0.5px = 1物理像素 官卡。

image.png

樣式導(dǎo)入:
使用@import語句可以導(dǎo)入外聯(lián)樣式表蝗茁, @import 后跟需要導(dǎo)入的外聯(lián)樣式表的相對路徑,用 ; 表示語句結(jié)束寻咒。示
例代碼如下:

/** common.wxss **/
.small-p {
padding:5px;
}
/** app.wxss **/
@import "common.wxss";
.middle-p {
padding:15px;
}

微信官方文檔請參考:https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxss.html

flex布局:

flex 布局是繼 標(biāo)準(zhǔn)流布局 哮翘、 浮動布局 、 定位布局 后的第四種布局方式毛秘。這種方式可以非常優(yōu)雅的實(shí)現(xiàn)子元素居中或
均勻分布饭寺,甚至可以隨著窗口縮放自動適應(yīng)阻课。 flex 布局在瀏覽器中存在一定的兼容性(具體參
考: https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes#%E6%B5%8F%E8%A7%88%E5%99%A8%E5%85%BC%E5%AE%B9%E6%80%A7
)。但是在小程序中艰匙,是完全兼容 flex 布局的限煞,并且微信官方也是推薦使用 flex 布局的。下面就來詳細(xì)的講下 flex 布局:
一個(gè)小例子:
看以下代碼:

<view class='outter'>
<view class='inner'>1</view>
<view class='inner'>2</view>
</view>

.outter{
display: flex;
justify-content: space-between;
width: 300px;
height: 200px;
background: pink;
}
.outter .inner{
background: gray;
width: 100px;
height: 100px;
}
image.png

基本概念:


image.png
  1. 彈性容器:包含著彈性項(xiàng)目的父元素员凝。通過設(shè)置 display 屬性的值為 flex 或 inline-flex 來定義彈性容器署驻。
  2. 彈性項(xiàng)目(Flex item):彈性容器的每個(gè)子元素都稱為彈性項(xiàng)目叶圃。彈性容器直接包含的文本將被包覆成匿名彈性
    項(xiàng)目历恐。也可以稱為子容器。
  3. 軸(Axis):每個(gè)彈性框布局包含兩個(gè)軸肠缔。彈性項(xiàng)目沿其依次排列的那根軸稱為主軸(main axis)糖埋。垂直于主軸的
    那根軸稱為側(cè)軸(cross axis)宣吱。
  4. 方向(Direction):可以通過 flex-direction 來確定主軸和側(cè)軸的方向。
設(shè)置在主軸上的排列方式(justify-content):

默認(rèn)情況下瞳别,主軸的方向是從左到右征候。在主軸方向上,可以通過 justify-content 屬性來設(shè)置他們的排列方式祟敛。排列
方式有以下幾種:

  • 1.flex-start :項(xiàng)目靠近父盒子的左側(cè)疤坝。默認(rèn)采用的就是這種排列方式。示例圖如下:


    image.png
  • 2.flex-end :項(xiàng)目靠近父盒子的右側(cè):


    image.png
  • 3.center :所有項(xiàng)目會挨在一起在父盒子的中間位置:


    image.png
  • 4.space-around :項(xiàng)目沿主軸均勻分布馆铁,位于首尾兩端的子容器到父容器的距離是子容器間距的一半卒煞。


    image.png
  • 5.space-between :項(xiàng)目沿主軸均勻分布,位于首尾兩端的子容器與父容器緊緊挨著叼架。


    image.png
  • 6.space-evenly :項(xiàng)目在主軸上均勻分布,收尾兩端的自容器到父容器的距離跟自容器間的間距是一樣的衣撬。


    image.png

設(shè)置在側(cè)軸上的排列方式( align-items ):

默認(rèn)情況下乖订,側(cè)軸的方向是從上到下。在側(cè)軸方向上具练,可以通過 align-items 屬性來設(shè)置他們的排列方式乍构。排列方
式有以下幾種:

  • 1.flex-start :起始端對齊。默認(rèn)就是這種對齊方式扛点。


    image.png
  • 2.flex-end :末尾段對齊


    image.png
  • 3.center :中間對齊哥遮。


    image.png
  • 4.stretch :如果項(xiàng)目沒有設(shè)置高度。那么子容器沿交叉軸方向的尺寸拉伸至與父容器一致陵究。比如我們
    將 .inner 的高度屬性去掉眠饮,代碼如下:
.outter .inner{
background: gray;
width: 100px;
/* height: 100px; */
border: 1px solid #ccc;
}

效果圖為:


image.png
  • 5.baseline :基線對齊,這里的 baseline 默認(rèn)是指首行文字铜邮,所有子容器向基線對齊仪召,交叉軸起點(diǎn)到元素基線
    距離最大的子容器將會與交叉軸起始端相切以確定基線寨蹋。比如我們把代碼改成如下:
<view class='outter'>
<view class='inner'>
<view style='margin-top:10px;background:#eee;'>hello</view>
</view>
<view class='inner'>2</view>
</view>

然后 wxss 文件為:

.outter{
display: flex;
align-items: baseline;
width: 300px;
height: 200px;
background: pink;
}

那么效果圖為:


image.png

更換主軸和側(cè)軸方向(flex-direction)

主軸默認(rèn)的方向是從左到右,側(cè)軸的方向默認(rèn)是從上到下扔茅,當(dāng)然也可以進(jìn)行修改已旧。可以通過 flex-direction 進(jìn)行修
改召娜≡送剩可以修改的參數(shù)為以下:

    1. row :默認(rèn)屬性。從左到右玖瘸。
image.png
  • 2.row-reverse :從右到左秸讹。


    image.png
  • 3.column :從上到下。


    image.png
  • 4column-reverse :從下到上店读。


    image.png
換行(flex-wrap):

默認(rèn)情況下嗦枢,元素個(gè)數(shù)如果超過一定數(shù)量,那么在一行當(dāng)中就排列不下屯断。此時(shí) flex 默認(rèn)的處理方式是壓縮元素文虏,
使其能在一行中排列下來。比如以下代碼:

view class='outter'>
<view class='inner'>1</view>
<view class='inner'>2</view>
<view class='inner'>3</view>
<view class='inner'>4</view>
</view>
.outter{
display: flex;
width: 300px;
height: 200px;
background: pink;
}
.outter .inner{
background: gray;
width: 100px;
height: 100px;
border: 1px solid #ccc;
}

那么會把這四個(gè)元素?cái)D壓在一行中殖演。即使給元素設(shè)置了寬度也沒有用的氧秘。效果圖如下:


image.png

以通過 flex-wrap 來改變排列的方式∨烤茫可以設(shè)置的屬性如下:

  • 1.nowrap :不換行丸相。默認(rèn)的。


    image.png
  • 2wrap :換行


    image.png
  • 3wrap-reverse :換行彼棍,但是第一行會在下面灭忠。


    image.png

align-content屬性

在排列中,如果有多行座硕,那么這個(gè)屬性是設(shè)置多行之間的排列方式弛作。可以通過 align-content 屬性來確定排列的方
式华匾∮沉眨可以設(shè)置以下值。

    1. flex-start :從上往下排列蜘拉。示例代碼如下:
.outter{
display: flex;
flex-wrap: wrap;
align-content: flex-start;
width: 300px;
height: 300px;
background: pink;
}
image.png
  • 2.flex-end :末尾段對齊萨西。效果圖如下:


    image.png
  • 3.center :中點(diǎn)對齊。效果圖如下:


    image.png
  • 4 space-between :與交叉軸兩端對齊旭旭,軸線之間的間隔平均分布谎脯。效果圖如下:


    image.png

    5.space-around :每根軸線兩側(cè)的間隔都相等。所以您机,軸線之間的間隔比軸線與邊框的間隔大一倍穿肄。效果圖如
    下:


    image.png
  • 6.stretch :默認(rèn)方式年局,如果沒有給元素設(shè)置高度,那么會占滿整個(gè)交叉軸咸产。
.outter .inner{
background: gray;
width: 100px;
/* height: 100px; */
border: 1px solid #ccc;
box-sizing: border-box;
}

效果圖如下:


image.png

元素(子容器)的相關(guān)屬性
flex-basis:

定義了在分配多余空間之前矢否,項(xiàng)目占據(jù)的主軸空間,瀏覽器根據(jù)這個(gè)屬性脑溢,計(jì)算主軸是否有多余空間僵朗。

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

默認(rèn)值:auto,即項(xiàng)目本來的大小, 這時(shí)候 item 的寬高取決于 width 或 height 的值屑彻。
當(dāng)主軸為水平方向的時(shí)候验庙,當(dāng)設(shè)置了 flex-basis,項(xiàng)目的寬度設(shè)置值會失效社牲,flex-basis 需要跟 flex-grow 和 flex-
shrink 配合使用才能發(fā)揮效果粪薛。
當(dāng) flex-basis 值為 0 時(shí),是把該項(xiàng)目視為零尺寸的搏恤,故即使聲明該尺寸為 140px违寿,也并沒有什么用。
當(dāng) flex-basis 值為 auto 時(shí)熟空,則跟根據(jù)尺寸的設(shè)定值(假如為 100px)藤巢,則這 100px 不會納入剩余空間。

flex-grow:

設(shè)置元素是否需要擴(kuò)大的比例息罗。默認(rèn)值為0掂咒,即如果存在剩余空間,也不放大迈喉。比如有以下代碼:

<view class='outter'>
<view class='inner inner1'>1</view>
<view class='inner inner2'>2</view>
</view>

wxss代碼為:

.outter{
display: flex;
width: 300px;
height: 300px;
flex-wrap: wrap;
background: pink;
}
.outter .inner{
background: gray;
width: 100px;
height: 100px;
border: 1px solid #ccc;
box-sizing: border-box;
}
.outter .inner1{
flex-grow: 2;
}
.outter .inner2{
flex-grow: 1;
}
image.png

因?yàn)閮蓚€(gè)元素分別占了2份绍刮,1份,所以第一個(gè)元素是占據(jù)了整個(gè)容器寬度的2/3挨摸,第二個(gè)元素占據(jù)了整個(gè)容器寬度
的1/3录淡。
另外,如果設(shè)置 flex-grow 為0油坝,那么他的寬度將會保持為設(shè)置的寬度,如果寬度沒有設(shè)置刨裆,那么將根據(jù)他的子元素
來保留寬度澈圈。假如代碼為:

<view class='outter'>
<view class='inner inner1'>1</view>
<view class='inner inner2'>2</view>
</view>

wxss代碼為:

.outter .inner1{
flex-grow: 0;
}
.outter .inner2{
flex-grow: 1;
}
image.png

如果把 inner1 的 width 刪掉,那么效果圖為:


image.png
flex-shrink屬性:

定義了項(xiàng)目的縮小比例帆啃,默認(rèn)為1瞬女,即如果空間不足,該項(xiàng)目將縮小努潘。比如有以下代碼:

<view class='outter'>
<view class='inner inner1'>1</view>
<view class='inner inner2'>2</view>
<view class='inner'>3</view>
<view class='inner'>4</view>
</view>

wxss的代碼如下:

.outter{
display: flex;
width: 300px;
height: 300px;
background: pink;
}
.outter .inner{
background: gray;
width: 100px;
height: 100px;
border: 1px solid #ccc;
box-sizing: border-box;
}
.outter .inner2{
flex-shrink: 0;
}
image.png

因?yàn)榻o inner2 設(shè)置了 flex-shrink 為0诽偷,所以即使在空間不夠的情況下坤学,他也不會被壓縮。

flex屬性:

flex屬性是 flex-grow flex-shrink flex-basis 三個(gè)屬性的簡寫报慕。假設(shè)以上三個(gè)屬性同樣取默認(rèn)值深浮,則 flex 的默認(rèn)值
是 0 1 auto 。
關(guān)于 flex 的取值眠冈,有以下幾種方式:

  1. auto :等價(jià)于 1 1 auto 飞苇。也就是允許增長,允許縮小蜗顽,寬度為自動布卡。
  2. none :等價(jià)于 0 0 auto 。也就是不允許增長雇盖,不允許縮小忿等,寬度為自動。
  3. 非負(fù)數(shù)字:這個(gè)數(shù)字表示的是 flex-grow 的值崔挖, flex-shrink 為1贸街,表示允許縮小, flex-basis 為0%虚汛∝依耍可以認(rèn)為
    他就是把剩余的空間進(jìn)行填充。比如以下代碼是等價(jià)的:
.item {flex: 1;}
.item {
flex-grow: 1;
flex-shrink: 1;
flex-basis: 0%;
}

4.0 :對應(yīng)的三個(gè)值分別為 0 1 0% 卷哩。比如以下代碼是等價(jià)的:

.item {flex: 0;}
.item {
flex-grow: 0;
flex-shrink: 1;
flex-basis: 0%;
}

5.長度或者百分比:則這個(gè)值視為 flex-basis 的值蛋辈,而 flex-grow 為1, flex-shrink 為1将谊。比如以下代碼是等價(jià)
的:

.item-1 {flex: 0%;}
.item-1 {
flex-grow: 1;
flex-shrink: 1;
flex-basis: 0%;
}
.item-2 {flex: 24px;}
.item-2 {
flex-grow: 1;
flex-shrink: 1;
flex-basis: 24px;
}
  1. 兩個(gè)非負(fù)數(shù)字:分別視為 flex-grow 和 flex-shrink 的值冷溶, flex-basis 取 0% ,如下是等同的:
.item {flex: 2 3;}
.item {
flex-grow: 2;
flex-shrink: 3;
flex-basis: 0%;
}
  1. 一個(gè)非負(fù)數(shù)字和一個(gè)長度或百分比:則分別視為 flex-grow 和 flex-basis 的值尊浓,flex-shrink 取 1逞频,如下是等同
    的:
.item {flex: 11 32px;}
.item {
flex-grow: 11;
flex-shrink: 1;
flex-basis: 32px;
}

更多關(guān)于flex布局請參考:

  1. https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout
  2. https://zhuanlan.zhihu.com/p/25303493
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市栋齿,隨后出現(xiàn)的幾起案子苗胀,更是在濱河造成了極大的恐慌,老刑警劉巖瓦堵,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件基协,死亡現(xiàn)場離奇詭異,居然都是意外死亡菇用,警方通過查閱死者的電腦和手機(jī)澜驮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惋鸥,“玉大人杂穷,你說我怎么就攤上這事悍缠。” “怎么了耐量?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵飞蚓,是天一觀的道長。 經(jīng)常有香客問我拴鸵,道長玷坠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任劲藐,我火速辦了婚禮八堡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘聘芜。我一直安慰自己兄渺,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布汰现。 她就那樣靜靜地躺著挂谍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瞎饲。 梳的紋絲不亂的頭發(fā)上口叙,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音嗅战,去河邊找鬼妄田。 笑死,一個(gè)胖子當(dāng)著我的面吹牛驮捍,可吹牛的內(nèi)容都是我干的疟呐。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼东且,長吁一口氣:“原來是場噩夢啊……” “哼启具!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起珊泳,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤鲁冯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后色查,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晓褪,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年综慎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勤庐。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡示惊,死狀恐怖好港,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情米罚,我是刑警寧澤钧汹,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站录择,受9級特大地震影響拔莱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜隘竭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一塘秦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧动看,春花似錦尊剔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至仇轻,卻和暖如春京痢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背篷店。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工祭椰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人船庇。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓吭产,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鸭轮。 傳聞我的和親對象是個(gè)殘疾皇子臣淤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容