图片悬停放大 5 种特效(缩放/旋转/模糊/遮罩 CSS 源码)

CSS 许可:自研原创

5 种图片悬停特效源码:平滑缩放、缩放旋转、模糊锐化、遮罩揭示、平移视差,纯 CSS 实现,适合作品集与商品展示页。

效果演示(真实可交互)

把鼠标移到下方卡片上,体验 5 种不同的图片悬停放大效果。示例使用渐变占位图演示,实际项目中替换为真实图片即可。

🏔️
① 平滑缩放 1.2x
🌊
② 缩放 + 旋转 6°
🌸
③ 模糊 → 锐化
🎨遮罩揭示
④ 遮罩变暗 + 文字上浮
🌌
⑤ 内图放大平移视差

完整代码

HTML 结构:每个 figure 是一张图片卡片,.img 为图片容器,.cap 为遮罩模式下的文字层:

<figure class="z-card">
  <div class="img i-scale"><span>🏔️</span></div>
  <figcaption>① 平滑缩放 1.2x</figcaption>
</figure>
<!-- 换用 i-rotate / i-blur / i-overlay / i-pan 即可切换效果 -->

核心 CSS:

.img {
  aspect-ratio: 4 / 3;              /* 固定比例,防止布局抖动 */
  border-radius: 12px;
  overflow: hidden;                 /* 关键:裁剪放大部分 */
  transition: transform .5s cubic-bezier(.22, .61, .36, 1);
  will-change: transform;
}

/* ① 平滑缩放 */
.z-card:hover .i-scale { transform: scale(1.2); }

/* ② 缩放 + 旋转 */
.z-card:hover .i-rotate { transform: scale(1.2) rotate(6deg); }

/* ③ 模糊 → 锐化:默认模糊,悬停清晰 */
.i-blur { filter: blur(5px); transform: scale(1.06); }
.z-card:hover .i-blur { filter: blur(0); transform: scale(1); }

/* ④ 遮罩变暗 + 文字上浮 */
.i-overlay::after {
  content: '';
  position: absolute; inset: 0;
  background: rgba(15, 17, 23, .55);
  opacity: 0;
  transition: opacity .4s ease;
}
.cap {
  position: absolute; z-index: 1;
  color: #fff; font-size: 15px; font-weight: 600;
  opacity: 0; transform: translateY(14px);
  transition: all .4s ease;
}
.z-card:hover .i-overlay::after { opacity: 1; }
.z-card:hover .cap { opacity: 1; transform: translateY(0); }

/* ⑤ 平移视差:内层放大,悬停回缩露出全貌 */
.i-pan span { transform: scale(1.25); }
.z-card:hover .i-pan span { transform: scale(1); }

参数说明

参数默认值说明
scale() 缩放倍率1.2悬停时图片放大倍数,越大越夸张
rotate() 旋转角度6deg缩放同时的旋转角度
blur() 模糊值5px默认模糊程度,悬停归零
遮罩透明度.55遮罩层最深时的不透明度
动画时长.5s过渡时长,可用 .3s 更干脆

兼容性与性能

常见问题

Q: 项目里是真实图片,直接替换就行吗?.img 换成 <img> 标签并设置 width: 100%; height: 100%; object-fit: cover;,其余 CSS 不变。

Q: 移动端没有 hover,怎么办? 触屏设备上首次点击会触发 hover 态,体验尚可;如需专门的手势放大,建议配合 JS 的点击/触摸事件实现。

Q: 可以商用吗? 可以,本组件为粤喵自研原创,免费商用无需署名,也欢迎按需修改。

Q: 图片是长图,比例会变形吗? 不会,容器固定 aspect-ratio 后用 object-fit: cover 裁切,长图会居中裁掉多余部分。

常见问题

这个组件可以商用吗?

可以。本组件为粤喵自研原创,可免费用于个人和商业项目,无需署名。

浏览器兼容性如何?

支持所有现代浏览器(Chrome / Firefox / Safari / Edge 最新版本)。旧版 IE 不支持 CSS 动画相关特性。

怎么修改动画参数?

直接调整 CSS 中的 animation-duration(时长)、animation-timing-function(缓动曲线)等属性即可,代码中有注释说明。