CSS滚动条原理与自定义样式指南,CSS滚动条样式失效,滚动条样式无效,-webkit-scrollbar无效,overflow不显示滚动条

news/2025/2/26 15:29:14/

滚动内容形成的必要条件

CSS Overflow属性解析

MDN官方文档-Overflow属性
菜鸟教程-Overflow属性

overflow 属性控制内容溢出元素框时在对应的元素区间内是否添加滚动条。

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

⚠️ 重要注意事项:

  1. 仅对明确设置高度的块级元素生效
  2. MacOS系统默认隐藏滚动条(需滑动时才会显示,即使设置scroll值)

实现局部滚动需要满足两个核心条件:

  1. 容器具有确定的高度值(非auto)
  2. 设置overflow: scrolloverflow: auto

典型问题场景分析

<!DOCTYPE html>
<head><style>* {margin: 0;padding: 0;}.nav {width: 100%;height: 64px;background: lightcoral;}.main {/*这里的100%应该为100vh*/height: calc(100% - 64px);background: lightblue;}.content {height: 1300px;}</style>
</head><body><nav class="nav"></nav><main class="main"><div class="content"></div></main>
</body>
</html>

看起main被设置了高度,滚动条应该出现在main内,但实际运行会发现滚动条还是在body上的。

原因是:默认情况下,htmlbody 的高度由内容撑开,而非视口高度。

  • 当 .main 设置 height: calc(100% - 64px) 时,100% 继承的是 body 的高度,而 body 的高度此时等于其内容高度(即 .nav 的 64px + .main 的内容高度),形成循环依赖。

所以解决办法就是

  • 给body或html设定高度为100vh,
  • 或把height: calc(100% - 64px)100%设置为100vh

滚动条样式

浏览器兼容

目前(2025/2/20),推荐使用老的::-webkit-scrollbar属性

因为新的属性没有旧的能改的多,像是圆角和hover之类

  • scrollbar-color: initial;
  • scrollbar-width

⚠️注意:设置了新的scrollbar-color和scrollbar属性会覆盖老webkit属性,导致webkit属性失效

* {/* 平滑锚点跳转时的滚动 */scroll-behavior: smooth;/*谷歌121版本后的新属性与旧webkit-scrollbar冲突*/scrollbar-color: initial;scrollbar-width: initial;
}/* 针对所有元素的Webkit内核浏览器滚动条进行全局样式设置 */
*::-webkit-scrollbar {height: 6px;    /* 水平滚动条的高度 */width: 6px;     /* 垂直滚动条的宽度 */
}/* 隐藏滚动条两端的箭头按钮 */
*::-webkit-scrollbar-button {display: none;  /* 不显示滚动条按钮 */
}/* 自定义滚动条滑块样式 */
*::-webkit-scrollbar-thumb {background-color: var(--scrollbar-color);  /* 使用CSS变量定义滑块颜色 */border-radius: 3px;                        /* 滑块圆角(半径是高度/宽度的一半) */
}/* 鼠标悬停时滑块的样式变化 */
*::-webkit-scrollbar-thumb:hover {background-color: var(--scrollbar-hover-color);  /* 悬停时使用更醒目的颜色 */
}/* 
注意事项:
1. 这些样式仅在Webkit内核浏览器生效(Chrome/Safari/Edge等)
2. --scrollbar-color 和 --scrollbar-hover-color 是CSS变量,需在根元素定义
3. 通过调整 width/height 值可以改变滚动条粗细
4. border-radius 设置为尺寸的一半会呈现胶囊形状
5. 通配符 * 表示应用于所有元素,可根据需要替换为特定选择器
*/

http://www.ppmy.cn/news/1575037.html

相关文章

Plumelog与ELK集成Springboot

背景 在互联网应用中&#xff0c;日志作为一种特殊的数据&#xff0c;其作用和意义都非常重要。通过日志可以分析用户行为和习惯&#xff0c;监控系统中各服务的健康状况&#xff0c;功能使用频度&#xff0c;以及定位和分析系统中的Bug等。在时下流行的分布式、高负载的微服务…

有哪些开源大数据处理项目使用了大模型

以下是一些使用了大模型的开源大数据处理项目&#xff1a; 1. **RedPajama**&#xff1a;这是一个开源项目&#xff0c;使用了LLM大语言模型数据处理组件&#xff0c;对GitHub代码数据进行清洗和处理。具体流程包括数据清洗、过滤低质量样本、识别和删除重复样本等步骤。 2. …

Linux时间日期类指令

1、data指令 基本语法&#xff1a; date &#xff1a; 显示当前时间date %Y : 显示当前年份date %m &#xff1a; 显示当前月份date %d &#xff1a; 显示当前哪一天date “%Y-%m-%d %H:%M:%S" &#xff1a; 显示年月日时分秒date -s 字符串时间 &#xff1a; 设置系统时…

http 协议在互联网中扮演着怎样的角色?

互联网各领域资料分享专区(不定期更新): Sheet 正文 HTTP(超文本传输协议)在互联网中扮演着核心通信协议的角色,是万维网(World Wide Web)的基础技术之一。 1. 客户端-服务器交互的桥梁 浏览器与服务器的通信语言:HTTP定义了浏览器(客户端)如何向服务器请求资源(如…

R语言安装生物信息数据库包

R语言安装生物信息数据库包 在生物信息学领域&#xff0c;R语言是重要的数据分析工具。今天&#xff0c;我们就来聊聊在R语言环境下&#xff0c;安装生物信息数据库包&#xff08;org.*.*.db&#xff09;的步骤。 为什么要安装org.*.*.db系列包 生物信息学分析中&#xff0c…

hutool工具类的DateUtil和LocalDateTimeUtil

目录 java中的Date和LocalDateTime的区别 1.1 设计理念 1.2 功能和特性 1.3 线程安全性 1.4 使用场景 2.1 MySQL 的 DATETIME 类型 2.2 映射关系 hutool工具类的DateUtil和LocalDatetimeUtil工具类 DateUtil使用 LocalDatetimeUtil使用 java中的Date和LocalDateTime的区…

DeepSeek 助力 Vue 开发:打造丝滑的滚动动画(Scroll Animations)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

gotool在线工具集

1. 包含各种 sql 处理 2. 包含 json 处理 3. 包含 图片处理 4. 跨平台传输 gotool