WHAT - 滚动条 css scrollbar-* 属性

目录

  • 1. 基础属性
    • scrollbar-width
    • scrollbar-color
  • 2. WebKit 浏览器专用属性(Chrome/Safari)
    • 结构说明
    • 完整示例
  • 3. 跨浏览器兼容方案
    • 统一写法(现代浏览器)
  • 4. 高级技巧
    • 自定义滚动条形状
    • 滚动条动画
    • 为特定元素单独设置
  • 5. 实现 macOS 风格滚动条
  • 6. 注意事项

学习 CSS 的scrollbar-*属性可以帮助我们直接通过原生样式自定义浏览器的滚动条外观,无需依赖第三方库。

以下是详细的属性说明和示例:

1. 基础属性

scrollbar-width

  • 作用: 设置滚动条的宽度。
  • 值:auto(默认)、thin(细滚动条)、none(隐藏滚动条)。
  • 示例:
    /* 隐藏滚动条但保留滚动功能 */.container{scrollbar-width:none;}/* 显示细滚动条 */.container{scrollbar-width:thin;}

scrollbar-color

  • 作用: 设置滚动条滑块(thumb)和轨道(track)的颜色。
  • 值:rgb()|rgba()|hex|hsl()|keyword。
  • 示例:
    .container{scrollbar-color:#d3d3d3 #f5f5f5;/* 滑块颜色 轨道颜色 */}

2. WebKit 浏览器专用属性(Chrome/Safari)

WebKit 使用伪元素::-webkit-scrollbar来定制滚动条样式:

结构说明

/* 整个滚动条容器 */::-webkit-scrollbar{width:8px;/* 横向滚动条宽度,纵向滚动条高度 */height:12px;/* 纵向滚动条高度 */}/* 滚动条轨道 */::-webkit-scrollbar-track{background:#f5f5f5;border-radius:6px;}/* 滚动条滑块 */::-webkit-scrollbar-thumb{background:#d3d3d3;border-radius:6px;transition:background 0.2s ease;}/* 滚动条滑块悬停状态 */::-webkit-scrollbar-thumb:hover{background:#a0a0a0;}

完整示例

/* 针对纵向滚动条 */.container{overflow-y:auto;height:300px;}/* WebKit 自定义滚动条 */.container::-webkit-scrollbar{width:8px;}.container::-webkit-scrollbar-track{background:#f5f5f5;border-radius:6px;}.container::-webkit-scrollbar-thumb{background:#d3d3d3;border-radius:6px;}.container::-webkit-scrollbar-thumb:hover{background:#a0a0a0;}

3. 跨浏览器兼容方案

由于不同浏览器对scrollbar-*属性的支持不一致,建议结合以下方法:

统一写法(现代浏览器)

/* 隐藏滚动条但保留滚动功能 */.hide-scrollbar{scrollbar-width:none;/* Firefox */scrollbar-color:transparent transparent;/* Firefox */-ms-overflow-style:none;/* IE/Edge */overflow:-moz-scrollbars-none;/* Firefox */}/* WebKit 浏览器隐藏滚动条 */.hide-scrollbar::-webkit-scrollbar{display:none;}

4. 高级技巧

自定义滚动条形状

通过border-radius实现圆形滚动条:

::-webkit-scrollbar-thumb{border-radius:50%;/* 圆形滑块 */}

滚动条动画

为滑块添加过渡效果:

::-webkit-scrollbar-thumb{transition:background 0.3s ease;}

为特定元素单独设置

只针对某个容器生效:

#my-list{overflow-y:auto;/* 自定义滚动条样式... */}

5. 实现 macOS 风格滚动条

结合上述属性,模拟 macOS 的细长滚动条和悬停效果:

/* 容器样式 */.macos-scrollbar{overflow-y:auto;height:400px;}/* WebKit 自定义 */.macos-scrollbar::-webkit-scrollbar{width:12px;}.macos-scrollbar::-webkit-scrollbar-track{background:#f5f5f5;border-radius:6px;}.macos-scrollbar::-webkit-scrollbar-thumb{background:#d3d3d3;border-radius:6px;transition:background 0.2s ease;}.macos-scrollbar::-webkit-scrollbar-thumb:hover{background:#a0a0a0;}/* Firefox 兼容 */.macos-scrollbar{scrollbar-width:thin;scrollbar-color:#d3d3d3 #f5f5f5;}

在 HOW - 在Windows浏览器中模拟MacOS的滚动条 中我们也介绍过。

6. 注意事项

  1. 浏览器兼容性:

    • 注意浏览器是否支持scrollbar-width和scrollbar-color。
    • Chrome/Safari 可通过::-webkit-scrollbar伪元素。
    • Edge/IE 不推荐使用原生滚动条样式,建议通过第三方库统一处理。
  2. 隐藏滚动条:

    • 使用overflow: hidden会禁用滚动,需谨慎!

通过以上方法,你可以完全掌控滚动条的外观和行为,适配现代浏览器的需求。假如希望引入一些第三方库来实现,可以阅读 HOW - 在Windows浏览器中模拟MacOS的滚动条。

相关新闻

渲染流水线简单梳理

渲染流水线简单梳理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:15:49 阅读更多 →
OpenStack Cinder备份助手cinderback:从快照到恢复的生产级实践

OpenStack Cinder备份助手cinderback:从快照到恢复的生产级实践

简介:面向OpenStack云平台运维与二次开发人员,这份Python脚本资源以Cinder Backup Service为操作对象,旨在简化卷备份与还原流程,并针对官方服务在跨租户管理、在用卷备份等方面的限制给出可落地的变通方案。脚本支持按租户或全部…

2026/10/20 1:15:49 阅读更多 →
Linux Qt 连接达梦数据库:从环境配置到实战代码

Linux Qt 连接达梦数据库:从环境配置到实战代码

1. 引言达梦数据库(DM)是国产主流关系型数据库之一,在政务、金融、能源等行业应用广泛。Qt 作为跨平台 C 应用框架,常被用于开发桌面端和嵌入式端业务系统。本文围绕 Linux 环境下 Qt 连接达梦数据库的完整流程展开,涵…

2026/10/20 1:14:48 阅读更多 →

最新新闻

Qt新建工程全攻略:从环境配置到构建调试一步到位

Qt新建工程全攻略:从环境配置到构建调试一步到位

最近有朋友问我:Qt 到底怎么新建工程?他说自己把 Qt Creator 装好了,结果打开软件,面对一堆模板和选项完全不知道该点哪里。这个问题看起来基础,但我在带新人时发现,能在这一步顺畅走完、并且真正理解每个选…

2026/10/20 4:26:40 阅读更多 →
Flutter集成HarmonyOS实战:从跨平台架构到鸿蒙适配全记录

Flutter集成HarmonyOS实战:从跨平台架构到鸿蒙适配全记录

开篇先说明一个事:这个项目不是我接的“外包订单”,也不是教学 Demo,而是我作为主要开发者,从 0 到 1 做的一个自研社区共享类 App。整个过程涉及三块硬骨头:第一,把“共享社区”这种偏软性的业务逻辑落到产…

2026/10/20 4:26:40 阅读更多 →
PyTorch从零手写Transformer:位置编码、多头注意力与mask详解

PyTorch从零手写Transformer:位置编码、多头注意力与mask详解

先说个个人感受:Transformer 这种架构,看论文、看别人写的博客总觉得挺简单,真正自己用 PyTorch 一行行从零实现一遍,才意识到里面有大量容易出问题的细节。维度、mask、残差和归一化的顺序,任何一个地方没想明白&…

2026/10/20 4:26:40 阅读更多 →
AI检测一片飘红?从降AI率底层逻辑到作业实战全流程

AI检测一片飘红?从降AI率底层逻辑到作业实战全流程

又到了交作业的季节,后台和私信里最密集的问题永远是同一个:老师发的AI检测报告一片飘红,初稿直接被标“疑似AI生成”,怎么办?这几年我陆陆续续试过市面上能见到的各种降AI率工具,说实话,真正能…

2026/10/20 4:26:40 阅读更多 →
Fort Firewall 防火墙配置教程:5分钟配出第一条拦截规则,附排错清单

Fort Firewall 防火墙配置教程:5分钟配出第一条拦截规则,附排错清单

Fort Firewall 防火墙配置教程:5分钟配出第一条拦截规则,附排错清单 【免费下载链接】fort Fort Firewall for Windows 项目地址: https://gitcode.com/GitHub_Trending/fo/fort 一次凌晨的境外异常外联,在 Windows 防火墙日志里几乎没…

2026/10/20 4:26:40 阅读更多 →
技术人技能管理指南:从技能盘点、刻意练习到作品集构建

技术人技能管理指南:从技能盘点、刻意练习到作品集构建

1. 从“skills”这个词说起:为什么它突然成了硬通货“skills”这个词,放在五年前,可能只是简历底部一个不起眼的栏目。但现在你打开任何一个技术社区、招聘页面或者同行群聊,它出现的频率高得离谱。我自己的感受是,过去…

2026/10/20 4:25:39 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →