应始终让覆盖层存在且初始 opacity: 0,用 transition: opacity 实现平滑叠加;父容器需 position: relative,覆盖层 position: absolute 并匹配图片 border-radius;移动端改用 :active 或 JS 切换 class,并设 pointer-events: none 避免干扰。hover时图片上叠加半透明黑色层但不闪动直接加 transition 在 :hover 里没用,因为初始状态没定义覆盖层,浏览器没法插值动画。必须让覆盖层始终存在,只是初始透明度为 0。用 ::after 或 <div> 做覆盖层,定位在图片上方,<code>opacity: 0 + transition: opacity 0.3s父容器设 position: relative,覆盖层设 position: absolute; top: 0; left: 0; width: 100%; height: 100%别用 rgba(0,0,0,0) 初始值------某些旧版 Safari 对 rgba 动画支持差,统一用 opacity 控制更稳用rgba控制深色强度但保持过渡平滑rgba() 本身不能被 transition 直接驱动(比如从 rgba(0,0,0,0.2) 到 rgba(0,0,0,0.8)),浏览器不识别颜色通道的渐变插值,容易卡顿或跳变。只用 opacity 过渡,深色层背景固定为 rgba(0, 0, 0, 0.8),靠透明度变化"显隐"它如果真要调深浅,改两套 class:.overlay-light 和 .overlay-dark,用 transition: background-color 0.3s ------但仅限纯黑/灰,且需预设好色值避免在 :hover 里写 background: rgba(...) 同时又设 transition,多数情况会失效图片带圆角时覆盖层边缘溢出图片设了 border-radius,但覆盖层是矩形绝对定位,会盖住圆角外的空白,视觉上像"切掉一块"。给覆盖层也加相同 border-radius,和图片一致(如 border-radius: 8px)更稳妥:把图片和覆盖层都包进一个 div,给这个容器设 overflow: hidden 和 border-radius,覆盖层在里面自由定位别依赖 clip-path 模拟圆角------IE 不支持,且和 transition 组合易触发重绘异常移动端 hover 失效或响应延迟手机没有真正 hover,tap 后会触发一次 pseudo-class,但不会持续,导致覆盖层一闪就消失。 Julius AI Julius AI是一款功能强大的AI数据分析工具,可以快速分析和可视化复杂数据。
相关推荐
Escalating_xu1 小时前
【System V 信号量】从 P/V 原语到 Builder 封装:写出可控、可清理的进程互斥组件Full Stack Developme1 小时前
CRM相关库表设计步行cgn1 小时前
Spring 注入 Map 集合详解今儿敲了吗1 小时前
03停用词过滤李可以量化2 小时前
Tornado 部署公域网络安全与防护(上)风跟我说过她2 小时前
SQL 一键转经典 Chen 风格 ER 图:开源 CLI + 在线工具 + Agent Skill这个DBA有点耶2 小时前
MySQL大表DDL锁表锁到崩溃?Online DDL的3个关键参数和实战避坑Ulyanov2 小时前
AudioVision Pro:基于 PySide6 + sounddevice 的实时音频可视化播放器设计ID34610744202 小时前
【课程设计】基于Spring Boot+Vue的校园共享无人机服务系统设计与实现-计算机毕设 附源码44219星空2 小时前
pycharm复习