Vue的el-scrollbar實(shí)現(xiàn)自定義滾動(dòng)
為什么要用el-scrollbar?
最近在寫(xiě)一個(gè)內(nèi)部平臺(tái)系統(tǒng),相信大家都知道,其中會(huì)有很多自定義的滾動(dòng)區(qū)域,就比如說(shuō)現(xiàn)在有一個(gè)列表需要滾動(dòng),第一個(gè)念頭就是用 overflow: scroll; ??!嗯嗯,又不是不能用!如果我不曾見(jiàn)過(guò)太陽(yáng),我本可以忍受黑暗。
大家總會(huì)見(jiàn)過(guò)不少滾動(dòng)條比較優(yōu)雅的實(shí)現(xiàn),不可否認(rèn),美是讓人愉悅的。所以這些年行走江湖我滿(mǎn)懷愧疚,讓大家見(jiàn)丑了。
為什么要用el-scrollbar,大家都知道,模擬一個(gè)滾動(dòng)不難,而且市面上有很多這樣的庫(kù)。我考慮的,首先項(xiàng)目用的框架是Vue,然后用的組件庫(kù)是Element,Element官網(wǎng)也有很多滾動(dòng),而且像是Select組件的下拉框也是有滾動(dòng)的,所以就不用想選擇什么了,簡(jiǎn)簡(jiǎn)單單的就用Element自己的scrollbar吧,也不用再引入什么別的包或者文件之類(lèi)的。
看Element的官網(wǎng)是不可能發(fā)現(xiàn)Scrollbar這個(gè)組件的,沒(méi)有使用文檔,但是可以直接使用。
為什么要寫(xiě)這一篇文章?
第一,有段時(shí)間沒(méi)寫(xiě)東西了,先熱熱手;
第二,真的有同學(xué)不知道怎么用,可能主要是沒(méi)有文檔吧
先來(lái)看看它的樣子。
看了效果,接著來(lái)看一下怎么找到這個(gè)組件,官方?jīng)]有提供文檔,但確實(shí)是直接可用的一個(gè)組件。為什么這么說(shuō),這個(gè)一會(huì)再聊。先稍微看一下Element項(xiàng)目一些基本的概念。
在Element的貢獻(xiàn)指南里說(shuō)了開(kāi)發(fā)環(huán)境搭建和打包代碼的指令。打包代碼用 npm run dist ,我們?nèi)ackage.json中可以看到這個(gè)指令具體的操作。
我們簡(jiǎn)單看一下build/webpack.conf.js這個(gè)文件,會(huì)發(fā)現(xiàn)打包的文件入口是./src/index.js,我們?cè)偃タ匆幌逻@個(gè)文件。里面內(nèi)容除了包含給vue安裝插件,原型上掛載對(duì)象之類(lèi)的操作外,就是用插件的方式把Element組件給注冊(cè)完成,當(dāng)然也暴露出用安裝包方式安裝后要用的所有方法和屬性。其實(shí)我們已經(jīng)看到了Scrollbar的身影。再循著去看一下packages/scrollbar/index.js'這個(gè)文件,簡(jiǎn)單的把這個(gè)組件引入后,添加了一個(gè)install方法,提供給Vue的use方法使用,然后就直接export出來(lái)了。
去src/main.js這個(gè)文件,看一下組件接收的props:
native屬性:如果為true就不顯示el的bar,也就是el模擬出來(lái)的滾動(dòng)條,如果為false就顯示模擬的滾動(dòng)條
關(guān)于tag這個(gè)屬性,可以看一下el的Select組件中的應(yīng)用。
畫(huà)個(gè)圖表示一下view和wrap這兩個(gè)區(qū)域的區(qū)別:
嘗試用一下
考慮到有些同學(xué)有時(shí)會(huì)打不開(kāi)上面的鏈接,把代碼貼出來(lái)。
HTML <script src="http://unpkg.com/vue/dist/vue.js"></script> <script src="http://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("http://unpkg.com/element-ui@2.3.9/lib/theme-chalk/index.css"); #app { height: 300px; overflow: hidden; } /*展示列表的區(qū)域,超過(guò)200px出現(xiàn)滾動(dòng)條*/ .list { max-height: 200px; } JavaScript new Vue({ el: "#app", data: { num: 30 } })
Element UI官方說(shuō)不準(zhǔn)什么時(shí)候就更新文檔了,不過(guò),真的可能是因?yàn)樘?jiǎn)單了。
相關(guān)文章
Python爬蟲(chóng)之Requests庫(kù)基本使用詳解
這篇文章主要介紹了Python爬蟲(chóng)之Requests庫(kù)基本使用詳解,Requests 庫(kù)是在 urllib 模塊的基礎(chǔ)上開(kāi)發(fā)而來(lái),繼承了urllib.request的所有特性,與urllib.request 相比,Requests 在使用時(shí)更加簡(jiǎn)潔方便、快捷,所以 Requests 庫(kù)在編寫(xiě)爬蟲(chóng)程序時(shí)使用較多,需要的朋友可以參考下2023-09-09

python怎樣判斷一個(gè)數(shù)值(字符串)為整數(shù)

pycharm創(chuàng)建django項(xiàng)目出現(xiàn)路徑錯(cuò)誤問(wèn)題

Selenium定位瀏覽器彈窗方法實(shí)例總結(jié)

Python?copy()與deepcopy()方法之間有什么區(qū)別

python爬蟲(chóng)自動(dòng)創(chuàng)建文件夾的功能