You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何组合3张背景图:1张拉伸居中,另外2张分别置于顶部和底部

自定义滚动条双向偏移实现方案

你要实现滚动条滑块中间背景图上下各预留15px的需求,可以直接通过CSS背景的四值定位语法配合calc()动态计算尺寸实现,修改::-webkit-scrollbar-thumb的相关属性即可,完整修改后的代码如下:

/* 全局滚动条样式,要仅作用于指定容器的话,选择器前加容器ID即可,比如 #scroll::-webkit-scrollbar */
::-webkit-scrollbar {
  width: 20px;
}

::-webkit-scrollbar-track {
  background: url('你的轨道图资源地址') right 2px center no-repeat;
  background-size: 10px 100%;
  width: 15px;
}

::-webkit-scrollbar-thumb {
  background-image: url('你的滑块顶部图资源地址'),
    url('你的滑块底部图资源地址'),
    url('你的滑块中间拉伸图资源地址');
  /* 四值定位分别指定三个背景的位置:顶部图靠右顶边、底部图靠右底边、中间图靠右、距离顶部15px */
  background-position: right top,
    right bottom,
    right 0 top 15px;
  background-repeat: no-repeat,
    no-repeat,
    no-repeat;
  /* 中间图高度计算为总高度减去上下各15px,刚好不会覆盖两端的固定背景 */
  background-size: 15px 15px,
    15px 15px,
    15px calc(100% - 30px);
}

#scroll {
  height: 400px;
  width: 200px;
  border: 1px solid black;
  overflow-y: scroll;
}

div > div {
  height: 1000px;
}
<div id="scroll">
<div>Inner Container</div>
</div>

原理解释

  • 背景四值定位语法支持同时指定两个方向的偏移量,right 0 top 15px就表示背景右侧距离容器右侧0px,顶部距离容器顶部15px,完美实现单侧多方向偏移需求
  • calc(100% - 30px)会根据滑块的实时高度动态计算中间拉伸图的高度,自动预留上下各15px的位置给两端的固定背景,实现和border-image一致的自适应适配效果
  • 如果要限制样式仅作用于指定容器,只需要在所有::-webkit-scrollbar开头的选择器前加上容器的选择器即可,比如#scroll::-webkit-scrollbar,不会影响页面其他滚动条的样式

内容的提问来源于stack exchange,提问作者SuperNova

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:06:04