弄了一个持续更新的github笔记,能够去看看,诚意之做(原本就是写给本身看的……)连接地址:Front-End-Basicscss
此篇文章的地址:Vue的自定义滚动,我用el-scrollbarvue
基础笔记的github地址:github.com/qiqihaobenb… ,能够watch,也能够star。webpack
最近在写一个内部平台系统,相信你们都知道,其中会有不少自定义的滚动区域,就好比说如今有一个列表须要滚动,第一个念头就是用 overflow: scroll;
啊!嗯嗯,又不是不能用!若是我未曾见过太阳,我本能够忍受黑暗。
git
你们总会见过很多滚动条比较优雅的实现,不能否认,美是让人愉悦的。因此这些年行走江湖我满怀愧疚,让你们见丑了。
github
为何要用el-scrollbar,你们都知道,模拟一个滚动不难,并且市面上有不少这样的库。我考虑的,首先项目用的框架是Vue,而后用的组件库是Element,Element官网也有不少滚动,并且像是Select组件的下拉框也是有滚动的,因此就不用想选择什么了,简简单单的就用Element本身的scrollbar吧,也不用再引入什么别的包或者文件之类的。
web
看Element的官网是不可能发现Scrollbar这个组件的,没有使用文档,可是能够直接使用。npm
看了效果,接着来看一下怎么找到这个组件,官方没有提供文档,但确实是直接可用的一个组件。为何这么说,这个一会再聊。先稍微看一下Element项目一些基本的概念。
element-ui
在Element的贡献指南里说了开发环境搭建和打包代码的指令。打包代码用 npm run dist
,咱们去package.json
中能够看到这个指令具体的操做。json
咱们简单看一下build/webpack.conf.js
这个文件,会发现打包的文件入口是./src/index.js
,咱们再去看一下这个文件。里面内容除了包含给vue安装插件,原型上挂载对象之类的操做外,就是用插件的方式把Element组件给注册完成,固然也暴露出用安装包方式安装后要用的全部方法和属性。其实咱们已经看到了Scrollbar
的身影。再循着去看一下packages/scrollbar/index.js'
这个文件,简单的把这个组件引入后,添加了一个install方法,提供给Vue的use方法使用,而后就直接export出来了。bash
去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官方说不许何时就更新文档了,不过,真的多是由于太简单了。