view
視圖容器。
屬性名 | 類(lèi)型 | 默認(rèn)值 | 說(shuō)明 | 最低版本 |
---|---|---|---|---|
hover-class | String | none | 指定按下去的樣式類(lèi)税稼。當(dāng) hover-class="none" 時(shí)烦秩,沒(méi)有點(diǎn)擊態(tài)效果 |
|
hover-stop-propagation | Boolean | false | 指定是否阻止本節(jié)點(diǎn)的祖先節(jié)點(diǎn)出現(xiàn)點(diǎn)擊態(tài) | 1.5.0 |
hover-start-time | Number | 50 | 按住后多久出現(xiàn)點(diǎn)擊態(tài),單位毫秒 | |
hover-stay-time | Number | 400 | 手指松開(kāi)后點(diǎn)擊態(tài)保留時(shí)間郎仆,單位毫秒 | |
aria-role | String | 無(wú)障礙訪(fǎng)問(wèn)只祠,(角色)標(biāo)識(shí)元素的作用 | 2.5.0 | |
aria-label | String | 無(wú)障礙訪(fǎng)問(wèn),(屬性)元素的額外描述 | 2.5.0 |
示例:
<view class="section">
<view class="section__title">flex-direction: row</view>
<view class="flex-wrp" style="flex-direction:row;">
<view class="flex-item bc_green">1</view>
<view class="flex-item bc_red">2</view>
<view class="flex-item bc_blue">3</view>
</view>
</view>
<view class="section">
<view class="section__title">flex-direction: column</view>
<view class="flex-wrp" style="height: 300px;flex-direction:column;">
<view class="flex-item bc_green">1</view>
<view class="flex-item bc_red">2</view>
<view class="flex-item bc_blue">3</view>
</view>
</view>
視圖容器扰肌。相當(dāng)于是傳統(tǒng)網(wǎng)頁(yè)中的 div 抛寝,可以用來(lái)存放任何的其他子元素。相關(guān)的屬性請(qǐng)參
考:https://developers.weixin.qq.com/miniprogram/dev/component/view.html
scroll-view:
有時(shí)候我們的一些視圖在手機(jī)指定的寬度和高度不夠存放曙旭。那么可以放在 scroll-view 中盗舰。
設(shè)置橫向滾動(dòng):
- 給 scroll-view 添加 scroll-x="true" 屬性。
- 給 scroll-view 添加 white-space:nowrap; 樣式夷狰。
- 給 scroll-view 中的子元素設(shè)置為 display:inline-block; 岭皂。
示例代碼如下:
index.wxml代碼:
<scroll-view class='scroll-x-view' scroll-x>
<view class='scroll-view-item bg_red'></view>
<view class='scroll-view-item bg_blue'></view>
<view class='scroll-view-item bg_green'></view>
<view class='scroll-view-item bg_yellow'></view>
</scroll-view>
index.wxss代碼:
.scroll-x-view{
width: 100%;
height: 100px;
background: gray;
white-space: nowrap;
}
.scroll-x-view .scroll-view-item{
width: 200px;
height: 100px;
}
.bg_red{
background: red;
}
.bg_blue{
background: blue;
}
.bg_green{
background: green;
}
.bg_yellow{
background: yellow;
}
設(shè)置豎向滾動(dòng):
- 給 scroll-view 添加 scroll-y="true" 屬性郊霎。
- 給 scroll-view 設(shè)置高度沼头。
wxml 和 wxss 示例代碼如下:
<scroll-view class='scroll-x-view' scroll-y>
<view class='scroll-view-item bg_red'></view>
<view class='scroll-view-item bg_blue'></view>
<view class='scroll-view-item bg_green'></view>
<view class='scroll-view-item bg_yellow'></view>
</scroll-view>
.scroll-x-view{
width: 100%;
height: 200px;
background: gray;
}
.scroll-x-view .scroll-view-item{
width: 100%;
height: 100px;
}
.bg_red{
background: red;
}
.bg_blue{
background: blue;
}
.bg_green{
background: green;
}
.bg_yellow{
background: yellow;
}
scrolltoupper和scrolltolower事件:
鼠標(biāo)滾動(dòng)到距離頂部或者左邊、鼠標(biāo)滾動(dòng)到底部或者右邊多少距離的時(shí)候會(huì)執(zhí)行這個(gè)事件书劝。默認(rèn)的間隔是 50 像
素进倍。示例代碼如下:
<scroll-view class='scroll-x-view' scroll-y bindscrolltoupper="scrollToUpper">
<view style="height:1000px;">
</view>
</scroll-view>
Page({
scrollToUpper: function(event){
console.log(event);
}
});
bindscroll事件:
只要 scroll-view 發(fā)生了滾動(dòng),就會(huì)執(zhí)行這個(gè)事件购对。
<scroll-view class='scroll-x-view' scroll-y bindscrolltoupper="scrollEvent">
<view style="height:1000px;">
</view>
</scroll-view>
Page({
scrollEvent: function(event){
console.log(event);
}
});
swiper組件
在 app 里面猾昆,輪播圖( banner )是非常常見(jiàn)的,因此小程序?qū)iT(mén)針對(duì)這個(gè)出了一個(gè)組件就是 swiper 骡苞。
swiper組件基本用法:
swiper 就是一個(gè)包裹輪播圖的容器垂蜗,里面的子元素必須是 swiper-item 組件。 swiper 可以自動(dòng)的輪播子元素解幽,并且
天生就帶有指示點(diǎn)贴见,還可以使用手指左右滑動(dòng)。下面用代碼的方式來(lái)演示一下:
<swiper class='swiper' style='width:NaNrpx;height:NaNrpx;' autoplay indicator-dots indicator-color='blue' indicator-a
ctive-color='red'>
<swiper-item>
<image src='https://static-image.xfz.cn/1539770831_872.jpg'></image>
</swiper-item>
<swiper-item>
<image src='https://static-image.xfz.cn/1541147489_121.jpeg'></image>
</swiper-item>
</swiper>
.swiper image{
width: 100%;
height: 100%;
}
Page({
data:{},
onLoad: function (options) {
var systemInfo = wx.getSystemInfoSync();
var windowWidth = systemInfo.windowWidth;
var width = windowWidth;
var height = width/4;
// 根據(jù)圖片的寬高比例設(shè)置swiper的寬高
this.setData({
width: width,
height: height
});
},
});
wiper
滑塊視圖容器躲株。
屬性名 | 類(lèi)型 | 默認(rèn)值 | 說(shuō)明 | 最低版本 |
---|---|---|---|---|
indicator-dots | Boolean | false | 是否顯示面板指示點(diǎn) | |
indicator-color | Color | rgba(0, 0, 0, .3) | 指示點(diǎn)顏色 | 1.1.0 |
indicator-active-color | Color | #000000 | 當(dāng)前選中的指示點(diǎn)顏色 | 1.1.0 |
autoplay | Boolean | false | 是否自動(dòng)切換 | |
current | Number | 0 | 當(dāng)前所在滑塊的 index | |
current-item-id | String | "" | 當(dāng)前所在滑塊的 item-id 片部,不能與 current 被同時(shí)指定 | 1.9.0 |
interval | Number | 5000 | 自動(dòng)切換時(shí)間間隔 | |
duration | Number | 500 | 滑動(dòng)動(dòng)畫(huà)時(shí)長(zhǎng) | |
circular | Boolean | false | 是否采用銜接滑動(dòng) | |
vertical | Boolean | false | 滑動(dòng)方向是否為縱向 | |
previous-margin | String | "0px" | 前邊距,可用于露出前一項(xiàng)的一小部分霜定,接受 px 和 rpx 值 | 1.9.0 |
next-margin | String | "0px" | 后邊距档悠,可用于露出后一項(xiàng)的一小部分廊鸥,接受 px 和 rpx 值 | 1.9.0 |
display-multiple-items | Number | 1 | 同時(shí)顯示的滑塊數(shù)量 | 1.9.0 |
skip-hidden-item-layout | Boolean | false | 是否跳過(guò)未顯示的滑塊布局,設(shè)為 true 可優(yōu)化復(fù)雜情況下的滑動(dòng)性能辖所,但會(huì)丟失隱藏狀態(tài)滑塊的布局信息 | 1.9.0 |
bindchange | EventHandle | current 改變時(shí)會(huì)觸發(fā) change 事件惰说,event.detail = {current: current, source: source} | ||
bindtransition | EventHandle | swiper-item 的位置發(fā)生改變時(shí)會(huì)觸發(fā) transition 事件,event.detail = {dx: dx, dy: dy} | 2.4.3 | |
bindanimationfinish | EventHandle | 動(dòng)畫(huà)結(jié)束時(shí)會(huì)觸發(fā) animationfinish 事件缘回,event.detail 同上 | 1.9.0 |
從 1.4.0 開(kāi)始助被,change
事件返回detail
中包含一個(gè)source
字段,表示導(dǎo)致變更的原因切诀,可能值如下:
-
autoplay
自動(dòng)播放導(dǎo)致swiper變化揩环; -
touch
用戶(hù)劃動(dòng)引起swiper變化; - 其他原因?qū)⒂每兆址硎尽?/li>
注意:其中只可放置<swiper-item/>
組件幅虑,否則會(huì)導(dǎo)致未定義的行為丰滑。
swiper-item
僅可放置在<swiper>
組件中,寬高自動(dòng)設(shè)置為100%倒庵。
屬性名 | 類(lèi)型 | 默認(rèn)值 | 說(shuō)明 | 最低版本 |
---|---|---|---|---|
item-id | String | "" | 該 swiper-item 的標(biāo)識(shí)符 | 1.9.0 |
示例代碼:
<swiper
indicator-dots="{{indicatorDots}}"
autoplay="{{autoplay}}"
interval="{{interval}}"
duration="{{duration}}"
>
<block wx:for="{{imgUrls}}">
<swiper-item>
<image src="{{item}}" class="slide-image" width="355" height="150" />
</swiper-item>
</block>
</swiper>
<button bindtap="changeIndicatorDots">indicator-dots</button>
<button bindtap="changeAutoplay">autoplay</button>
<slider bindchange="intervalChange" show-value min="500" max="2000" />
interval
<slider bindchange="durationChange" show-value min="1000" max="10000" />
duration
Page({
data: {
imgUrls: [
'http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg',
'http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg',
'http://img06.tooopen.com/images/20160818/tooopen_sy_175833047715.jpg'
],
indicatorDots: false,
autoplay: false,
interval: 5000,
duration: 1000
},
changeIndicatorDots(e) {
this.setData({
indicatorDots: !this.data.indicatorDots
})
},
changeAutoplay(e) {
this.setData({
autoplay: !this.data.autoplay
})
},
intervalChange(e) {
this.setData({
interval: e.detail.value
})
},
durationChange(e) {
this.setData({
duration: e.detail.value
})
}
})
movable-view
基礎(chǔ)庫(kù) 1.2.0 開(kāi)始支持褒墨,低版本需做兼容處理。
可移動(dòng)的視圖容器擎宝,在頁(yè)面中可以拖拽滑動(dòng)
屬性名 | 類(lèi)型 | 默認(rèn)值 | 說(shuō)明 | 最低版本 |
---|---|---|---|---|
direction | String | none | movable-view的移動(dòng)方向郁妈,屬性值有all、vertical绍申、horizontal噩咪、none | |
inertia | Boolean | false | movable-view是否帶有慣性 | |
out-of-bounds | Boolean | false | 超過(guò)可移動(dòng)區(qū)域后,movable-view是否還可以移動(dòng) | |
x | Number / String | 定義x軸方向的偏移极阅,如果x的值不在可移動(dòng)范圍內(nèi)胃碾,會(huì)自動(dòng)移動(dòng)到可移動(dòng)范圍;改變x的值會(huì)觸發(fā)動(dòng)畫(huà) | ||
y | Number / String | 定義y軸方向的偏移筋搏,如果y的值不在可移動(dòng)范圍內(nèi)仆百,會(huì)自動(dòng)移動(dòng)到可移動(dòng)范圍;改變y的值會(huì)觸發(fā)動(dòng)畫(huà) | ||
damping | Number | 20 | 阻尼系數(shù)奔脐,用于控制x或y改變時(shí)的動(dòng)畫(huà)和過(guò)界回彈的動(dòng)畫(huà)俄周,值越大移動(dòng)越快 | |
friction | Number | 2 | 摩擦系數(shù),用于控制慣性滑動(dòng)的動(dòng)畫(huà)髓迎,值越大摩擦力越大峦朗,滑動(dòng)越快停止;必須大于0竖般,否則會(huì)被設(shè)置成默認(rèn)值 | |
disabled | Boolean | false | 是否禁用 | 1.9.90 |
scale | Boolean | false | 是否支持雙指縮放甚垦,默認(rèn)縮放手勢(shì)生效區(qū)域是在movable-view內(nèi) | 1.9.90 |
scale-min | Number | 0.5 | 定義縮放倍數(shù)最小值 | 1.9.90 |
scale-max | Number | 10 | 定義縮放倍數(shù)最大值 | 1.9.90 |
scale-value | Number | 1 | 定義縮放倍數(shù),取值范圍為 0.5 - 10 | 1.9.90 |
animation | Boolean | true | 是否使用動(dòng)畫(huà) | 2.1.0 |
bindchange | EventHandle | 拖動(dòng)過(guò)程中觸發(fā)的事件,event.detail = {x: x, y: y, source: source}艰亮,其中source表示產(chǎn)生移動(dòng)的原因闭翩,值可為touch(拖動(dòng))、touch-out-of-bounds(超出移動(dòng)范圍)迄埃、out-of-bounds(超出移動(dòng)范圍后的回彈)疗韵、friction(慣性)和空字符串(setData) | 1.9.90 | |
bindscale | EventHandle | 縮放過(guò)程中觸發(fā)的事件,event.detail = {x: x, y: y, scale: scale}侄非,其中x和y字段在2.1.0之后開(kāi)始支持返回 | 1.9.90 |
除了基本事件外蕉汪,movable-view提供了兩個(gè)特殊事件
類(lèi)型 | 觸發(fā)條件 | 最低版本 |
---|---|---|
htouchmove | 初次手指觸摸后移動(dòng)為橫向的移動(dòng),如果catch此事件逞怨,則意味著touchmove事件也被catch | 1.9.90 |
vtouchmove | 初次手指觸摸后移動(dòng)為縱向的移動(dòng)者疤,如果catch此事件,則意味著touchmove事件也被catch | 1.9.90 |
movable-view 必須設(shè)置width和height屬性叠赦,不設(shè)置默認(rèn)為10px
movable-view 默認(rèn)為絕對(duì)定位驹马,top和left屬性為0px
注意:movable-view必須在<movable-area/>
組件中,并且必須是直接子節(jié)點(diǎn)除秀,否則不能移動(dòng)糯累。
movable-area
基礎(chǔ)庫(kù) 1.2.0 開(kāi)始支持,低版本需做兼容處理册踩。
movable-view
的可移動(dòng)區(qū)域
屬性名 | 類(lèi)型 | 默認(rèn)值 | 說(shuō)明 | 最低版本 |
---|---|---|---|---|
scale-area | Boolean | false | 當(dāng)里面的movable-view設(shè)置為支持雙指縮放時(shí)泳姐,設(shè)置此值可將縮放手勢(shì)生效區(qū)域修改為整個(gè)movable-area | 1.9.90 |
注意:movable-area 必須設(shè)置width和height屬性,不設(shè)置默認(rèn)為10px
當(dāng)movable-view小于movable-area時(shí)暂吉,movable-view的移動(dòng)范圍是在movable-area內(nèi)胖秒;
當(dāng)movable-view大于movable-area時(shí),movable-view的移動(dòng)范圍必須包含movable-area(x軸方向和y軸方向分開(kāi)考慮)
示例代碼:
<view class="section">
<view class="section__title">movable-view區(qū)域小于movable-area</view>
<movable-area style="height: 200px; width: 200px; background: red;">
<movable-view
style="height: 50px; width: 50px; background: blue;"
x="{{x}}"
y="{{y}}"
direction="all"
></movable-view>
</movable-area>
<view class="btn-area">
<button size="mini" bindtap="tap">click me to move to (30px, 30px)</button>
</view>
<view class="section__title">movable-view區(qū)域大于movable-area</view>
<movable-area style="height: 100px; width: 100px; background: red;">
<movable-view
style="height: 200px; width: 200px; background: blue;"
direction="all"
></movable-view>
</movable-area>
<view class="section__title">可放縮</view>
<movable-area
style="height: 200px; width: 200px; background: red;"
scale-area
>
<movable-view
style="height: 50px; width: 50px; background: blue;"
direction="all"
bindchange="onChange"
bindscale="onScale"
scale
scale-min="0.5"
scale-max="4"
scale-value="2"
></movable-view>
</movable-area>
</view>
Page({
data: {
x: 0,
y: 0
},
tap(e) {
this.setData({
x: 30,
y: 30
})
},
onChange(e) {
console.log(e.detail)
},
onScale(e) {
console.log(e.detail)
}
})