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 相关文章推荐
Android应用开发中Action bar编写的入门教程
Feb 26 Python
socket + select 完成伪并发操作的实例
Aug 15 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 Python
pycharm下查看python的变量类型和变量内容的方法
Jun 26 Python
python中ASCII码字符与int之间的转换方法
Jul 09 Python
python  创建一个保留重复值的列表的补码
Oct 15 Python
PyQt5 对图片进行缩放的实例
Jun 18 Python
利用pandas合并多个excel的方法示例
Oct 10 Python
Python编程快速上手——疯狂填词程序实现方法分析
Feb 29 Python
一文详述 Python 中的 property 语法
Sep 01 Python
python3 re返回形式总结
Nov 20 Python
python爬取股票最新数据并用excel绘制树状图的示例
Mar 01 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 常用时间函数资料整理
2016/10/22 PHP
PHP中Trait及其应用详解
2017/02/14 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
Javascript 构造函数,公有,私有特权和静态成员定义方法
2009/11/30 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
Node.js 文件夹目录结构创建实例代码
2016/07/08 Javascript
JavaScript组合模式学习要点
2016/08/26 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
2017/03/09 Javascript
详解PHP后期静态绑定分析与应用
2018/03/21 Javascript
微信小程序实现人脸识别
2018/05/25 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
nodejs 使用 js 模块的方法实例详解
2018/12/04 NodeJs
Vue学习之组件用法实例详解
2020/01/06 Javascript
记一次react前端项目打包优化的方法
2020/03/30 Javascript
[03:09]2014DOTA2国际邀请赛 赛场上的美丽风景线 中国Coser也爱DOTA2
2014/07/20 DOTA
[01:04:22]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 IG vs EG
2018/04/01 DOTA
centos下更新Python版本的步骤
2013/02/12 Python
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
django框架model orM使用字典作为参数,保存数据的方法分析
2019/06/24 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
Python进程的通信Queue、Pipe实例分析
2020/03/30 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
Python+unittest+DDT实现数据驱动测试
2020/11/30 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
德国消费电子产品购物网站:Guter Kauf
2020/09/15 全球购物
大众服装店创业计划书范文
2014/01/01 职场文书
租赁意向书范本
2014/04/01 职场文书
《鸟岛》教学反思
2014/04/26 职场文书
个人买房协议书范本
2014/10/06 职场文书
贴吧吧主申请感言
2015/08/03 职场文书
解决goland 导入项目后import里的包报红问题
2021/05/06 Golang
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL