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正则表达式 re模块使用说明
May 19 Python
Python通过正则表达式选取callback的方法
Jul 18 Python
利用Python批量生成任意尺寸的图片
Aug 29 Python
win10环境下python3.5安装步骤图文教程
Feb 03 Python
Python和C/C++交互的几种方法总结
May 11 Python
pycharm 解除默认unittest模式的方法
Nov 30 Python
Python八皇后问题解答过程详解
Jul 29 Python
Python进度条的制作代码实例
Aug 31 Python
python enumerate内置函数用法总结
Jan 07 Python
python实现FTP文件传输的方法(服务器端和客户端)
Mar 20 Python
Python根据字典的值查询出对应的键的方法
Sep 30 Python
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
Apr 05 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 base64+gzinflate压缩编码和解码代码
2008/10/03 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
2012/02/04 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
2013/06/03 PHP
PHP中实现crontab代码分享
2015/03/26 PHP
PHP正则验证Email的方法
2015/06/15 PHP
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
PHP实现获取url地址中顶级域名的方法示例
2019/06/05 PHP
validator验证控件使用代码
2010/11/23 Javascript
js面向对象设计用{}好还是function(){}好(构造函数)
2011/10/23 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
Node.js中对通用模块的封装方法
2014/06/06 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
JS加载器如何动态加载外部js文件
2016/05/26 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
在JS循环中使用async/await的方法
2018/10/12 Javascript
js实现通过开始结束控制的计时器
2019/02/25 Javascript
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
如何在Python函数执行前后增加额外的行为
2016/10/20 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
CSS3制作轮播图的一种方法
2019/11/11 HTML / CSS
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
毕业生就业推荐表自我鉴定
2014/03/20 职场文书
大学生求职信范文
2014/05/24 职场文书
民主生活会对照检查材料(统计局)
2014/09/21 职场文书
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
搭讪开场白台词大全
2015/05/28 职场文书
婚育证明格式
2015/06/17 职场文书
Python基础详解之描述符
2021/04/28 Python
Python的这些库,你知道多少?
2021/06/09 Python
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL
mysql的单列多值存储实例详解
2022/04/05 MySQL
Android移动应用开发指南之六种布局详解
2022/09/23 Java/Android