el-scrollbar使用以及滾動到指定的位置

瀏覽器默認的滾動條不太美觀而且在ie下不能調(diào)整樣式,在element-ui中有個隱藏的組件,在官網(wǎng)上是沒有對應的api的,那就是<el-scrollbar>,這個組件的滾動條比原生的還是好看些的。

開始使用

<el-scrollbar>
  // 包裹你的內(nèi)容
</el-scrollbar>

這個組件還有一個屬性值可以傳遞,可以用來修改樣式加一些class的類名,但是一般情況下不會用的太多。

props: {
  native: Boolean,
  wrapStyle: {}, // 外層盒子的樣式
  wrapClass: {}, // 外層盒子的class
  viewClass: {}, // 內(nèi)層盒子的class
  viewStyle: {}, // 內(nèi)層盒子的樣式
  noresize: Boolean, // 如果 container 尺寸不會發(fā)生變化,最好設置它可以優(yōu)化性能
  tag: {
    type: String,
    default: 'div'
  }
}

el-scrollbar將會作為你容器的最外層,也是滾動條的容器;
可以給el-scrollbar加上ref以及class來達到自己想要的結果。
特別需要注意的是:在el-scrollbar上定義maxHeight和maxWidth是不生效的,沒有辦法達到預期的一個效果

滾動到指定的位置

可以使用如下代碼

this.$refs['scroll'].wrap.scrollTop = 0  //想滾到哪個高度,就寫多少
或者
this.$refs.scroll.wrap.scrollTop = 0  //想滾到哪個高度,就寫多少
注意     .warp必須要加,否則不生效。

例子:滾動到頂部(有動畫效果)

<el-scrollbarl ref="scroll">
  // ...
</el-scrollbar>
<el-button @click="toTop">滾動到頂部</el-button>

<script>
const cubic = value => Math.pow(value, 3);
const easeInOutCubic = value => value < 0.5
  ? cubic(value * 2) / 2
  : 1 - cubic((1 - value) * 2) / 2;
//...
methods: {
  toTop() {
    // el-scrollbar 容器
    const el = this.$refs['scroll'].wrap;
    
    const beginTime = Date.now();
    const beginValue = el.scrollTop;
    const rAF = window.requestAnimationFrame || (func => setTimeout(func, 16));
    const frameFunc = () => {
      const progress = (Date.now() - beginTime) / 500;
      if (progress < 1) {
        el.scrollTop = beginValue * (1 - easeInOutCubic(progress));
        rAF(frameFunc);
      } else {
        el.scrollTop = 0;
      }
    };
    rAF(frameFunc);
  }
}
//...
</script>
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容