Element-ui中ElScrollBar組件滾動條的使用


在翻看 element-ui官網的文檔時,發現其左側導航和右邊的內容超出屏幕時,滾動條的樣式比較小巧,通過瀏覽器審查工具查看,發現它是使用了el-scrollbar的樣式,跟element-ui的組件樣式命名一致。但文檔中並沒有關於這個 scrollbar組件的使用文檔,搜索一番得知這是一個隱藏組件,官方在 github 的 issues 中表示不會寫在文檔中,需要用的自己看源碼進行調用。

1、使用

按需加載需要單獨加載Scrollbar組件、並使用(可能會報無Scrollbar類的錯誤,但不影響使用),el-scrollbar需要設height(max-height是不行的)

    <el-scrollbar :native="false">
            <div>
                <p v-for="(item, index) in 200" :key="index">{{index}} 這里是一些文本。</p>
            </div>
        <el-scrollbar>

2、配置參數

props: {
    native: Boolean,  // 是否使用本地,設為true則不會啟用element-ui自定義的滾動條
    wrapStyle: {},  // 包裹層自定義樣式
    wrapClass: {},  // 包裹層自定義樣式類
    viewClass: {},  // 可滾動部分自定義樣式類
    viewStyle: {},  // 可滾動部分自定義樣式
    noresize: Boolean, // 如果 container 尺寸不會發生變化,最好設置它可以優化性能
    tag: {  // 生成的標簽類型,默認使用 `div`標簽包裹
      type: String,
      default: 'div'
    }
}

3、源碼位置

源碼在node_modules 目錄下的 element-ui/packages/scrollbar

模塊入口index.js,從main導入 scrollbar並提供一個安裝方法注冊成全局組件

注意:隱藏X軸滾動條時,加上前綴,否則會影響el-select的下拉框樣式。

.el-scrollbar__wrap {
overflow-x: hidden;
}

4、監聽滾動位置

<el-scrollbar id="main" class="app-main" ref="myScrollbar">
      <div class="content">
        <h3>頂部</h3>
      </div>
      <div class="content">
        <h3>Transfer 穿梭框</h3>
      </div>
      <div class="content">
        <h3>Form 表單</h3>
      </div>
      <div class="content">
        <h3>Table 表格</h3>
      </div>
      <div class="content">
        <h3>Tag 標簽</h3>
      </div>
    </el-scrollbar>
new Vue({
      el: '#app',
      data: function() {
        return { visible: false }
      },
      mounted() {
        this.handleScroll()
      },
      methods: {
        handleScroll() {
          let _self = this
          let scrollbarEl = this.$refs.myScrollbar.wrap
          scrollbarEl.onscroll = function() {
            if(scrollbarEl.scrollTop > 200) {
              _self.visible = true
            } else {
              _self.visible = false
            }
          }
        },
      }
    })

 




免責聲明!

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



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