CSS 实现自定义滚动条样式

news/2025/4/1 18:12:39/文章来源:https://www.cnblogs.com/yuzhihui/p/18795684

CSS 实现自定义滚动条样式

要兼容主流浏览器(Chrome、Safari、Edge、Firefox 等),需要综合使用 Webkit 的 ::-webkit-scrollbar 伪元素和 Firefox 支持的 scrollbar-width 以及 scrollbar-color 属性。由于目前主流浏览器中只有 Webkit 内核和 Firefox 提供了滚动条自定义的支持,而其他浏览器(如老版本 IE)已基本淘汰或不支持,将重点针对这两种情况设计兼容方案。

  • scrollbar-width

img

  • scrollbar-color

img

  • ::-webkit-scrollbar

img

以下是一个兼顾主流浏览器的自定义滚动条样式方案:

完整兼容代码示例

/* 针对特定元素应用滚动条样式 */
.custom-scroll {/* Firefox 兼容性 */scrollbar-width: thin; /* 滚动条宽度:thin(细)、auto(默认) */scrollbar-color: #888 #f1f1f1; /* 滑块颜色 轨道颜色 *//* 基本样式,确保溢出时显示滚动条 */overflow-y: auto;max-height: 300px; /* 示例高度,可根据需要调整 */
}/* Webkit 浏览器(Chrome、Safari、Edge) */
.custom-scroll::-webkit-scrollbar {width: 10px; /* 滚动条宽度 */height: 10px; /* 水平滚动条高度 */
}.custom-scroll::-webkit-scrollbar-track {background: #f1f1f1; /* 轨道背景色 */border-radius: 5px; /* 圆角 */
}.custom-scroll::-webkit-scrollbar-thumb {background: #888; /* 滑块颜色 */border-radius: 5px; /* 圆角 */
}.custom-scroll::-webkit-scrollbar-thumb:hover {background: #555; /* 悬停时的滑块颜色 */
}

HTML 示例

<div class="custom-scroll"><p>这里是内容,重复多行以触发滚动条...</p><p>这里是内容,重复多行以触发滚动条...</p><p>这里是内容,重复多行以触发滚动条...</p><!-- 添加足够内容以显示滚动条 -->
</div>

主流浏览器兼容性说明

  1. Chrome、Safari、Edge(Webkit 内核)

    • 支持 ::-webkit-scrollbar 伪元素,可以实现完整的样式自定义,包括宽度、颜色、圆角、悬停效果等。
  2. Firefox

    • 支持 scrollbar-widthscrollbar-color 属性。
    • scrollbar-width 可选值:auto(默认)、thin(细)、none(隐藏)。
    • scrollbar-color 指定滑块和轨道的颜色,但不支持圆角或悬停效果。
  3. 其他浏览器

    • 老版本 IE 不支持滚动条自定义,但 IE 已基本淘汰(2023 年后微软停止支持)。
    • 移动端浏览器(iOS Safari、Android Chrome 等)通常隐藏滚动条,自定义效果可能不明显。

实现效果

  • Chrome/Edge/Safari:滚动条宽度为 10px,轨道为浅灰色 (#f1f1f1),滑块为灰色 (#888),悬停时变深 (#555),带圆角。
  • Firefox:滚动条为细条,滑块为 #888,轨道为 #f1f1f1,无圆角和悬停效果。
  • 不支持的浏览器:显示默认滚动条样式。

注意事项

  1. 全局 vs 局部

    • 上述代码只对 .custom-scroll 类生效。如果想全局应用,去掉类选择器直接写伪元素即可,但建议局部应用以避免影响页面其他部分的默认行为。
  2. 隐藏滚动条

    • 如果想保留滚动功能但隐藏滚动条,可以添加:
      .custom-scroll::-webkit-scrollbar {display: none; /* Webkit 隐藏滚动条 */
      }
      .custom-scroll {scrollbar-width: none; /* Firefox 隐藏滚动条 */
      }
      
  3. 性能优化

    • 避免过于复杂的样式(如渐变、动画),以减少渲染负担。

扩展:更现代化的方案

如果项目允许使用 JavaScript,可以考虑借助库(如 SimpleBarOverlayScrollbars)实现跨浏览器一致的滚动条样式。这些库能提供更统一的体验,且支持更多自定义选项。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/906621.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重置OpenEuler操作系统的root管理员密码

(1)启动OpenEuler系统或在终端执行重启系统命令reboot,在系统引导界面按“e”键进入内核编辑界面。成功进入内核编辑模式界面,要求输入username,这里输入root,然后要求输入密码,默认密码为openEuler#12。(2)用户名和密码输入正确后进入引导编辑界面:(3)按向下光标,…

Spring 和 Spring Boot 之间的比较

概述 本位我们将讨论标准 Spring 框架和 Spring Boot 之间的区别。 将重点讨论 Spring 的模块,如 MVC 和 Security,在 Spring 中使用时与 在Spring Boot 中使用时有何不同。 什么是 Spring 简而言之,Spring 框架为开发 Java 应用程序提供了全面的基础设施支持。它包含了一些…

出现Invalid bound statement (not found)错误

出现Invalid bound statement (not found)错误时,通常是由于MyBatis无法正确匹配Mapper接口与XML文件的映射关系。以下是具体排查步骤和解决方案:

当Kafka化身抽水马桶:论组件并发提升与系统可用性的量子纠缠关系

《当Kafka化身抽水马桶:论组件并发提升与系统可用性的量子纠缠关系》引言:一场OOM引发的血案 某个月黑风高的夜晚,监控系统突然发出刺耳的警报——我们的数据发现流水线集体扑街。事后复盘发现:Kafka集群、Gateway、Discovery服务默契地同时表演了OOM自杀式艺术行为。这场事…

EtherCAT转DeviceNet看台达MH2如何借助网关与欧姆龙CJ1W-DRM21通讯​

一.案例背景台达MH2设备通常采用EtherCAT通信协议,这种协议在高速实时通信方面表现出色,适合设备之间的快速数据交换和精准控制。而欧姆龙CJ1W-DRM21 模块基于DeviceNet通信协议,DeviceNet在工业现场总线领域应用广泛,侧重于设备的分布式控制和信息共享。EtherCAT与DeviceN…

温湿度传感器:核心原理与跨领域应用解析

一、温湿度传感器的技术演进与核心价值 温湿度传感器是一种通过物理或化学机制实时监测环境温湿度参数的电子设备。在物联网(IoT)与智慧化转型的浪潮中,其作为环境感知的 “神经末梢”,已渗透至工业制造、农业种植、医疗仓储等领域。根据市场研究机构的数据,2025 年全球温…

20242830 2021-2022-2 《网络攻防实践》第六周作业

20242830 2021-2022-2 《网络攻防实践》第六周作业 一、知识点梳理与总结本次实验旨在学会使用Metasploit软件对Windows系统进行远程渗透实验,能够让我们深入了解漏洞的原理和利用过程,如MS08-067这样的常见漏洞,通过实际操作去发现和利用它们,可以更加直观地理解系统存在的…

数字先锋 | 打造专属AI大脑,天翼云助力重庆理工大学开启智慧校园新篇!

从在线课程的蓬勃兴起,到远程教育的逐渐普及,再到智能教学工具的广泛应用……人工智能、大数据、云计算等前沿技术迅速发展的当下,科技正以前所未有的深度和广度重塑教育领域,促使教育各个层面发生深刻变革。师生对个性化、智能化教育服务的期待与日俱增,智慧校园建设,成…

【洛谷P6464】传送门

每天刷个一两题 比较值得写的会写在这里 P6464 [传智杯 #2 决赛] 传送门 题目描述 传智专修学院里有 \(n\) 栋教学楼,有 \(m\) 条双向通行道路连接这些教学楼,不存在重边和自环。每条道路都有一定的长度,而且所有教学楼之间都可以直接或者间接的通过道路到达。我们可以很容易…

高度混淆和多层嵌套的JSP案例免杀思路

免责声明:本文所涉及的技术仅供学习和参考,严禁使用本文内容从事违法行为和未授权行为,如因个人原因造成不良后果,均由使用者本人负责,作者及本博客不承担任何责任。 01 分析特征 目前webshell检测方式还是以检测特征为主,像JSP木马中常见的Runtime、ProcessBuilder、rea…

某项目三台设备PCIE Surprise Down故障分析

描述: 某项目交付过程中,发现三台服务器报The PCIe Card 1 (PCIe Device) triggered an uncorrectable error的错误(如下图)分析 通过fdm/fdm_output日志,发现存在大量的PCIe的报错(如下),可以看出来全是Surprise Down Error错误,且问题都说发生在CPU1 的Riser模组上检…

关联(Association), 聚合(Aggregation), 组合(Composition) 在软件设计模式中的区别

关联(Association)、聚合(Aggregation)与组合(Composition)的区别 这三种关系都是面向对象设计中描述类之间关系的重要概念,它们在耦合强度、生命周期管理等方面有显著差异。 1. 关联(Association) 基本特征:最通用的关系类型,表示类之间的使用关系可以是单向或双向的关联对…