图片灰度悬停变色特效(grayscale 滤镜 4 种玩法 CSS 源码)

CSS 许可:自研原创

图片灰度悬停变色 4 种玩法:灰度转彩色、彩色转灰度、灰度加缩放、复古 sepia 过渡,纯 CSS filter 实现,适合头像墙、作品集、品牌阵列。

效果演示(真实可交互)

把鼠标移到任意一张卡片上,体验灰度 ↔ 彩色之间的平滑过渡。示例用渐变占位图演示,实际项目中把 .gs-img 里的内容换成 <img> 即可。

🌅
① 灰度 → 彩色
🐬
② 彩色 → 灰度
🏜️
③ 灰度 + 放大
🌿
④ 复古 + 彩色

完整代码

HTML 结构:每张卡片是一个 figure,内部 .gs-img 是图片容器(项目中替换为真实 <img> 标签):

<figure class="gs-card">
  <div class="gs-img gs-to-color"><span>🌅</span></div>
  <figcaption>① 灰度 → 彩色</figcaption>
</figure>
<!-- 换用 gs-to-gray / gs-zoom / gs-sepia 切换玩法 -->

核心 CSS:

.gs-img {
  aspect-ratio: 4 / 3;
  border-radius: 12px;
  overflow: hidden;
  transition: transform .45s cubic-bezier(.22, .61, .36, 1),
              filter .45s ease, box-shadow .45s ease;
  will-change: transform, filter;
}

/* ① 默认灰度,悬停恢复彩色 */
.gs-to-color { filter: grayscale(1); }
.gs-card:hover .gs-to-color { filter: grayscale(0); }

/* ② 默认彩色,悬停变灰度 */
.gs-card:hover .gs-to-gray { filter: grayscale(1); }

/* ③ 灰度 + 悬停放大,层次更丰富 */
.gs-to-zoom { filter: grayscale(1); }
.gs-card:hover .gs-to-zoom {
  filter: grayscale(0);
  transform: scale(1.08);
  box-shadow: 0 14px 30px rgba(0, 0, 0, .18);
}

/* ④ 复古 sepia → 悬停彩色 */
.gs-sepia { filter: sepia(.6) saturate(1.1); }
.gs-card:hover .gs-sepia { filter: sepia(0) saturate(1); }

参数说明

参数默认值说明
grayscale() 灰度值1灰度强度,0 为全彩,0.5 为半灰度
sepia() 复古值.6棕褐色调浓度,配合 saturate() 调整饱和度
scale() 放大倍率1.08悬停时的图片放大倍数
过渡时长.45stransition 时长,习惯干脆的交互可改 .25s
缓动函数cubic-bezier(.22,.61,.36,1)先快后慢的标准缓动,也可用 ease-out

兼容性与性能

常见问题

Q: 项目里是真实图片,怎么替换占位图? 把 .gs-img 内部换成 <img src="...">,并设置 width: 100%; height: 100%; object-fit: cover;,滤镜直接作用在图片上即可,CSS 完全不用改。

Q: 移动端没有 hover,灰度效果会怎样? 触屏上首次点击会触发 hover 态让图片恢复彩色,再次点击离开。如果希望默认全彩、点击才变灰,可以给 .gs-img 加 @media (hover: none) 规则关闭灰度。

Q: 为什么我的图片悬停时过渡很生硬? 检查 filter 是否写在 transition 属性列表中,transition: filter .45s ease 不能省略,否则状态切换是瞬变的。

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

许可与来源

  • 许可证:自研原创 —— 粤喵自研原创,可免费用于个人与商业项目,无需署名。查看来源公示与许可清单
  • 来源:粤喵团队原创自研(从效果思路到代码实现均为独立完成,未直接复制第三方代码)
  • 首次发布:2026-09-01 · 最近更新:2026-09-01
  • 修改日志:2026-09-01 首次发布;2026-09-13 补充许可证与来源标注、复制按钮说明与法务页入口
  • 纠错:联系页面 / min@cactus.asia,2 个工作日内核实处理

常见问题

这个组件可以商用吗?

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

浏览器兼容性如何?

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

怎么修改动画参数?

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

✍️ 作者与审核