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

CSS背景图片模糊效果溢出绝对定位div容器的问题

解决模糊滤镜溢出绝对定位容器的问题

有一个设置了背景图片的绝对定位div,应用高模糊度滤镜后,模糊效果溢出了容器,问题效果如下:

问题效果

原代码如下:

<div class="p-2 position-relative bg-grey-secondary border-0 rounded-2 card">
    <div class="position-absolute w-100 h-100 bg" style="background-image: url(https://upload.wikimedia.org/wikipedia/commons/thumb/7/70/Solid_white.svg/2048px-Solid_white.svg.png);"></div>
</div>

<style>
div > div {
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center;
    filter: blur(13px);
    opacity: 30%;
    mask-image: linear-gradient(to top, transparent, black);
}
</style>

问题原因

滤镜的模糊效果会向元素外部扩散,默认情况下元素边界不会裁剪这种扩散效果,导致溢出容器。

解决方法

方法一:父容器添加overflow: hidden

给相对定位的父容器设置overflow: hidden,直接裁剪子元素溢出的模糊区域,这是最简单的方案:

<div class="p-2 position-relative bg-grey-secondary border-0 rounded-2 card" style="overflow: hidden;">
    <div class="position-absolute w-100 h-100 bg" style="background-image: url(https://upload.wikimedia.org/wikipedia/commons/thumb/7/70/Solid_white.svg/2048px-Solid_white.svg.png);"></div>
</div>

方法二:子元素加负边距并扩大尺寸

如果模糊半径较大,仅靠overflow: hidden可能还是有边缘溢出,可给子元素设置负边距,让模糊区域完全包含在父容器内部(需配合父容器overflow: hidden):

div > div {
    top: -15px;
    bottom: -15px;
    left: -15px;
    right: -15px;
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center;
    filter: blur(13px);
    opacity: 30%;
    mask-image: linear-gradient(to top, transparent, black);
}

负边距数值建议大于等于模糊半径(这里设为15px,大于13px的模糊半径)。

方法三:使用backdrop-filter(场景适配时)

如果是要实现父容器背景模糊的效果,可直接用backdrop-filter替代子元素的背景模糊,无需担心溢出问题:

.card {
    backdrop-filter: blur(13px);
    background-color: rgba(200, 200, 200, 0.3); /* 配合透明度模拟原效果 */
}

内容的提问来源于stack exchange,提问作者Felix Mühlenhoff

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:30:45