CSS 自定义滚动条和强制显示

本文介绍如何使用CSS定制滚动条样式,包括隐藏默认滚动条、设置滚动条宽度和高度,以及自定义滚动条的其他样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<div class="frame">
    Foo<br />
    Bar<br  />
    Baz<br />
    Help I'm trapped in an HTML factory! 
</div>
.frame {
    overflow-y: auto;
    border: 1px solid black;
    height: 3em;
    width: 10em;
    line-height: 1em;
}

.frame::-webkit-scrollbar {
    -webkit-appearance: none;
}

.frame::-webkit-scrollbar:vertical {
    width: 11px;
}

.frame::-webkit-scrollbar:horizontal {
    height: 11px;
}

.frame::-webkit-scrollbar-thumb {
    border-radius: 8px;
    border: 2px solid white; /* should match background, can't be transparent */
    background-color: rgba(0, 0, 0, .5);
}

核心代码由 Steven Lewis:https://codepen.io/stevenlewis/pen/hubpL 提供,本人用到,精简下顺便搬运。

溢出滚动讲起

Web 开发中,经常遇到需要固定容器大小,然后内部内容超出的情况,相信非技术的也经常会遇到这样的场景,没错,几乎打开任何一个门户网站你使用鼠标滚轮就属于上面的情况。

解决方案自然就是 overflow 这个 CSS 属性。

visible 默认值。内容不会被修剪,会呈现在元素框之外。hidden 内容会被修剪,并且其余内容是不可见的。scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。inherit 规定应该从父元素继承 overflow 属性的值。

效果如下:

visible

上面是 visible。

hidden

上面是 hidden。

scroll 与 auto

上面是 scroll 与 auto。

注意,Chrome 系列浏览器都会自动隐藏滚动条,不论设置 auto 还是 scroll。

因此我们才有今天的话题。

inherit 就不举例了,这个与父元素有关。

强制显示滚动条

首先,scroll 说好的显示,被浏览器给搞掉了。

其次,隐藏是好事毕竟占位置,而且当今的网民基本都本能的知道滚动操作。

最后,个人举四肢赞成自动隐藏。

但是!!!

你总会遇到不怎么上网的网民,在看不到内容时候不知所措。

亦或者,你遇到的坑爹的老板,就是要让你显示(这个老板可能不怎么上网……)。

或者你们产品设计对象就是一些非网民的使用。

又或者你们设计觉得有个自定义滚动条好看。

等等等等情况,相信我,你一定会遇到这个情况的。

于是我们需要定制一个滚动条,放心,CSS 伪类已经给你提供好了。

核心代码由 Steven Lewis:https://codepen.io/stevenlewis/pen/hubpL 提供,本人用到,精简下顺便搬运。

Foo
Bar
Baz
Help I'm trapped in an HTML factory!
上面是 HTML 代码。

frame { overflow-y: auto; border: 1px solid black; height: 3em; width: 10em; line-height: 1em;}.frame::-webkit-scrollbar { -webkit-appearance: none;}.frame::-webkit-scrollbar:vertical { width: 11px;}.frame::-webkit-scrollbar-thumb { border-radius: 8px; border: 2px solid white; background-color: rgba(0, 0, 0, .5);}这里是对应的 CSS 代码。

做了对比动图,大家看一下:

auto 或 scroll

上面是 auto(或 scroll)控制,细节是右边的滚动条会自动隐藏。

定制

上面是经过定制的,所以不会隐藏。

.frame::-webkit-scrollbar { -webkit-appearance: none;}隐藏默认的滚动条。

.frame::-webkit-scrollbar:vertical { width: 11px;}设置垂直滚动条宽度。

当然也有水平滚动条配置,.frame::-webkit-scrollbar:horizontal,那么就要设置他的高度的。如下:

.frame::-webkit-scrollbar:horizontal { height: 11px;}.frame::-webkit-scrollbar-thumb { border-radius: 8px; border: 2px solid red; background-color: rgba(0, 0, 0, .5);}滚动条的其他样式定制,注意,这个一定也要定制,否则就是一个透明的滚动条……

OK,建议没有用过或者忘了的小伙伴保存一下,一定会再次用到的。

转自:https://baijiahao.baidu.com/s?id=1620626742712547161&wfr=spider&for=pc

### 自定义滚动条样式的实现方法 通过 CSS 可以灵活地调整网页中的滚动条样式,从而让其更好地融入整体设计风格。以下是具体的实现方式: #### 1. 基本结构的选择器 为了覆盖整个文档的滚动条,通常需要针对 `html` 或 `body` 使用 `-webkit-scrollbar` 伪元素来设置基本样式。 ```css /* 定义滚动条的整体宽度 */ html::-webkit-scrollbar { width: 10px; /* 设置滚动条宽度 */ } ``` 此部分代码设置了滚动条的基础宽度,并适用于大多数基于 WebKit 的浏览器[^2]。 --- #### 2. 轨道区域的样式设定 滚动条的轨道可以通过 `-webkit-scrollbar-track` 来定制。这允许开发者更改轨道的颜色、边框以及其他视觉效果。 ```css /* 定义滚动条轨道的样式 */ html::-webkit-scrollbar-track { background-color: #f1f1f1; /* 背景颜色 */ border-radius: 5px; /* 圆角处理 */ } ``` 上述代码片段展示了如何为滚动条轨道赋予浅灰色背景以及圆滑边缘的效果[^3]。 --- #### 3. 滑块(Thumb)的外观控制 滑块是用户可以直接拖动的部分,因此它的样式尤为重要。使用 `-webkit-scrollbar-thumb` 可以修改滑块的相关属性。 ```css /* 定义滑块的样式 */ html::-webkit-scrollbar-thumb { background-color: #888; /* 默认状态下的颜色 */ border-radius: 5px; /* 边缘圆润化 */ } /* 鼠标悬停时改变滑块颜色 */ html::-webkit-scrollbar-thumb:hover { background-color: #555; /* 修改鼠标悬浮时的颜色 */ } ``` 这段代码不仅设定了默认状态下滑块的颜色形状,还增加了交互反馈——当用户的光标停留在滑块上时,它会变为更深的色调[^1]。 --- #### 4. 其他可选配置项 除了基础样式外,还可以进一步优化用户体验,比如利用渐变色或者图像填充等方式增强美观度。 ```css /* 应用线性渐变作为滑块背景 */ html::-webkit-scrollbar-thumb { background: linear-gradient(to bottom, #ff7e5f, #feb47b); /* 渐变配色方案 */ } ``` 此外需要注意的是,某些情况下如果内容不足以触发溢出,则不会显示任何滚动条;此时可以根据实际需求动态加载更多数据或将容器固定高度强制启用滚动功能。 --- ### 浏览器兼容性注意事项 尽管现代主流浏览器普遍支持这种技术手段,但仍需留意不同平台间可能存在细微差异。对于非WebKit系内核(如Firefox),目前尚无统一标准解决办法,建议查阅最新官方文档获取更多信息。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值