Vue的el-scrollbar实现自定义滚动


Posted in Python onMay 29, 2018

为什么要用el-scrollbar?

最近在写一个内部平台系统,相信大家都知道,其中会有很多自定义的滚动区域,就比如说现在有一个列表需要滚动,第一个念头就是用 overflow: scroll; 啊!嗯嗯,又不是不能用!如果我不曾见过太阳,我本可以忍受黑暗。

大家总会见过不少滚动条比较优雅的实现,不可否认,美是让人愉悦的。所以这些年行走江湖我满怀愧疚,让大家见丑了。

为什么要用el-scrollbar,大家都知道,模拟一个滚动不难,而且市面上有很多这样的库。我考虑的,首先项目用的框架是Vue,然后用的组件库是Element,Element官网也有很多滚动,而且像是Select组件的下拉框也是有滚动的,所以就不用想选择什么了,简简单单的就用Element自己的scrollbar吧,也不用再引入什么别的包或者文件之类的。

看Element的官网是不可能发现Scrollbar这个组件的,没有使用文档,但是可以直接使用。

为什么要写这一篇文章?

第一,有段时间没写东西了,先热热手;

第二,真的有同学不知道怎么用,可能主要是没有文档吧

Vue的el-scrollbar实现自定义滚动

先来看看它的样子。

Vue的el-scrollbar实现自定义滚动

看了效果,接着来看一下怎么找到这个组件,官方没有提供文档,但确实是直接可用的一个组件。为什么这么说,这个一会再聊。先稍微看一下Element项目一些基本的概念。

在Element的贡献指南里说了开发环境搭建和打包代码的指令。打包代码用 npm run dist ,我们去package.json中可以看到这个指令具体的操作。

Vue的el-scrollbar实现自定义滚动

我们简单看一下build/webpack.conf.js这个文件,会发现打包的文件入口是./src/index.js,我们再去看一下这个文件。里面内容除了包含给vue安装插件,原型上挂载对象之类的操作外,就是用插件的方式把Element组件给注册完成,当然也暴露出用安装包方式安装后要用的所有方法和属性。其实我们已经看到了Scrollbar的身影。再循着去看一下packages/scrollbar/index.js'这个文件,简单的把这个组件引入后,添加了一个install方法,提供给Vue的use方法使用,然后就直接export出来了。

Vue的el-scrollbar实现自定义滚动

去src/main.js这个文件,看一下组件接收的props:

Vue的el-scrollbar实现自定义滚动

native属性:如果为true就不显示el的bar,也就是el模拟出来的滚动条,如果为false就显示模拟的滚动条

关于tag这个属性,可以看一下el的Select组件中的应用。

Vue的el-scrollbar实现自定义滚动

画个图表示一下view和wrap这两个区域的区别:

Vue的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官方说不准什么时候就更新文档了,不过,真的可能是因为太简单了。

Python 相关文章推荐
python的类方法和静态方法
Dec 13 Python
Python+MongoDB自增键值的简单实现
Nov 04 Python
python导出chrome书签到markdown文件的实例代码
Dec 27 Python
Django中Forms的使用代码解析
Feb 10 Python
python3+PyQt5重新实现自定义数据拖放处理
Apr 19 Python
Python根据成绩分析系统浅析
Feb 11 Python
python3中替换python2中cmp函数的实现
Aug 20 Python
Python操作Mongodb数据库的方法小结
Sep 10 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
Feb 17 Python
python数据分析工具之 matplotlib详解
Apr 09 Python
Python 字典一个键对应多个值的方法
Sep 29 Python
python 两种方法删除空文件夹
Sep 29 Python
基于Django与ajax之间的json传输方法
May 29 #Python
django ajax json的实例代码
May 29 #Python
Python+selenium实现自动循环扔QQ邮箱漂流瓶
May 29 #Python
PyTorch学习笔记之回归实战
May 28 #Python
Django 使用Ajax进行前后台交互的示例讲解
May 28 #Python
Python实现爬虫爬取NBA数据功能示例
May 28 #Python
Django+Ajax+jQuery实现网页动态更新的实例
May 28 #Python
You might like
PHP 处理图片的类实现代码
2009/10/23 PHP
PHP 读取和编写 XML
2014/11/19 PHP
PHP生成条形图的方法
2014/12/10 PHP
Jquery拖拽并简单保存的实现代码
2010/11/28 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
js定时器(执行一次、重复执行)
2014/03/07 Javascript
JQuery调用WebServices的方法和4个实例
2014/05/06 Javascript
jQuery的deferred对象详解
2014/11/12 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
jQuery异步提交表单的两种方式
2016/09/13 Javascript
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
vue.js实现刷新当前页面的方法教程
2017/07/05 Javascript
Vue中在新窗口打开页面及Vue-router的使用
2018/06/13 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
vue远程加载sfc组件思路详解
2019/12/25 Javascript
[02:28]PWL开团时刻DAY3——Ink Ice与DeMonsTer之间的勾心斗角
2020/11/03 DOTA
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
python实现数通设备tftp备份配置文件示例
2014/04/02 Python
在Python中定义和使用抽象类的方法
2016/06/30 Python
Python设计模式之中介模式简单示例
2018/01/09 Python
python基础教程项目二之画幅好画
2018/04/02 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
python输入错误后删除的方法
2019/10/12 Python
Selenium元素定位的30种方式(史上最全)
2020/05/11 Python
圣彼得堡鲜花配送:Semicvetic
2020/09/15 全球购物
服装设计专业毕业生求职信
2014/04/09 职场文书
保护环境倡议书
2014/04/14 职场文书
优秀党员事迹材料
2014/12/18 职场文书
贫困生助学金感谢信
2015/01/21 职场文书
校友回访母校寄语
2015/02/26 职场文书
员工工作心得体会
2019/05/07 职场文书
强烈推荐:小学生:暑假作息时间表(值得收藏)
2019/07/09 职场文书
粗暴解决CUDA out of memory的问题
2021/05/22 Python
一些让Python代码简洁的实用技巧总结
2021/08/23 Python
nginx配置限速限流基于内置模块
2022/05/02 Servers