上一篇
HTML中,通过CSS的
::-webkit-scrollbar等伪元素设置滚动条
HTML中设置滚动条样式,主要依赖于CSS(层叠样式表),虽然HTML本身并不直接提供滚动条样式的设置功能,但通过CSS,我们可以对滚动条的各个部分进行精细的控制,以下是如何在HTML中设置滚动条样式的详细指南。
基础概念
在开始之前,了解一些基本概念是很重要的:
- 滚动条超出容器可视范围时出现的垂直或水平条,用于滚动查看隐藏的内容。
- CSS属性:用于控制HTML元素的样式,包括颜色、大小、位置等。
- 伪元素:如
::-webkit-scrollbar,用于访问和修改特定浏览器的UI元素样式。
使用CSS设置滚动条样式
1 全局设置
我们可以通过CSS的overflow属性来控制元素是否显示滚动条,常见的值有:

auto:只有在内容溢出时才显示滚动条。scroll:始终显示滚动条。hidden:隐藏滚动条。
为一个<div>元素设置垂直滚动条:
<div style="overflow-y: auto;"> <!-内容 --> </div>
2 自定义滚动条样式
要自定义滚动条的样式,我们需要使用CSS的伪元素选择器,这些选择器是特定于浏览器的,以下是一些常用的伪元素选择器及其用途:

::-webkit-scrollbar:用于WebKit内核的浏览器(如Chrome、Safari)。::-moz-scrollbar:用于Firefox。::-ms-scrollbar:用于Internet Explorer和Edge。::-o-scrollbar:用于Opera。
2.1 WebKit浏览器(Chrome, Safari)
/ 滚动条整体样式 /
::-webkit-scrollbar {
width: 12px; / 宽度 /
height: 12px; / 高度 /
}
/ 滚动条滑块 /
::-webkit-scrollbar-thumb {
background-color: #888; / 滑块颜色 /
border-radius: 6px; / 圆角 /
}
/ 滚动条轨道 /
::-webkit-scrollbar-track {
background-color: #f1f1f1; / 轨道颜色 /
border-radius: 6px; / 圆角 /
}
2.2 Firefox
/ 滚动条整体样式 /
::-moz-scrollbar {
width: 12px; / 宽度 /
height: 12px; / 高度 /
}
/ 滚动条滑块 /
::-moz-scrollbar-thumb {
background-color: #888; / 滑块颜色 /
border-radius: 6px; / 圆角 /
}
/ 滚动条轨道 /
::-moz-scrollbar-track {
background-color: #f1f1f1; / 轨道颜色 /
border-radius: 6px; / 圆角 /
}
2.3 Internet Explorer/Edge
/ 滚动条整体样式 /
::-ms-scrollbar {
width: 12px; / 宽度 /
height: 12px; / 高度 /
}
/ 滚动条滑块 /
::-ms-scrollbar-thumb {
background-color: #888; / 滑块颜色 /
border-radius: 6px; / 圆角 /
}
/ 滚动条轨道 /
::-ms-scrollbar-track {
background-color: #f1f1f1; / 轨道颜色 /
border-radius: 6px; / 圆角 /
}
2.4 Opera
/ 滚动条整体样式 /
::-o-scrollbar {
width: 12px; / 宽度 /
height: 12px; / 高度 /
}
/ 滚动条滑块 /
::-o-scrollbar-thumb {
background-color: #888; / 滑块颜色 /
border-radius: 6px; / 圆角 /
}
/ 滚动条轨道 /
::-o-scrollbar-track {
background-color: #f1f1f1; / 轨道颜色 /
border-radius: 6px; / 圆角 /
}
跨浏览器兼容性
由于不同浏览器使用不同的伪元素选择器,为了实现跨浏览器的兼容性,通常需要为每个浏览器分别编写样式,以下是一个综合示例:
/ WebKit /
::-webkit-scrollbar {
width: 12px;
}
::-webkit-scrollbar-thumb {
background-color: #888;
border-radius: 6px;
}
::-webkit-scrollbar-track {
background-color: #f1f1f1;
border-radius: 6px;
}
/ Firefox /
::-moz-scrollbar {
width: 12px;
}
::-moz-scrollbar-thumb {
background-color: #888;
border-radius: 6px;
}
::-moz-scrollbar-track {
background-color: #f1f1f1;
border-radius: 6px;
}
/ IE/Edge /
::-ms-scrollbar {
width: 12px;
}
::-ms-scrollbar-thumb {
background-color: #888;
border-radius: 6px;
}
::-ms-scrollbar-track {
background-color: #f1f1f1;
border-radius: 6px;
}
/ Opera /
::-o-scrollbar {
width: 12px;
}
::-o-scrollbar-thumb {
background-color: #888;
border-radius: 6px;
}
::-o-scrollbar-track {
background-color: #f1f1f1;
border-radius: 6px;
}
高级定制
除了基本的样式设置,你还可以通过CSS动画、渐变等效果进一步美化滚动条,添加滑块悬停效果:

::-webkit-scrollbar-thumb:hover {
background-color: #555; / 悬停时的颜色 /
}
注意事项
- 性能考虑:过度复杂的滚动条样式可能会影响页面性能,尤其是在低性能设备上,建议保持样式简洁。
- 用户体验:虽然自定义滚动条可以提升视觉效果,但也要确保其功能性不受影响,避免用户难以识别或操作。
- 浏览器支持:并非所有浏览器都支持自定义滚动条样式,尤其是旧版本的浏览器,测试在不同浏览器中的显示效果很重要。
示例代码
以下是一个完整的示例,展示如何在HTML中设置自定义滚动条样式:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">自定义滚动条示例</title>
<style>
body {
font-family: Arial, sans-serif;
}
.container {
width: 300px;
height: 200px;
overflow: auto; / 允许滚动 /
border: 1px solid #ccc;
padding: 10px;
}
.content {
height: 500px; / 内容高度超过容器 /
background-color: #f9f9f9;
}
/ WebKit /
::-webkit-scrollbar {
width: 12px;
}
::-webkit-scrollbar-thumb {
background-color: #888;
border-radius: 6px;
}
::-webkit-scrollbar-track {
background-color: #f1f1f1;
border-radius: 6px;
}
/ Firefox /
::-moz-scrollbar {
width: 12px;
}
::-moz-scrollbar-thumb {
background-color: #888;
border-radius: 6px;
}
::-moz-scrollbar-track {
background-color: #f1f1f1;
border-radius: 6px;
}
/ IE/Edge /
::-ms-scrollbar {
width: 12px;
}
::-ms-scrollbar-thumb {
background-color: #888;
border-radius: 6px;
}
::-ms-scrollbar-track {
background-color: #f1f1f1;
border-radius: 6px;
}
/ Opera /
::-o-scrollbar {
width: 12px;
}
::-o-scrollbar-thumb {
background-color: #888;
border-radius: 6px;
}
::-o-scrollbar-track {
background-color: #f1f1f1;
border-radius: 6px;
}
/ 悬停效果 /
::-webkit-scrollbar-thumb:hover {
background-color: #555;
}
::-moz-scrollbar-thumb:hover {
background-color: #555;
}
::-ms-scrollbar-thumb:hover {
background-color: #555;
}
::-o-scrollbar-thumb:hover {
background-color: #555;
}
</style>
</head>
<body>
<h1>自定义滚动条示例</h1>
<div class="container">
<p class="content">这是一个可滚动的容器,内容超出了容器的高度,因此会出现滚动条,通过CSS,我们可以自定义滚动条的样式,使其更符合设计需求。</p>
<!-更多内容 -->
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vel purus nec justo tincidunt, dictum enim id, tempor sapien.</p>
<p>Suspendisse potenti. Donec velit urna, malesuada eget felis ac, mattis placerat.</p>
<p>Nulla facilisi. Curabitur non fringilla massa. Mauris euismod nisi in nulla aliquet, eget feugiat purus.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Nunc vitae elit metus. Sed ac odio ut nisi lobortis commodo.</p>
<p>Integer at augue vel turpis lacinia vehicula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer at augue vel turpis lacinia vehicula.</p>
