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去掉字符串中重复字符的方法
Feb 27 Python
python中的列表推导浅析
Apr 26 Python
Python爬虫番外篇之Cookie和Session详解
Dec 27 Python
Python 中的Selenium异常处理实例代码
May 03 Python
python numpy元素的区间查找方法
Nov 14 Python
Django实现跨域的2种方法
Jul 31 Python
django使用F方法更新一个对象多个对象字段的实现
Mar 28 Python
django表单中的按钮获取数据的实例分析
Jul 31 Python
Selenium 配置启动项参数的方法
Dec 04 Python
Opencv+Python识别PCB板图片的步骤
Jan 07 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
May 21 Python
七个非常实用的Python工具包总结
Jun 15 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实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
php英文单词统计器
2016/06/23 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
2017/02/24 PHP
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
在JS数组特定索引处指定位置插入元素
2014/07/27 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
2016/11/10 Javascript
input框中的name和id的区别
2016/11/16 Javascript
Bootstrap入门教程一Hello Bootstrap初识
2017/03/02 Javascript
理解javascript async的用法
2017/08/22 Javascript
jQuery实现的网站banner图片无缝轮播效果完整实例
2019/01/28 jQuery
nodejs对项目下所有空文件夹创建gitkeep的方法
2019/08/02 NodeJs
JS快速实现简单计算器
2020/04/08 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
python for 循环获取index索引的方法
2019/02/01 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
2019/02/22 Python
python实现windows倒计时锁屏功能
2019/07/30 Python
Python 中@property的用法详解
2020/01/15 Python
Python定时任务APScheduler原理及实例解析
2020/05/30 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
Fabletics官网:美国运动服饰品牌,由好莱坞女演员凯特·哈德森创立
2019/10/19 全球购物
信息系统专业个人求职信范文
2013/12/07 职场文书
信息与计算科学专业推荐信
2014/02/23 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
股权转让协议书
2014/12/07 职场文书
2015年学校办公室工作总结
2015/05/26 职场文书
PyTorch 如何自动计算梯度
2021/05/23 Python
MySQL分区表实现按月份归类
2021/11/01 MySQL
Python matplotlib可视化之绘制韦恩图
2022/02/24 Python
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android