小程序開發基礎-scroll-view 可滾動視圖區域


標題圖

小編 / 達叔小生

小程序開發基礎-scroll-view 可滾動視圖區域

這里只展示縱向滾動,橫向同理就不用說明了,可自己嘗試,橫向滾動屬性為scroll-x,把縱向滾動改為橫向滾動即可。

效果圖1

scroll-view視圖組件

scroll-yscroll-view的屬性,scroll-y類型為Boolean,默認值為false,表示允許縱向滾動,scroll-y="true"允許縱向滾動

bindscrolltoupperscroll-view的屬性,bindscrolltoupper類型為EventHandle,表示滾動到頂部/左邊,會觸發scrolltoupper事件,頂部/左邊,是因為滾動視圖可以橫向滾動和縱向滾動,bindscrolltoupper="upper"定義綁定事件,在邏輯代碼中編寫,滾動到頂部,觸發scrolltoupper事件。

bindscrolltolowerscroll-view屬性,與上述bindscrolltoupper同理,bindscrolltolower的類型也是EventHandlebindscrolltolower表示滾動到底部/右邊,會觸發scrolltolower事件,bindscrolltolower="lower"表示綁定事件lower,會觸發scrolltolower事件。

bindscrollscroll-view屬性,類型是EventHandle,表示滾動觸發,與上述bindscrolltoupper屬性和bindscrolltolower屬性范圍廣,bindscroll滾動觸發,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}

在定義scroll-view時,要給它一個固定的高度,通過wxss也可以內部樣式,給設置個height屬性,如style="height:200px;"

scroll-into-viewscroll-view的屬性,類型為String類型,表示值應為某子元素的id,甚至哪個方向可滾動,則在哪個方向滾動到該元素。代碼中scroll-into-view="{{toView}}"toView的值到js中的data中。

scroll-topscroll-view的屬性,類型為Number類型,表示值應為設置豎向滾動條位置,同時橫向有個scroll-left屬性。

<!-- index.wxml -->
<scroll-view scroll-y="true" style="height: 200px;" bindscrolltoupper="upper" bindscrolltolower="lower" bindscroll="scroll" scroll-into-view="{{toView}}" scroll-top="{{scrollTop}}">
 ...
</scroll-view>

給這個視圖組件加幾個視圖,一個視圖高度以給定"height:200px"

  <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>

再給兩個按鈕,一個是點擊效果為,下一個視圖,如同翻頁的效果,點擊按鈕切換到下一個view,另一個按鈕的點擊效果為,設置滾動條位置實現畫面滾動,就是下移或上移等。

click me to scroll into view為點擊我跳轉到下一個view視圖
click me to scroll為點擊我進行滾動

<!-- index.wxml -->
<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>

scroll-view屬性表格

屬性名 說明
scroll-x 表示允許橫向滾動
scroll-y 表示允許縱向滾動
upper-threshold 表示距頂部或者左邊多遠時(單位為px),觸發scrolltoupper事件
lower-threshold 表示距底部或者右邊多遠時時(單位為px),觸發scrolltolower事件
scroll-top 表示設置豎向滾動條位置
scroll-left 表示設置橫向滾動條位置
scroll-into-view 表示指應為某子元素idid不能以數字開頭),設置哪個方向可滾動,則在哪個方向滾動到該元素
scroll-with-animation 表示在設置滾動條位置時使用動畫過渡
bindscrolltoupper 表示滾動到頂部或左邊,會觸發scrolltoupper事件
bindscrolltolower 表示滾動到底部或右邊,會觸發scrolltolower事件
bindscroll 表示滾動時觸發
enable-back-to-top 表示iOS點擊頂部狀態欄、安卓雙擊標題欄時,滾動條返回頂部,只支持豎向

class="scroll-view-item bc_green"中,在wxss樣式定義,高度為200px,如果沒有就不會出現,你可以自己試試,margin屬性定義,四周都是10px,其它為背景顏色而已。

/* index.wxss */
/* .scroll-view_H{
  white-space: nowrap;
} */
.scroll-view-item{
  height: 200px;
}
/* .scroll-view-item_H{
  display: inline-block;
  width: 100%;
  height: 200px;
} */

.btn-area button{
  margin: 10px;
}



.bc_green {
  background-color: green;
}

.bc_red {
  background-color: red;
}

.bc_yellow {
  background-color: yellow;
}

.bc_blue {
  background-color: blue;
}

邏輯index.jsupper為滾動條滾到頂部的時候觸發,lower為滾動條滾到底部的時候觸發,scroll為滾動條滾動后觸發,tap為點擊按鈕切換到下一個viewtapMove為通過設置滾動條位置實現畫面滾動。

// index.js
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[i] === this.data.toView) {
        this.setData({
          toView: order[i + 1]
        })
        break
      }
    }
  },
  //通過設置滾動條位置實現畫面滾動
  tapMove: function(e) {
    this.setData({
      scrollTop: this.data.scrollTop + 10
    })
  }
})

toView: 'green',為scroll-into-view顯示在green綠色的地方,在index.wxml中的scroll-into-view="{{toView}}"scrollTop: 100,為scroll-top="{{scrollTop}}"在顯示時就是綠色的占一半,紅色的占一半,因為總的才200px嘛。

scroll-top的用途說明一下,為甚至豎向滾動條位置。scroll-into-view為滾動到該元素,簡要的說。總的來說,值應為某子元素idid不能以數字開頭)。設置哪個方向可滾動,則在哪個方向滾動到該元素,可知道要id,所以在index.wxml中有了<view id="green" class="scroll-view-item bc_green"></view>這個描述,里面的id="green"

這樣就可以理解以下代碼:

  data: {
    toView: 'green',
    scrollTop: 100,
    scrollLeft: 0
  },
// scrollLeft:是用來橫向的嘛
var order = ['red', 'yellow', 'blue', 'green', 'red']
  // 點擊按鈕切換到下一個view
  tap: function(e) {
    for (var i = 0; i < order.length; ++i) {
      if (order[i] === this.data.toView) {
        this.setData({
          toView: order[i + 1]
        })
        break
      }
    }
  },

重要事項:

重要事項.png

開源github分享

Wechat_small_program_Share
微信小程序分享🙈
Github 歡迎 Star、Fork

結語

  • 本文主要講解 小程序開發基礎-scroll-view 可滾動視圖區域
  • 下面我將繼續對其他知識 深入講解 ,有興趣可以繼續關注
  • 小禮物走一走 or 點贊

送❤


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM