Vue的el-scrollbar实现自定义滚动
作者:方旭 发布时间:2021-08-16 19:06:22
为什么要用el-scrollbar?
最近在写一个内部平台系统,相信大家都知道,其中会有很多自定义的滚动区域,就比如说现在有一个列表需要滚动,第一个念头就是用 overflow: scroll; 啊!嗯嗯,又不是不能用!如果我不曾见过太阳,我本可以忍受黑暗。
大家总会见过不少滚动条比较优雅的实现,不可否认,美是让人愉悦的。所以这些年行走江湖我满怀愧疚,让大家见丑了。
为什么要用el-scrollbar,大家都知道,模拟一个滚动不难,而且市面上有很多这样的库。我考虑的,首先项目用的框架是Vue,然后用的组件库是Element,Element官网也有很多滚动,而且像是Select组件的下拉框也是有滚动的,所以就不用想选择什么了,简简单单的就用Element自己的scrollbar吧,也不用再引入什么别的包或者文件之类的。
看Element的官网是不可能发现Scrollbar这个组件的,没有使用文档,但是可以直接使用。
为什么要写这一篇文章?
第一,有段时间没写东西了,先热热手;
第二,真的有同学不知道怎么用,可能主要是没有文档吧
先来看看它的样子。
看了效果,接着来看一下怎么找到这个组件,官方没有提供文档,但确实是直接可用的一个组件。为什么这么说,这个一会再聊。先稍微看一下Element项目一些基本的概念。
在Element的贡献指南里说了开发环境搭建和打包代码的指令。打包代码用 npm run dist ,我们去package.json中可以看到这个指令具体的操作。
我们简单看一下build/webpack.conf.js这个文件,会发现打包的文件入口是./src/index.js,我们再去看一下这个文件。里面内容除了包含给vue安装插件,原型上挂载对象之类的操作外,就是用插件的方式把Element组件给注册完成,当然也暴露出用安装包方式安装后要用的所有方法和属性。其实我们已经看到了Scrollbar的身影。再循着去看一下packages/scrollbar/index.js'这个文件,简单的把这个组件引入后,添加了一个install方法,提供给Vue的use方法使用,然后就直接export出来了。
去src/main.js这个文件,看一下组件接收的props:
native属性:如果为true就不显示el的bar,也就是el模拟出来的滚动条,如果为false就显示模拟的滚动条
关于tag这个属性,可以看一下el的Select组件中的应用。
画个图表示一下view和wrap这两个区域的区别:
尝试用一下
考虑到有些同学有时会打不开上面的链接,把代码贴出来。
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官方说不准什么时候就更新文档了,不过,真的可能是因为太简单了。
来源:https://segmentfault.com/a/1190000015068613


猜你喜欢
- 请求钩子通过装饰器为一个模块添加请求钩子, 对当前模块的请求进行额外的处理. 比如权限验证.说白了,就是在执行视图函数前后你可以进行一些处理
- 一:Zmail的优势:1:自动填充大多数导致服务端拒信的头信息(From To LocalHost之类的)2:将一个字典映射为email,构
- 简介特点请求你所要的数据,不多不少获取多个资源,只用一个请求描述所有的可能,类型系统几乎所有语言支持文档Graphene-PythonGra
- 以下是我做美工的两年生活中一条条总结出来的经验,每一点都是我常用的,虽然不是什么大学问,但我觉得要互相学习才能提高,所以现在拿出来和大家一起
- 前言 作者: 罗昭成PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://note.youdao.com/not
- 1. 使用到的库① wxpy:初始化微信机器人② openpyxl:保存微信好友数据为Excel表格③ pyecharts:生成可视化的地图
- 本文实例为大家分享了python3 pygame接小球游戏的具体代码,供大家参考,具体内容如下操作方法:鼠标操作截图:直接放代码:# -*-
- jQuery.post( url, [data], [callback], [type]
- 前言本篇来学习下柱状图的实现柱状图实现步骤ECharts 最基本的代码结构准备x轴的数据准备 y 轴的数据准备 option , 将 ser
- python中的数字类型工具python中为更高级的工作提供很多高级数字编程支持和对象,其中数字类型的完整工具包括:1.整数与浮点型,2.复
- 因为工作上要将客户的部分资料传给第三方做进一步处理,但是因为涉及到手机号等关键个人信息,所以需要对中间四位数做匿名化的简单处理。>&g
- tkinter改变下拉列表(Combobox)的选项值定义下拉列表:# 此处省略父容器的定义 ... # 定义下拉列表
- 目录1. 正则表达式_匹配单个字符2. 正则表达式_匹配多个字符3. 正则表达式_匹配分组小提示:4. 小练习答案:总结1. 正则表达式_匹
- 前言在laravel项目开发中,经常使用到公共函数,那如何在laravel配置全局公共函数呢??下面话不多说了,来一起看看详细的介绍吧方法如
- Python装饰器,分两部分,一是装饰器本身的定义,一是被装饰器对象的定义。一、函数式装饰器:装饰器本身是一个函数。1.装饰函数:被装饰对象
- 本文实例讲述了thinkphp的URL路由规则与配置方法。分享给大家供大家参考。具体分析如下:一、URL规则1、默认是区分大小写的2、如果我
- #coding=utf8__author__ = 'Administrator'# 当函数的参数不确定时,可以使用*args
- 微信小程序 微信支付服务端集理论上集成微信支付的全部工作可以在小程序端完成,因为小程序js有访问网络的能力,但是为了安全,不暴露敏感key,
- 一、安装xlrd地址下载后,使用 pip install .whl 安装即好。查看帮助:>>> import xlrd&g
- 一、clear(清空字典内容)stu = { 'num1':'Tom', '