推荐使用 opacity 配合 transition 实现卡片 hover 渐显,简洁高效;若用 @keyframes 则需添加 animation-fill-mode: forwards 保持结束状态,避免回退。
用 opacity 配合 @keyframes 实现卡片 hover 时内容渐显,关键在于控制初始透明度为 0、hover 时过渡到 1,并搭配 transition 或动画时序 —— 其实更推荐用 transition,简洁自然;若坚持用 keyframes,则需配合 animation-fill-mode: forwards 保证结束状态保留。
确保卡片内要渐显的内容(如标题、描述、按钮)默认 opacity: 0,且不占据空间或不影响布局(可加 visibility: hidden 或保持 position: absolute 等):
.card-content {
opacity: 0;
transition: opacity 0.4s ease-in-out;
}
无需 keyframes,一行 transition 就能实现柔和淡入,性能好、易维护:
.card:hover .card-content {
opacity: 1;
}
仅当需要配合位移、缩放等多属性动画时才启用 keyframes。示例:淡入 + 微上浮:
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.card-content {
opacity: 0;
transform: translateY(10px);
animation: fadeInUp 0.4s ease-out forwards;
}
.card:hover .card-content {
animation: fadeInUp 0.4s ease-out forwards;
}
基本上就这些。opacity + tra
nsition 是最轻量、兼容性最好、效果也最干净的方案;keyframes 更适合进阶动效组合,别为“淡入”硬套动画——简单事,不复杂但容易忽略细节。