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

CSS实现hover图片模糊放大时出现背景色边框如何去除

问题根因

动画过程中出现的背景色边框是两个问题共同导致的:

  • 全局通配符*给所有元素(包括img标签)都设置了background-color: rgb(44, 40, 40),当图片应用blur()模糊滤镜时,模糊边缘的半透明区域会透出img自身的背景色,缩放动画过程中这个透出的边缘刚好卡在overflow: hidden的裁剪边界,看起来就像一圈临时出现的边框。
  • 模糊滤镜的渲染边缘默认存在1px左右的抗锯齿溢出,配合圆角裁剪做过渡动画时,会出现边缘漏底的视觉问题。
修复方案

改两处CSS即可彻底解决:

  • 删除通配符选择器里的全局背景色设置,仅给body标签设置页面背景,不要给img等内部元素强加背景属性
  • 给做动画的图片加极小的初始缩放补偿,提前把模糊可能溢出的边缘藏在容器裁剪区域外,避免动画过程中漏边
修正后的核心代码
/*General classes*/
@import url("https://fonts.googleapis.com/css2?family=Play:wght@400;700&display=swap");
* {
  /* 移除此处的全局背景色设置 */
  font-family: "Play", sans-serif;
  padding:0;
  margin: 0;
  box-sizing: border-box;
}
/* 单独给body设置页面全局背景 */
body {
  background-color: rgb(44, 40, 40);
}

.project__img{
    max-width: 100%;
    transition: all 500ms ease ;
    /* 初始微缩放,提前把模糊边缘溢出部分藏在裁剪区外 */
    transform: scale(1.01);
}

.project__wrapper{
    display: flex;
    box-shadow: 0 20px 80px rgba(255, 255, 255, 0.767);
    border-radius: 20px;
    overflow: hidden;
    position: relative;
}

.project__wrapper:before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
    background-color: #1c1d25;
    opacity: 0;
    transition: opacity 450ms ease;
    z-index: 10;
}

.project:hover .project__wrapper:before {
    opacity: 0.7;
}

.project:hover .project__img{
    transform: scale(1.07);
    filter: blur(20px);
}

补充:如果不想给图片加初始缩放,也可以给.project__wrapper加padding: 1px,同样能把模糊产生的边缘溢出完全兜在容器内部,不会出现漏出背景色的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:42:20