You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

鼠标移出带hover动画的div时如何实现平滑过渡效果?

解决hover动画移出瞬间复位的问题

问题出在你混淆了CSS transition 和 @keyframes 动画的机制:如果用的是帧动画,transition 无法控制它的结束复位过程,因为两者的工作逻辑完全不同。下面给你两种可行的解决方案:

方案一:用transition实现(推荐)

直接通过transform属性的变化结合transition,这是实现平滑移入移出过渡最简单高效的方式,不需要写帧动画:

/* 给文本元素设置初始状态和过渡规则 */
.text-content {
  transform: translateX(0);
  transition: transform 0.3s ease; /* 0.3s是过渡时长,可自行调整 */
}

/* hover时改变位移值 */
.your-div:hover .text-content {
  transform: translateX(100px);
}

这样鼠标移入时文本会平滑移到100px位置,移出时也会平滑回到初始位置,完全符合你的需求。

方案二:保留@keyframes动画的处理方式

如果一定要用帧动画,需要给元素设置正向和反向两个动画,并通过animation-fill-mode: forwards保持动画结束后的状态:

.text-content {
  /* 默认状态播放反向复位动画 */
  animation: slide-back 0.3s ease forwards;
}

.your-div:hover .text-content {
  /* hover时播放正向移动动画 */
  animation: slide-forward 0.3s ease forwards;
}

/* 正向移动动画 */
@keyframes slide-forward {
  from { transform: translateX(0); }
  to { transform: translateX(100px); }
}

/* 反向复位动画 */
@keyframes slide-back {
  from { transform: translateX(100px); }
  to { transform: translateX(0); }
}

注意要保证两个动画的时长一致,否则过渡会不协调。

内容的提问来源于stack exchange,提问作者Silambarasu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 14:52:06