web自定义多样式滚动条插件overlayscrollbars应用

文章发布于 2023-07-23

overlayscrollbars自定义滚动条插件,支持vue,react,jquery,js等。滚动样式支持多主题。

安装

cdn
//css
<link href="https://cdnjs.cloudflare.com/ajax/libs/overlayscrollbars/1.13.3/css/OverlayScrollbars.min.css"/>

//js原生
<script src="https://cdnjs.cloudflare.com/ajax/libs/overlayscrollbars/1.13.3/js/OverlayScrollbars.min.js"></script>

//jquery
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>

//依赖jQuery
<script src="https://cdnjs.cloudflare.com/ajax/libs/overlayscrollbars/1.13.3/js/jquery.overlayScrollbars.min.js"></script>
npm
npm install overlayscrollbars

开始使用

第一步

引入样式文件

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/overlayscrollbars/1.13.3/css/OverlayScrollbars.min.css" />

如果需要使用其他滚动条样式,需要下载并引入新的css文件,将css文件下载下来。然后引入到文件中。

为了避免被覆盖,自定义样式需要引入到overlayscrollbars.min.css的下面
<link rel="stylesheet" href="./os-theme-round-dark.css" />
所有滚动条css样式:
https://kingsora.github.io/OverlayScrollbars/etc/os-theme-round-dark.css
https://kingsora.github.io/OverlayScrollbars/etc/os-theme-round-light.css
https://kingsora.github.io/OverlayScrollbars/etc/os-theme-block-dark.css
https://kingsora.github.io/OverlayScrollbars/etc/os-theme-block-light.css
https://kingsora.github.io/OverlayScrollbars/etc/os-theme-block-light.css
https://kingsora.github.io/OverlayScrollbars/etc/os-theme-thin-light.css
https://kingsora.github.io/OverlayScrollbars/etc/os-theme-thick-dark.css
https://kingsora.github.io/OverlayScrollbars/etc/os-theme-thick-light.css
https://kingsora.github.io/OverlayScrollbars/etc/os-theme-minimal-light.css
https://kingsora.github.io/OverlayScrollbars/etc/os-theme-minimal-dark.css

注意:在配置options参数时,className值应该为对应的css文件名称。例如className:'os-theme-round-dark'

第二步

定义一个容器,设置宽高。

<div id="container_box" style="width:500px;height:200px">
     ...
</div>
第三步

引入js文件

<script src="https://cdnjs.cloudflare.com/ajax/libs/overlayscrollbars/1.13.3/js/OverlayScrollbars.min.js"></script>

如果项目依赖于jquery。需要引入jquery。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
第四步

调用overlayscrollbars API

document.addEventListener("DOMContentLoaded", function() {
    OverlayScrollbars(document.querySelector("#container_box"), {
        className:'os-theme-round-dark'
    });
});

如果依赖于jquery,则可以使用下面的方法调用

$(function(){
    $('#container').overlayScrollbars({
        className:'os-theme-round-dark' // 使用其他的滚动条样式才需要设置此项
    })
})

vue 中使用

安装
npm install overlayscrollbars
注册组件

在main.js中全局注册

import 'overlayscrollbars/css/OverlayScrollbars.css';
import { OverlayScrollbarsComponent } from 'overlayscrollbars-vue';
// global registration
Vue.component('overlay-scrollbars', OverlayScrollbarsComponent);

在vue sfc单文件中局部注册

import 'overlayscrollbars/css/OverlayScrollbars.css';
import { OverlayScrollbarsComponent } from 'overlayscrollbars-vue';

export default {
    components:{
        "overlay-scrollbars":OverlayScrollbarsComponent
    },
    data(){
        return {}
    }
}
模板
<template>
    <div>
        <overlay-scrollbars style="height:100%" :options="options">
            ...
        </overlay-scrollbars>
    </div>
</template>

<sctipt>
export default {
    data(){
        return {
            options:{
                className:'os-theme-round-dark'
                   ...
        		}
        }
    }
}
</sctipt>

实例

使用js实现自定义滚动条,完整代码如下:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>自定义滚动条插件overlay scrollbars</title>
        <link rel="stylesheet" href="./overlayscrollbars.min.css" />
        <link
            rel="stylesheet"
            href="./overlayscrollbars.os-theme-round-dark.css"
        />
    </head>
    <body>
        <div
            id="container"
            style="width: 500px; height: 200px; overflow: hidden"
        >
            html.os-html,html.os-html>.os-host{display:block;overflow:hidden;box-sizing:border-important;position:absolute!important;display:block!important;top:0!important;left:0!important;marginnherit;text-align:inherit;text-shadow:inherit;text-overflow:inherit;letter-spacing:inherit;word-spacing:inherit;line-height:inherit;unicode-bidi:inherit;direction:inherit;color:inherit;cursor:text}.os-resize-observer,.os-resize-observer-host{box-sizing:inherit;display:block;visibility:hidden;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.os-resize-observer-host{padding:inherit;border:inherit;border-color:transparent;border-style:solid;box-sizing:border-box}.os-resize-observer-host.observed{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.os-resize-observer-host>.os-resize-observer,.os-resize-observer-host.observed>.os-resize-observer{height:200%;width:200%;padding:inherit;border:inherit;margin:0;display:block;box-sizing:content-box}.os-resize-observer-host.observed>.os-resize-observer,.os-resize-observer-host.observed>.os-resize-observer:before{display:flex;position:relative;flex-grow:1;flex-shrink:0;flex-basis:auto;box-sizing:border-box}.os-resize-observer-host.observed>.os-resize-os-resize-observer-dummy-animation}object.os-resize-observer{box-sizing:border-box!important}@-webkit-keyframes
        </div>

        <script src="https://cdnjs.cloudflare.com/ajax/libs/overlayscrollbars/1.13.3/js/OverlayScrollbars.min.js"></script>
        <script>
            OverlayScrollbars(document.querySelector("#container"), {});
        </script>
    </body>
</html>