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

如何将CSS样式限定在指定Div内?fixed定位元素溢出问题

问题核心

position: fixed的定位基准是浏览器视口,和它的父元素divTwo完全无关——不管它嵌套在哪个容器里,都会固定在视口的对应位置,自然会覆盖页面上的其他元素(包括blueBackground)。要实现“仅在divTwo内生效”的效果,得换定位方式或者调整父元素属性。

解决方案

根据你的需求,推荐两种可行方案:

方案一:改用绝对定位(限制在divTwo范围内)

给父元素divTwo设置相对定位和溢出隐藏,子元素用绝对定位,这样蓝色方块会相对于divTwo定位,且超出divTwo的部分会被隐藏,不会跑到blueBackground上方。

修改后的代码:

HTML(无需改动)

<div class="blueBackground"></div>

<div class="divTwo">
    <div class="col-md-12 col-sm-10">   
        <div id="blue_square"></div>
    </div>   
</div>

CSS

.divTwo {
  position: relative; /* 让子元素的绝对定位以它为基准 */
  overflow: hidden; /* 隐藏超出divTwo的部分 */
}

#blue_square{
  position: absolute; /* 替换fixed为absolute */
  right: 0;
  z-index: 9;
  width: 370px;
  box-shadow: 0 0 6px transparent;
  /* 垂直居中在divTwo内 */
  top: 50%;
  transform: translateY(-50%);
}

JS(可选,若需动态计算高度)

如果还是需要用JS计算垂直位置,改成基于divTwo的高度:

$("#blue_square").css("top", $(".divTwo").height() / 2 - 90);

方案二:使用粘性定位(随divTwo滚动)

如果你希望蓝色方块在divTwo处于视口内时固定显示,divTwo滚出视口后跟着消失,可以用position: sticky:

CSS修改

.divTwo {
  position: relative;
}

#blue_square{
  position: sticky;
  right: 0;
  z-index: 9;
  width: 370px;
  box-shadow: 0 0 6px transparent;
  /* 垂直居中 */
  top: 50%;
  transform: translateY(-50%);
}

这种方式下,蓝色方块会始终固定在divTwo的右侧,不会跑到blueBackground的区域。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:19:59