支付寶小程序組件 可滾動視圖區(qū)域·scroll-view

2020-09-18 10:47 更新

可滾動視圖區(qū)域。scroll-view 滾動條無法隱藏,可以全局禁用滾動,但是無法禁用 scroll-view 中的滾動距離展示。

說明

  • 使用豎向滾動時,需要指定固定高度,可通過 acss 設置 height。
  • scroll-into-view 的優(yōu)先級高于 scroll-top。
  • 在滾動 scroll-view 時會阻止頁面回彈,所以在 scroll-view 中滾動,無法觸發(fā) onPullDownRefresh 下拉刷新功能。
  • scroll-view 不支持 scroll-x=true 和 scroll-y=true 同時生效,只能用一個。可以使用 view 設置 disable-scroll 為 true 禁止滑動。
  • scroll-view 滿屏時,無法滑動頁面,會導致導航欄滑動透明失效??赏ㄟ^ my.setNavigationBar 設置導航欄樣式:導航欄標題、導航欄背景色、導航欄底部邊框顏色、導航欄左上角 logo 圖片。
  • 可以監(jiān)聽 ScrollView 父 view 的觸摸事件控制 ScrollView 的滑動來達到取消慣性的效果。
  • scroll-view 組件不支持自定義下拉刷新以及滾動條。

掃碼體驗

示例代碼

// API-DEMO page/component/scroll-view.json
{
  "defaultTitle": "Scroll View"
}
<!-- API-DEMO page/component/scroll-view.axml -->
<view class="page">
  <view class="page-description">可滾動視圖區(qū)域</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>
// API-DEMO page/component/scroll-view.js
const order = ['blue', 'red', 'green', 'yellow'];


Page({
  data: {
    toView: 'red',
    scrollTop: 100,
  },
  upper(e) {
    console.log(e);
  },
  lower(e) {
    console.log(e);
  },
  scroll(e) {
    this.setData({
      scrollTop: e.detail.scrollTop,
    });
  },
  scrollEnd() {


  },
  scrollToTop(e) {
    console.log(e);
    this.setData({
      scrollTop: 0,
    });
  },
  tap(e) {
    for (let i = 0; i < order.length; ++i) {
      if (order[i] === this.data.toView) {
        const next = (i + 1) % order.length;
        this.setData({
          toView: order[next],
          scrollTop: next * 200,
        });
        break;
      }
    }
  },
  tapMove() {
    this.setData({
      scrollTop: this.data.scrollTop + 10,
    });
  },
});
/* API-DEMO page/component/swiper-view.acss */
.scroll-view_H {
  white-space: nowrap;
  display:flex;
}
.scroll-view-item {
  height: 200px;
}
.scroll-view-item_H {
  flex-shrink:0;
  flex-grow:0;
  width: 300px;
  height: 200px;
}

屬性

屬性 類型 默認值 描述 最低版本
class String - 外部樣式名。 -
style String - 內聯(lián)樣式名。 -
scroll-x Boolean false 允許橫向滾動。 -
scroll-y Boolean false 允許縱向滾動。 -
upper-threshold Number 50 距頂部/左邊多遠時(單位px),觸發(fā) scrolltoupper 事件。 -
lower-threshold Number 50 距底部/右邊多遠時(單位px),觸發(fā) scrolltolower 事件。 -
scroll-top Number - 設置豎向滾動條位置。 -
scroll-left Number - 設置橫向滾動條位置。 -
scroll-into-view String - 值應為某子元素 id,則滾動到該元素,元素頂部對齊滾動區(qū)域頂部。 -
scroll-with-animation Boolean false 在設置滾動條位置時使用動畫過渡。 -
scroll-animation-duration Number - 當 scroll-with-animation 設置為 true 時,可以設置 scroll-animation-duration 來控制動畫的執(zhí)行時間,單位 ms。 1.9.0
enable-back-to-top Boolean false 當點擊 iOS 頂部狀態(tài)欄或者雙擊安卓標題欄時,滾動條返回頂部,只支持豎向。 1.11.0
trap-scroll Boolean false 縱向滾動時,當滾動到頂部或底部時,強制禁止觸發(fā)頁面滾動,仍然只觸發(fā) scroll-view 自身的滾動。 1.11.2
onScrollToUpper EventHandle - 滾動到頂部/左邊,會觸發(fā) scrolltoupper 事件。 -
onScrollToLower EventHandle - 滾動到底部/右邊,會觸發(fā) scrolltolower 事件。 -
onScroll EventHandle - 滾動時觸發(fā), event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth}。 -
onTouchStart EventHandle - 觸摸動作開始。 1.15.0
onTouchMove EventHandle - 觸摸后移動。 1.15.0
onTouchEnd EventHandle - 觸摸動作結束。 1.15.0
onTouchCancel EventHandle - 觸摸動作被打斷,如來電提醒、彈窗。 1.15.0

常見問題

為何 scroll-view 在 popup 擴展組件中無法滑動?

popup 組件上加上 disableScroll={{false}} 屬性才能滑動

為何使用 swiper 嵌套 scroll-view,scroll-view無法滑動?

swiper 和 scroll-view 均為滑動組件,如果必須使用,建議不做嵌套或者讓 scroll-view 阻止 touch 事件冒泡即可:catchTouchStart、catchTouchMove。

如何監(jiān)聽 scroll-view 滾動到底部?

可以直接在 onScroll 方法中進行處理,使用 onScrollToLower 監(jiān)聽 scroll-view 的滾動高度來進行判斷是否滑動到了底部。 scrollheight 是 scroll-view 里面所有 view 的高度和,scrollTop 是滾動的值; scrolltop 的值等于 scrollheight-scrollview 視圖的高度。

為何在頁面有蒙層的情況下,外層滑動到底部,會導致蒙層也能滑動?

在外層 scroll-view 添加屬性 trap-scroll。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號