微信小程序组件解读和分析:二、scroll-view可滚动视图区域


scroll-view可滚动视图区域 组件说明:

可滚动视图区域。

组件用法: 纵向滚动用法

Tip:

  • 使用竖向滚动时,需要给一个固定高度,通过 WXSS 设置 height,否则无法滚动。
  • 当滚动到顶部时会触发bindscrolltoupper事件(具体可留意GIF输出)
  • 当滚动到底部时会触发bindscrolltolower事件(具体可留意GIF输出)
scroll-view可滚动视图区域的示例代码运行效果如下:  
 
 
 
 

下面是WXML代码:
[XML]  纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
< scroll-view scroll-y = "true" style = "height: 200px;" bindscrolltoupper = "upper" bindscrolltolower = "lower" bindscroll = "scroll" scroll-into-view = "{{toView}}" scroll-top = "{{scrollTop}}" >
     < view id = "green" class = "scroll-view-item bc_green" ></ view >
     < view id = "red"  class = "scroll-view-item bc_red" ></ view >
     < view id = "yellow" class = "scroll-view-item bc_yellow" ></ view >
     < view id = "blue" class = "scroll-view-item bc_blue" ></ view >
</ scroll-view >
< view class = "btn-area" >
       < button size = "mini" bindtap = "tap" >click me to scroll into view </ button >
       < button size = "mini" bindtap = "tapMove" >click me to scroll</ button >
</ view >



下面是JS代码:
[JavaScript]  纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
var order = [ 'red' , 'yellow' , 'blue' , 'green' , 'red' ]
Page({
   data: {
     toView: 'green' ,
     scrollTop: 100,
     scrollLeft: 0
   },
   //滚动条滚到顶部的时候触发
   upper: function (e) {
     console.log(e)
   },
   //滚动条滚到底部的时候触发
   lower: function (e) {
     console.log(e)
   },
   //滚动条滚动后触发
   scroll: function (e) {
     console.log(e)
   },
   //点击按钮切换到下一个view
   tap: function (e) {
     for ( var i = 0; i < order.length; ++i) {
       if (order === this .data.toView) {
         this .setData({
           toView: order[i + 1]
         })
         break
       }
     }
   },
   //通过设置滚动条位置实现画面滚动
   tapMove: function (e) {
     this .setData({
       scrollTop: this .data.scrollTop + 10
     })
   }
})

下面是WXSS代码:

[CSS]  纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
.scroll-view_H{
   white-space : nowrap ;
}
.scroll-view-item{
   height : 200px ;
}
.scroll-view-item_H{
   display : inline- block ;
   width : 100% ;
   height : 200px ;
}


横向滚动用法
Tip:
  • 横向滚动无法使用scroll-into-view属性。
  • 当滚动到最左边时会触发bindscrolltoupper事件(具体可留意GIF输出)
  • 当滚动到最右边时会触发bindscrolltolower事件(具体可留意GIF输出)



横向滚动用法的 效果图:


下面是WXML代码:
[XML]  纯文本查看 复制代码
?
1
2
3
4
5
6
< scroll-view class = "scroll-view_H" scroll-x = "true" style = "width: 100%"  bindscrolltoupper = "upper" bindscrolltolower = "lower" bindscroll = "scroll"  scroll-left = "{{scrollLeft}}" >
     < view id = "green" class = "scroll-view-item_H bc_green" ></ view >
     < view id = "red"  class = "scroll-view-item_H bc_red" ></ view >
     < view id = "yellow" class = "scroll-view-item_H bc_yellow" ></ view >
     < view id = "blue" class = "scroll-view-item_H bc_blue" ></ view >
</ scroll-view >



下面是JS代码:
[JavaScript]  纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
var order = [ 'red' , 'yellow' , 'blue' , 'green' , 'red' ]
Page({
   data: {
     toView: 'green' ,
     scrollTop: 100,
     scrollLeft: 0
   },
   //滚动条滚到顶部的时候触发
   upper: function (e) {
     console.log(e)
   },
   //滚动条滚到底部的时候触发
   lower: function (e) {
     console.log(e)
   },
   //滚动条滚动后触发
   scroll: function (e) {
     console.log(e)
   },
   //点击按钮切换到下一个view
   tap: function (e) {
     for ( var i = 0; i < order.length; ++i) {
       if (order === this .data.toView) {
         this .setData({
           toView: order[i + 1]
         })
         break
       }
     }
   },
   //通过设置滚动条位置实现画面滚动
   tapMove: function (e) {
     this .setData({
       scrollLeft: this .data.scrollLeft + 10
     })
   }
})


下面是WXSS代码:
[CSS]  纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
.scroll-view_H{
   white-space : nowrap ;
}
.scroll-view-item{
   height : 200px ;
}
.scroll-view-item_H{
   display : inline- block ;
   width : 100% ;
   height : 200px ;
}



scroll-view可滚动视图区域的主要属性:
属性
类型
默认值
描述
scroll-x
Boolean
false
允许横向滚动
scroll-y
Boolean
false
允许纵向滚动
upper-threshold
Number
50
距顶部/左边多远时(单位px),触发 scrolltoupper 事件
lower-threshold
Number
50
距底部/右边多远时(单位px),触发 scrolltolower 事件
scroll-top
Number
 
设置竖向滚动条位置
scroll-left
Number
 
设置横向滚动条位置
scroll-into-view
String
 
值应为某子元素id,则滚动到该元素,元素顶部对齐滚动区域顶部
bindscrolltoupper
EventHandle
 
滚动到顶部/左边,会触发 scrolltoupper 事件
bindscrolltolower
EventHandle
 
滚动到底部/右边,会触发 scrolltolower 事件
bindscroll
EventHandle
 
滚动时触发,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}
点击查看原文


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM