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类定义的讲解
Nov 01 Python
介绍Python的@property装饰器的用法
Apr 28 Python
Python实现的选择排序算法原理与用法实例分析
Nov 22 Python
[原创]教女朋友学Python(一)运行环境搭建
Nov 29 Python
pandas DataFrame实现几列数据合并成为新的一列方法
Jun 08 Python
Python 打印中文字符的三种方法
Aug 14 Python
Python tkinter的grid布局及Text动态显示方法
Oct 11 Python
使用python绘制二元函数图像的实例
Feb 12 Python
python数据预处理方式 :数据降维
Feb 24 Python
使用Python防止SQL注入攻击的实现示例
May 21 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
Feb 01 Python
Python数据分析入门之教你怎么搭建环境
May 13 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获取一年中每个星期的开始和结束日期的方法
2015/02/12 PHP
HTML页面如何象ASP一样接受参数
2007/02/07 Javascript
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
2010/03/04 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
js实现点小图看大图效果的思路及示例代码
2013/10/28 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
2013/12/13 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
javascript发送短信验证码实现代码
2015/11/12 Javascript
JS判断两个对象内容是否相等的方法示例
2017/04/10 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
gulp解决跨域的配置文件问题
2017/06/08 Javascript
JavaScript中最常用的10种代码简写技巧总结
2017/06/28 Javascript
Vue项目中如何使用Axios封装http请求详解
2019/10/23 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
详解React中共享组件逻辑的三种方式
2021/02/02 Javascript
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
python中正则表达式 re.findall 用法
2018/10/23 Python
对python中dict和json的区别详解
2018/12/18 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
Django2.1.7 查询数据返回json格式的实现
2020/12/29 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
2021/01/06 Python
高级Java程序员面试要点
2013/08/02 面试题
校园摄影活动策划方案
2014/02/05 职场文书
春节联欢晚会主持词范文
2014/03/24 职场文书
周末问候语大全
2015/11/10 职场文书
创业计划书之甜品店
2019/09/18 职场文书
CSS中em的正确打开方式详解
2021/04/08 HTML / CSS
JS前端使用Canvas快速实现手势解锁特效
2022/09/23 Javascript