应始终让覆盖层存在且初始 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数据分析工具,可以快速分析和可视化复杂数据。
相关推荐
IT19958 小时前
Fail2Ban 防护 MySQL 实战|登录失败 3 次,IP 封禁 24 小时夕除8 小时前
redis--IO 多路复用(select + poll)wangchunyu11410 小时前
JAVA CompletableFuture异步编程实战2501_9445215911 小时前
Immer 跨端三方库仓颉适配全流程信誓旦旦的程序猿12 小时前
【Python量化实战宝典 #26】止损与回撤控制手册:移动止损、最大回撤(Python 可跑)2501_9445215912 小时前
Deepmerge 跨端三方库仓颉适配全流程lzhdim12 小时前
100条常用SQL语句天河归来12 小时前
从原始消息到业务数据:三层数据架构的设计与实践Patrick在香港12 小时前
同一行 strftime,两台机器跑出两种日期2601_9679873712 小时前
用Python+OpenCV+YOLO写个游戏脚本:从自动瞄准到自动采集的保姆级教程