Vue 美化滚动条 perfect-scrollbar

1、下载 perfect-scrollbar

npm install perfect-scrollbar --save
npm install classlist-polyfill --save

2、新建scrollbar.js 封装perfect-scrollbar使用方法

import Vue from 'vue'
import 'classlist-polyfill'
import PerfectScrollbar from 'perfect-scrollbar'
import 'perfect-scrollbar/css/perfect-scrollbar.css'

const el_scrollBar = (el: any | HTMLElement) => {
    if (el._ps_ instanceof PerfectScrollbar) {
        el._ps_.update()
    } else {
        el._ps_ = new PerfectScrollbar(el, {suppressScrollX: true})
    }
};

Vue.directive('scrollBar', {
    inserted(el, binding, vnode) {
        const rules = ['fixed', 'absolute', 'relative'];
        let position = window.getComputedStyle(el).position;
        if (
            position != 'fixed' &&
            position != 'absolute' &&
            position != 'relative'
        ) {
            console.error(
                `scrollbar所在的容器的position属性必须是以下之一:${rules.join('、')}`
            )
        }
        el_scrollBar(el)
    },

    componentUpdated(el, binding, vnode: any, oldVnode) {
        let content: any = document.getElementById('app-content');
        content.scrollTop = 0;
        try {
            vnode.context.$nextTick(() => {
                el_scrollBar(el)
            })
        } catch (error) {
            console.error(error);
            el_scrollBar(el)
        }
    }
});

3、main.js全局引用

import './utils/scrollbar'
  1. vue 使用
<template>
    <div class="container">
        <ul class="list" v-scrollBar>
           <li>巴拉巴拉</li>
           <li>炫光舞法</li>
           <!--想想这里有一堆li-->
           <li>天舞台</li>
        </ul>
    </div>
</template>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容