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

图片设置负right值位于右侧时如何去除水平滚动条(不使用overflow:hidden)

问题原因

浏览器默认计算水平滚动范围时,仅会将元素超出视口右边界的部分计入可滚动区域,超出视口左边界的部分不会触发水平滚动条。
你设置left: -80px时,伪元素向左偏移超出父容器,超出部分落在视口左侧,不会触发滚动;而设置right: -80px时,伪元素向右偏移超出父容器,超出部分落在视口右侧,就会触发水平滚动条。

解决方案(无需设置overflow:hidden)

方案1:用left+calc替代right属性

直接用left: calc(100% - 80px)完全等效于right: -80px的定位效果,同时因为基于left属性定位,超出部分落在视口左侧,不会触发滚动条。
修改后的CSS代码如下:

* {
  margin: 0;
  padding: 0;
}
div {
  margin: 100px auto;
  border: 1px solid gray;
  width: 500px;
  position: relative;
}
.bg-img::before {
  content: "";
  position: absolute;
  width: 160px;
  height: 110px;
  z-index: -1;
  top: -50px;
  left: calc(100% - 80px); /* 等效于right: -80px,不会触发滚动条 */
  background-image: url(https://i.ibb.co/Qdz79gF/Sample.png);
  background-size: 100% 100%;
}

对应HTML代码保持不变:

<div class="bg-img">
  This is some text<br>
  This is some text<br>
  This is some text<br>
  This is some text<br>
  This is some text
</div>

方案2:用transform偏移实现

如果需要保留right属性,可以结合transform实现偏移,transform的位移不会被计入盒模型的尺寸计算,也不会触发滚动条:

.bg-img::before {
  content: "";
  position: absolute;
  width: 160px;
  height: 110px;
  z-index: -1;
  top: -50px;
  right: 0;
  transform: translateX(80px); /* 向右偏移80px,等效于right:-80px,不会触发滚动 */
  background-image: url(https://i.ibb.co/Qdz79gF/Sample.png);
  background-size: 100% 100%;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:45:03