Vue中使用vue2-perfect-scrollbar制作滚动条

官方地址:https://github.com/mercs600/vue2-perfect-scrollbar

下载:

cnpm i -S vue2-perfect-scrollbar

main.js中引用:

import PerfectScrollbar from 'vue2-perfect-scrollbar'
import 'vue2-perfect-scrollbar/dist/vue2-perfect-scrollbar.css'
Vue.use(PerfectScrollbar)

使用:

<template>
  <div class="aside">
    <div class="aside-header">
      <img
        src="https://lj-common.oss-cn-chengdu.aliyuncs.com/vue.png"
        style="width: 30px; height: 30px"
      />
      <span
        style="
          font-size: 20px;
          font-weight: 600;
          color: white;
          margin-left: 10px;
        "
        >xxx</span
      >
    </div>
    <div class="aside-menu">
      <perfect-scrollbar @ps-scroll-y="onScroll" ref="scrollbar">
        <el-menu
          default-active="1"
          class="el-menu-vertical-demo"
          background-color="#191A23"
          text-color="#fff"
          active-text-color="white"
        >
          <el-menu-item index="1" @click="$router.push({ path: '/download' })">
            <span slot="title">demo</span>
          </el-menu-item>

          <el-menu-item index="3"> <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span>
          </el-menu-item>
          <el-menu-item index="3"> <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span> </el-menu-item
          ><el-menu-item index="3">
            <span slot="title">test</span>
          </el-menu-item>
          <el-menu-item index="2" @click="$router.push({ path: '/test' })">
            <span slot="title">test1</span>
          </el-menu-item>
        </el-menu>
      </perfect-scrollbar>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {};
  },
  methods: {
    onScroll(event) {
      console.log(this.$refs.scrollbar.ps, event);
    },
  },
  watch: {
    //路由改变时,滚动条回到顶部
    $route() {
      this.$refs.scrollbar.$el.scrollTop = 0;
    },
  },
};
</script>

<style lang='scss' scoped>
.aside {
  height: 100vh;
  .aside-header {
    height: 60px;
    background-color: #545c64;
    line-height: 60px;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .aside-menu {
    height: calc(100vh - 60px);
    background-color: #0b6dd0;
    //展开时宽度
    .el-menu-vertical-demo:not(.el-menu--collapse) {
      width: 256px;
    }
    .el-menu {
      height: 100%;
      border: 0 !important; //垂直时,去除右侧白边
    }
    //perfect-scrollbar默认的类名。自定义滚动条内容区域高度
    .ps {
      height: 100%;
    }
  }
}
</style>

到此这篇关于Vue中使用vue2-perfect-scrollbar滚动条的文章就介绍到这了,更多相关vue2-perfect-scrollbar滚动条内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • vue的滚动条插件实现代码

    这篇文章主要介绍了vue的滚动条插件实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 效果如下 代码如下 <template> <div class="vue-scroll" ref="vueScrollW"> <div class="vue-scroll-w" ref="vueScroll" > <div class=&quo

  • vue实现web滚动条分页

    本文实例为大家分享了vue web滚动条分页的具体代码,供大家参考,具体内容如下 1.在你的帮助类里面新建一个slidePagination.js文件 2.将下面的代码复制进去 import Vue from 'vue' // 聚焦指令 // 注册一个全局自定义指令 `v-focus` // v-focus Vue.directive('focus', {     // 当被绑定的元素插入到 DOM 中时--     inserted: function (el) {         // 聚焦

  • vue实现一个滚动条样式

    起初是想修改浏览器滚动条样式来达到效果 但是查阅了资料 浏览器滚动条不能修改宽度与位置 没办法只能自己写 首先是滚动条样式 <div class="scrollBar" v-if="roleList.length > 5"> <div class="box" @mousedown="move" v-bind:style="{ width: activewidth + 'px' }"

  • Vue实现渲染数据后控制滚动条位置(推荐)

    需求场景如下: 实现了消息发送,如果容器内消息过多,会出现滚动条,最新的消息位于最底部,不能及时出现在可视区域内,此时就需要在渲染列表后,将滚动条的位置定位到最底部.先来看看最终实现的效果 实现思路 渲染完数据后,通过refs对象获取消息容器的实际高度 将滚动条的设置到最底部 实现过程 sendMessage: function (event) { // 数据渲染 this.senderMessageList.push(thisSenderMessageObj); // 改变滚动条位置 this

  • vue实现两个区域滚动条同步滚动

    本文实例为大家分享了vue实现两个区域滚动条同步滚动的具体代码,供大家参考,具体内容如下 项目开发中,遇到一个比较两个form差异的需求,但当item过多就需要滚动条,这里就用到了滚动条同步的地方,其实原理和git的差异比较差不多,这里来做一下分析. 这是效果图: 要点分析: 其实主要是通过ref属性来操控两个div的scrollTop属性 <div class="customer-span" ref="systemForm" @scroll="sy

  • vue实现滚动条始终悬浮在页面最下方

    本文实例为大家分享了vue实现滚动条始终悬浮在页面最下方的具体代码,供大家参考,具体内容如下 需求 表格宽高都超出浏览器显示大小,横向滚动条需要始终浮在最下方便于滚动展示数据 思路 在表格下方添加一个滚动条容器,并且采用position: fixed定位始终浮在页面下方.在通过滚动事件绑定该容器与表格的横向滚动同步.在表格内容小于浏览器显示高度时,只展示表格滚动条. 实现 <div class="tab-table" id="tabTable" @scroll

  • vue修改滚动条样式的方法

    目录 首先要知道,修改滚动条样式,利用伪元素-webkit-scrollbar. 注意, ::-webkit-scrollbar仅仅支持WebKit的浏览器(例如谷歌Chrome.苹果Safari). 其次还需要了解滚动条的一些组成: ::-webkit-scrollbar 滚动条整体部分,可以设置宽度等 ::-webkit-scrollbar-thumb 滚动条里面的滑块 ::-webkit-scrollbar-button 滚动条轨道两端的按钮,允许通过点击以微调滑块的位置 ::-webki

  • vue中改变滚动条样式的方法

    写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字.我热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的. 这博客是对自己学习的一点点总结及记录,如果您对 Java.算法 感兴趣,可以关注我的动态,我们一起学习. 用知识改变命运,让我们的家人过上更好的生活. 今天在自己开发的一个项目中,需求是让浏览器的滚动轴变细.想了好长时间才完成,在目前的测试中,滚动条在IE浏览器中不支持. scrollbar.css @charset "utf-8"; ::-webkit-s

  • vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法

    有时候我们需要页面滚动条滚动到某一固定的位置,一般使用Window scrollTo() 方法. 语法就是:scrollTo(xpos,ypos) xpos:必需.要在窗口文档显示区左上角显示的文档的 x 坐标. ypos:必需.要在窗口文档显示区左上角显示的文档的 y 坐标. 例如滚动内容的坐标位置100,500: window.scrollTo(100,500); 好了,这个scrollTop这儿只是简单介绍一下,下面我们介绍下veu-router中的滚动行为. 使用前端路由,当切换到新路由

  • Vue中使用vue2-perfect-scrollbar制作滚动条

    官方地址:https://github.com/mercs600/vue2-perfect-scrollbar 下载: cnpm i -S vue2-perfect-scrollbar main.js中引用: import PerfectScrollbar from 'vue2-perfect-scrollbar' import 'vue2-perfect-scrollbar/dist/vue2-perfect-scrollbar.css' Vue.use(PerfectScrollbar) 使

  • vue中使用echarts制作圆环图的实例代码

    vue使用echarts制作圆环图,代码如下所示: <div id="main"></div> <script type="text/ecmascript-6"> export default { //从父组件中接收到的数据 props:{ chartT:{ type:Object, required:true } }, data () { return { charts: '', totalIncome:'', opinionD

  • vue 中滚动条始终定位在底部的方法

    滚动条定位在底部,首先想到的是,动态修改滚动条到顶部的距离等于div的高度, 代码实现: var div = document.getElementById('data-list-content') div.scrollTop = div.scrollHeight 但是问题来了,滚动条并没有到达底部,而是距离底部还有一点距离(一脸懵逼) 估计是动态加载数据时,数据还未加载,滚动条就已经执行,知道原因了,那就实践呗. 第二次尝试,利用vue的watch监控数据的改变,然后动态修改滚动条到顶部的距离

  • vue 中使用 vxe-table 制作可编辑表格的使用过程

    项目上有一个表格需要实现在线编辑,开始用了 element 的el-table 实现,单元格内基础情况就是监听了单击单元格切换一个span标签与input标签,复杂点的单元格使用了大量的条件判断来实现对应的编辑操作,比如下拉选,popover弹框编辑.整个表格几十列,十几条数据就已经出现了明显的卡顿,在做了诸多操作(比如el-input使用原生input替换.减少判断.减少频繁的数据切换等)之后,速度虽然有所提升,但是还是肉眼可见的卡顿,基本不可用.然后便转战vxe-table,重写了一遍这个表

  • Vue中使用js制作进度条式数据对比动画

    本文实例为大家分享了Vue中使用js制作进度条式数据对比动画的具体代码,供大家参考,具体内容如下 实现的效果:(初始化以及浏览器resize的时候两侧的条形为向两侧递增的动画,其中两端的数字也是递增的动画) HTML部分: <div class="no-ivatargo-chart-b">   <div class="investment-ability">     <div class="title">  

  • vue中el-table两个表尾合计行联动同步滚动条实例代码

    目录 问题描述 效果图 思路 完整代码 总结 问题描述 最近产品提出一个需求,说是做表格呈现统计数据,不过数据源是来自两个地方的,所以需要做两个表格去呈现数据,同时在表格最后统计数据. 效果图 我们先看一下效果图 思路 获取对应的两个表格设置滚动条的dom,并通过Element.scrollLeft去设置滚动的距离 官方文档:developer.mozilla.org/zh-CN/docs/… 滚动容器(审查元素即可得知): 完整代码 自己演示的话,直接复制粘贴即可,代码中包含注释 <templ

  • vue中设置滚动条方式

    目录 vue设置滚动条 vue如何在div中设置滚动条呢? vue控制滚动条 vue设置滚动条 vue如何在div中设置滚动条呢? 首先需要写一下css样式 <div     :style="{'max-height': this.timeLineHeight + 'px' }"     style="overflow-y:scroll;"  >              </div> 在这个div中,放的是你写的前端代码.它是可以滚动的.

  • VueAwesomeSwiper在VUE中的使用以及遇到的一些问题

    Vue-Awesome-Swiper 轮播图插件,可以同时支持Vue.js(1.X ~ 2.X),兼顾PC和移动端,随着vue的广泛使用,其中插件swiper也算是使用的比较频繁的插件,现在分享一下使用方法以及开发中会遇到的一些问题. 我们先下载包,然后去main.js里面配置. npm install vue-awesome-swiper --save 我们可以用import的方法 //import import Vue from 'vue' import VueAwesomeSwiper f

随机推荐