zoukankan      html  css  js  c++  java
  • css自定义滚动条样式

    css自定义滚动条样式

    原文地址

    不同的浏览器自定义滚动条时用到的属性不同,主要分为两大类(主要讨论现代浏览器,不包含IE):webkit内核和Firefox。

    webkit内核的浏览器

    webkit内核的浏览器包括Chrome,Safari,Edge等,在这些浏览器中自定义滚动条样式用到下面这些属性:

    • ::-webkit-scrollbar – 整个滚动条

    • ::-webkit-scrollbar-track – 滑块的轨道

    • ::-webkit-scrollbar-thumb – 滑块

    • ::-webkit-scrollbar-button – 滚动条两端的上/下按钮

    • ::-webkit-scrollbar-track-piece – 滑块的轨道上没有被滑块覆盖的部分

    • ::-webkit-scrollbar-corner – 水平滚动条和垂直滚动条交汇的角

    mdn文档

    Firefox浏览器

    在Firefox浏览器中自定义滚动条样式用到以下属性:

    • scrollbar-color - 值分为两部分,第一部分是滑块颜色,第二部分是轨道背景颜色
    • scrollbar-width - 水平滚动条的高度,垂直滚动条的宽度,值只能是 thin 或 auto

    mdn文档

    在webkit内核浏览器中展示的几个例子

    例1 黑色主题滚动条

    html::-webkit-scrollbar {
         20px; 
    }
    
    html::-webkit-scrollbar-track {
        background-color: black;
    }
    
    html::-webkit-scrollbar-thumb {
        background: #4e4e4e;
        border-radius: 25px;
    }
    

    dark theme

    例2 简单风格的滚动条

    鼠标指针放在滚动条滑块上时滑块的颜色会加深,鼠标点击滑块拖动时滑块颜色会再次加深。

    html::-webkit-scrollbar {
         10px;
    }
    
    html::-webkit-scrollbar-track {
        background: rgb(179, 177, 177);
        border-radius: 10px;
    }
    
    html::-webkit-scrollbar-thumb {
        background: rgb(136, 136, 136);
        border-radius: 10px;
    }
    
    html::-webkit-scrollbar-thumb:hover {
        background: rgb(100, 100, 100);
        border-radius: 10px;
    }
    
    html::-webkit-scrollbar-thumb:active {
        background: rgb(68, 68, 68);
        border-radius: 10px;
    }
    

    minimalist

    例3 有图案的滚动条

    html::-webkit-scrollbar {
       	 20px;
    }
    html::-webkit-scrollbar-track {
      	background-image: repeating-linear-gradient(45deg, red 0, red 1px, transparent 0, transparent 50%);
      	background-size: 10px 10px;
    }
    html::-webkit-scrollbar-thumb {
        background: transparent;
        border-radius: 5px;
        border: 2px solid black;
        box-shadow: inset 1px 1px 5px black ;
    }
    

    pattern

    例4 渐变滚动条
    当拖动滑块时,滑块的颜色会发生改变,就像添加了动画一样。

    html::-webkit-scrollbar {
         20px; 
    }
      
    html::-webkit-scrollbar-track {
        background:  linear-gradient(0deg, rgba(255, 0, 0, 1) 0%, rgba(7, 0, 211, 1) 100%);
    }
    
    html::-webkit-scrollbar-thumb {
        background: transparent;
        box-shadow: 0px 0px 0px 100vh black;
    }
    

    gradient

    自定义滚动条样式的局限性和替代方案

    在自定义滚动条样式时存在几个问题:

    1. 缺少跨浏览器支持
    2. 缺少过渡和动画支持
    3. 无法在手机上使用

    一种替代方案是隐藏原来的滚动条,使用其他库替代。用这种方式多少会影响应用的性能。
    由于这些库使用JavaScript模拟原生的滚动条行为,所以也可能存在潜在的问题。

    下面是两个很流行的制作滚动条的开源库:

    1. Grsmto/simplebar
    2. KingSora/OverlayScrollbars

    SimpleBar Library

    使用simplebar库可以很容易的创建自定义滚动条。但是他不支持作为网站的主滚动条,也不支持为<table><textarea><select>元素创建自定义滚动条。
    这个库主要是为即时聊天应用或者页面内需要滚动的元素创建自定义滚动条。

    Overlay Scrollbars Library

    Overlay Scrollbars库与SimpleBar库很像,但是Overlay Scrollbars支持给<body>元素添加滚动条。这意味着你可以将这个库应用于站点的主滚动条。
    这个库还具有跨浏览器支持以及可以在手机上使用的特性。

  • 相关阅读:
    前端发版后清理浏览器缓存处理
    CF235A 【LCM Challenge】
    CF39H 【Multiplication Table】
    CF171C 【A Piece of Cake】
    CF450A 【Jzzhu and Children】
    CF387B 【George and Round】
    火柴棒等式
    P1062 数列 题解
    P1045 麦森数
    (原创)最短路径那些事-1
  • 原文地址:https://www.cnblogs.com/fogwind/p/15545376.html
Copyright © 2011-2022 走看看