scroll-view
Scroll view region
Property | Type | Default | Description |
class | String | External style name. | |
style | String | Inline style name. | |
scroll-x | Boolean | false | Allow horizontal scroll. |
scroll-y | Boolean | false | Allow vertical scroll. |
upper-threshold | Number | 50 | How far it is to top/left (in px) to trigger the scrolltoupper event. |
lower-threshold | Number | 50 | How far it is to bottom/right (in px) to trigger the scrolltolower event. |
scroll-top | Number | Set location of virtical scroll bar. | |
scroll-left | Number | Set location of horizontal scroll bar. | |
scroll-into-view | String | Value is an element ID, scrolling to that element, element top aligning with scroll region top. | |
onScrollToUpper | EventHandle | Scroll to top/left triggers the scrolltoupper event. | |
onScrollToLower | EventHandle | Scroll to bottom/right triggers the scrolltolower event. | |
onScroll | EventHandle | Trigger on scroll, event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth}. |
When vertical scroll is used, a fixed height is required, which is set by using acss.
Sample Code
copy
<view class="page">
<view class="page-description">Scroll view region</view>
<view class="page-section">
<view class="page-section-title">vertical scroll</view>
<view class="page-section-demo">
<scroll-view scroll-y="{{true}}" style="height: 200px;" onScrollToUpper="upper" onScrollToLower="lower" onScroll="scroll" scroll-into-view="{{toView}}" scroll-top="{{scrollTop}}">
<view id="blue" class="scroll-view-item bc_blue"></view>
<view id="red" class="scroll-view-item bc_red"></view>
<view id="yellow" class="scroll-view-item bc_yellow"></view>
<view id="green" class="scroll-view-item bc_green"></view>
</scroll-view>
</view>
<view class="page-section-btns">
<view onTap="tap">next</view>
<view onTap="tapMove">move</view>
<view onTap="scrollToTop">scrollToTop</view>
</view>
</view>
<view class="page-section">
<view class="page-section-title">horizontal scroll</view>
<view class="page-section-demo">
<scroll-view class="scroll-view_H" scroll-x="{{true}}" style="width: 100%" >
<view id="blue2" class="scroll-view-item_H bc_blue"></view>
<view id="red2" class="scroll-view-item_H bc_red"></view>
<view id="yellow2" class="scroll-view-item_H bc_yellow"></view>
<view id="green2" class="scroll-view-item_H bc_green"></view>
</scroll-view>
</view>
</view>
</view>
copy
const order = ['blue', 'red', 'green', 'yellow'];
Page({
data: {
toView: 'red',
scrollTop: 100,
},
upper(e) {
console.log(e);
},
lower(e) {
console.log(e);
},
scroll(e) {
console.log(e.detail.scrollTop);
},
scrollToTop(e) {
console.log(e);
this.setData({
scrollTop: 0,
});
},
});
Tips
- scroll-into-view has a higher priority than scroll-top
- Prevent page kickback in scroll scroll-view, so the scroll in scroll-view will not trigger onPullDownRefresh