一. 視圖層
WXML(WeiXin Markup Language)是框架設計的一套標簽語言,結合基礎組件、事件系統,可以構建出頁面的結構。
1.1. 數據綁定
1.1.1. 普通寫法
<view> {{ message }} </view>
Page({
data: {
message: 'Hello MINA!'
}
})
1.1.2. 組件屬性
簡直和上面沒區別啊
<view id="item-{{id}}"> </view>
Page({
data: {
id: 0
}
})
1.1.3. bool類型
不要直接寫 checked="false",其計算結果是一個字符串
<checkbox checked="{{false}}"> </checkbox>
1.2. 運算
1.2.1. 三元運算
hidden 隱藏屬性,true為隱藏標簽
<view hidden="{{flag ? true : false}}"> Hidden </view>
1.2.2. 算數運算
<view> {{a + b}} + {{c}} + d </view>
Page({
data: {
a: 1,
b: 2,
c: 3
}
})
1.2.3. if 邏輯判斷
如果length大於5,標簽顯示,否則不顯示
<view wx:if="{{length > 5}}"> </view>
1.2.4. 字符串運算
<view>{{"hello" + name}}</view>
Page({
data:{
name: 'MINA'
}
})
1.2.5. 注意
花括號和引號之間如果有空格,將最終被解析成為字符串
1.3. 列表渲染(數組渲染)
1.3.1. wx:for
項的變量名默認為 item
wx:for-item
可以指定數組當前元素的變量名
下標變量名默認為 index
wx:for-index
可以指定數組當前下標的變量名
<view wx:for="{{array}}">
{{index}}: {{item.message}}
</view>
Page({
data: {
array: [{
message: 'foo',
}, {
message: 'bar'
}]
}
})
1.3.2. wx:for
渲染一個包含多節點的結構塊 block最終不會變成真正的dom元素
<block wx:for="{{[1, 2, 3]}}">
<view> {{index}}: </view>
<view> {{item}} </view>
</block>
1.3.3. wx:key
一般for循環都會添加wx:key屬性,提高效率使用的
<view wx:for="{{array}}" wx:key="index">
{{index}}:{{item.message}}
</view>
1.4. 條件渲染
1.4.1. wx:if
在框架中,使用 wx:if="{{condition}}"
來判斷是否需要渲染該代碼塊:
<view wx:if="{{condition}}"> True </view>
1.4.2. hidden
<view hidden="{{condition}}"> True </view>
類似 wx:if
頻繁切換 用 hidden
不常使用 用 wx:if
二、 WXSS樣式文件
2. WXSS
WXSS(WeiXin Style Sheets)是一套樣式語言,用於描述 WXML 的組件樣式。
與 CSS 相比,WXSS 擴展的特性有:
-
尺寸單位
-
樣式導入
2.1. 尺寸單位
- rpx(responsive pixel): 可以根據屏幕寬度進行自適應。規定屏幕寬為750rpx。如在 iPhone6 上,屏幕寬度為375px,共有750個物理像素,則750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。
設備 | rpx換算px (屏幕寬度/750) | px換算rpx (750/屏幕寬度) |
---|---|---|
iPhone5 | 1rpx = 0.42px | 1px = 2.34rpx |
iPhone6 | 1rpx = 0.5px | 1px = 2rpx |
iPhone6 Plus | 1rpx = 0.552px | 1px = 1.81rpx |
建議: 開發微信小程序時設計師可以用 iPhone6 作為視覺稿的標准。
注意: 在較小的屏幕上不可避免的會有一些毛刺,請在開發時盡量避免這種情況。
2.2. 樣式導入
使用@import
語句可以導入外聯樣式表,@import
后跟需要導入的外聯樣式表的相對路徑,用;
表示語句結束。
示例代碼:
/** common.wxss **/
.small-p {
padding:5px;
}
/** app.wxss **/
@import "common.wxss";
.middle-p {
padding:15px;
}
2.3. 內聯樣式
框架組件上支持使用 style、class 屬性來控制組件的樣式。
- style:靜態的樣式統一寫到 class 中。style 接收動態的樣式,在運行時會進行解析,請盡量避免將靜態的樣式寫進 style 中,以免影響渲染速度。
<view style="color:{{color}};" />
- class:用於指定樣式規則,其屬性值是樣式規則中類選擇器名(樣式類名)的集合,樣式類名不需要帶上
.
,樣式類名之間用空格分隔。
<view class="normal_view" />
2.4. 選擇器
目前支持的選擇器有:
選擇器 | 樣例 | 樣例描述 |
---|---|---|
.class | .intro |
選擇所有擁有 class="intro" 的組件 |
#id | #firstname |
選擇擁有 id="firstname" 的組件 |
element | view |
選擇所有 view 組件 |
element, element | view, checkbox |
選擇所有文檔的 view 組件和所有的 checkbox 組件 |
::after | view::after |
在 view 組件后邊插入內容 |
::before | view::before |
在 view 組件前邊插入內容 |
2.5. 全局樣式與局部樣式
定義在 app.wxss 中的樣式為全局樣式,作用於每一個頁面。在 page 的 wxss 文件中定義的樣式為局部樣式,只作用在對應的頁面,並會覆蓋 app.wxss 中相同的選擇器。