CSS:scrollbar-gutter属性简介
<style>.showBox { font-size: 18px; }
.showBox p { margin: 10px 0; }
.showBox code, .showBox pre { background: rgba(0,128,128,.25); padding: 2px 6px; tab-size: 4; }
.showBox pre { padding: 10px 20px; white-space: pre-wrap; word-wrap: break-word; }
.showBox pre code { padding: 0; background: none; }
.showBox blockquote { margin: 10px 20px; padding: 2px 15px; border-left: 3px solid skyblue; background: rgba(240,248,255,.65); }
</style>
<div class="showBox">
<p>scrollbar-gutter 属性用于处理垂直滚动条,为纵向滚动预留控件,防止布局跳动。该属性于2024年12月其被当作标准CSS属性。gutter 是排水沟之意,这里指滚动条的槽。</p>
<blockquote>
<p>
<strong>scrollbar-gutter属性</strong>
</p>
<p>语法 :
<code>scrollbar-gutter: auto | stable | stable both-edges</code>
</p>
<p>说明(
<strong>仅针对经典滚动条(Classic Scrollbars)</strong> :
</p>
<ol>
<li>auto - 初始值,存在滚动条时,它会从内容区域挤占一部分空间</li>
<li>stable - 始终为滚动条预留好空间,即使不出现滚动条</li>
<li>stable both-edges - 同2,并在左侧预留相同尺寸的空间</li>
</ol>
<p>针对更具现代特性的
<strong>叠加滚动条(Overlay Scrollbars)</strong>,scrollbar-gutter 属性不起作用,因为叠加滚动条不占用布局空间,浏览器会忽略这个预留空间指令。通常,叠加滚动条浮于内容层上方,透明或部分透明,类似于移动端(iOS/Android)和 macOS 系统的原生体验。
</p>
</blockquote>
<p>以下示例设置两个里外 div,内 div 高度大于外 div,迫使外 div 出现垂直滚动条,并通过
<code>scrollbar-gutter</code> 属性设置滚动条空间占用状态,可以更改其值观察其行为表现:
</p>
<pre><code id="cbox"><style>
.outer {
margin: 20px auto;
padding: 15px 0;
width: 600px;
height: 460px;
border: 1px solid gray;
overflow: auto; /* 确保内容溢出时出现滚动条 */
scrollbar-color: pink snow;
/* 核心 :gutter属性可选值有 auto | stable | stable both-edges */
scrollbar-gutter: stable both-edges;
}
.inner {
width: 100%;
height: 200%; /* 令外层div出现垂直滚动条 */
background: linear-gradient(pink, gray, tan);
}
</style>
<div class="outer">
<div class="inner"></div>
</div></code></pre>
<h2>效果:</h2>
<div id="sbox"></div>
<p>这里只是演示 gutter 属性值中的一个,需要观察、体验其余值的表现可将代码存为本地HTML文档(头尾补上完整的页面其余标签),如果想省事,可以直接拿到
<a href="http://mhh.52qingyin.cn/api/tiebao/tiebao.html" title="说明">帖宝</a> 运行测试。
</p>
<p>如果希望定义的是Web页面的滚动条,将相关代码放到 body{} 选择器即可(注意,存为本地文档的话 Web 页不能缺少body标签)。</p>
</div>
<script>
sbox.innerHTML = cbox.innerText;
</script> 谢谢黑黑辛苦,来学习了! 梦江南 发表于 2026-3-7 07:52
谢谢黑黑辛苦,来学习了!
{:4_191:} 如果不设置scrollbar-color:,出现的滚动条的颜色就是默认吧。{:4_204:} 红影 发表于 2026-3-7 14:24
如果不设置scrollbar-color:,出现的滚动条的颜色就是默认吧。
对。这就是所谓的缺省值。
我们经常说道缺省、默认这两个概念。某个属性,缺省时的值也称默认值,就是如果不设置它,它就采用默认值。例如 body 的 margin,如果不设置,那么,就默认使用浏览器预设的 8px 马黑黑 发表于 2026-3-7 17:53
对。这就是所谓的缺省值。
我们经常说道缺省、默认这两个概念。某个属性,缺省时的值也称默认值,就是 ...
嗯嗯,知道了{:4_204:} 红影 发表于 2026-3-7 23:38
嗯嗯,知道了
{:4_190:}
页:
[1]