弄了一個持續更新的github筆記,可以去看看,誠意之作(本來就是寫給自己看的……)連結地址:Front-End-Basics
此篇文章的地址:Vue的自定義滾動,我用el-scrollbar
基礎筆記的github地址:https://github.com/qiqihaobenben/Front-End-Basics ,可以watch,也可以star。
正文開始……
為什麼要用el-scrollbar?
最近在寫一個內部平臺系統,相信大家都知道,其中會有很多自定義的滾動區域,就比如說現在有一個列表需要滾動,第一個念頭就是用 overflow: scroll;
啊!嗯嗯,又不是不能用!如果我不曾見過太陽,我本可以忍受黑暗。
大家總會見過不少滾動條比較優雅的實現,不可否認,美是讓人愉悅的。所以這些年行走江湖我滿懷愧疚,讓大家見醜了。
為什麼要用el-scrollbar,大家都知道,模擬一個滾動不難,而且市面上有很多這樣的庫。我考慮的,首先專案用的框架是Vue,然後用的元件庫是Element,Element官網也有很多滾動,而且像是Select元件的下拉框也是有滾動的,所以就不用想選擇什麼了,簡簡單單的就用Element自己的scrollbar吧,也不用再引入什麼別的包或者檔案之類的。
看Element的官網是不可能發現Scrollbar這個元件的,沒有使用文件,但是可以直接使用。
為什麼要寫這一篇文章?
- 第一,有段時間沒寫東西了,先熱熱手;
- 第二,真的有同學不知道怎麼用,可能主要是沒有文件吧~
先來看看它的樣子。
看了效果,接著來看一下怎麼找到這個元件,官方沒有提供文件,但確實是直接可用的一個元件。為什麼這麼說,這個一會再聊。先稍微看一下Element專案一些基本的概念。
在Element的貢獻指南里說了開發環境搭建和打包程式碼的指令。打包程式碼用 npm run dist
,我們去package.json
中可以看到這個指令具體的操作。
我們簡單看一下build/webpack.conf.js
這個檔案,會發現打包的檔案入口是./src/index.js
,我們再去看一下這個檔案。裡面內容除了包含給vue安裝外掛,原型上掛載物件之類的操作外,就是用外掛的方式把Element元件給註冊完成,當然也暴露出用安裝包方式安裝後要用的所有方法和屬性。其實我們已經看到了Scrollbar
的身影。再循著去看一下packages/scrollbar/index.js`
這個檔案,簡單的把這個元件引入後,新增了一個install方法,提供給Vue的use方法使用,然後就直接export出來了。
去src/main.js
這個檔案,看一下元件接收的props:
native屬性:如果為true
就不顯示el的bar,也就是el模擬出來的滾動條,如果為false
就顯示模擬的滾動條
關於tag這個屬性,可以看一下el的Select元件中的應用。
畫個圖表示一下view和wrap這兩個區域的區別:
嘗試用一下
展示的連結:el-scrollbar試用
考慮到有些同學有時會打不開上面的連結,把程式碼貼出來。
HTML
<script src="//unpkg.com/vue/dist/vue.js"></script>
<script src="//unpkg.com/element-ui@2.3.9/lib/index.js"></script>
<div id="app">
<h2>list:</h2>
<el-scrollbar wrap-class="list" wrap-style="color: red;" view-style="font-weight: bold;" view-class="view-box" :native="false">
<div v-for="value in num" :key="vlaue">
{{value}}
</div>
</el-scrollbar>
</div>
CSS
@import url("//unpkg.com/element-ui@2.3.9/lib/theme-chalk/index.css");
#app {
height: 300px;
overflow: hidden;
}
/*展示列表的區域,超過200px出現滾動條*/
.list {
max-height: 200px;
}
JavaScript
new Vue({
el: "#app",
data: {
num: 30
}
})
Element UI官方說不準什麼時候就更新文件了,不過,真的可能是因為太簡單了。