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

如何禁用页面打开或刷新时自动触发的CSS hover下划线动画

解决方案

问题根因

你当前的实现给.box::after的默认状态绑定了out动画,页面加载CSS解析完成后就会自动执行该动画,这是页面刷新时触发不必要收回动画的核心原因。

纯CSS修复方案

无需JavaScript,改用transition替代animation即可实现需求。transition仅在元素属性发生变化时才会触发过渡效果,天然不会在页面初始化加载时自动执行。

修改后完整CSS代码

body {
  background-color: black;
}

.box {
  width: 100px;
  height: 100px;
  margin: 40px auto;
  background-color: #f44336;
  position: relative;
}

.box::after {
  content: '';
  position: absolute;
  bottom: -7px;
  width: 100%;
  height: 3px;
  background-color: #fff;
  /* 默认状态下划线隐藏 */
  transform: scaleX(0);
  /* 移出动画:从左到右收回,变换原点设为右侧 */
  transform-origin: right center;
  /* 统一设置过渡效果,时长和原方案400ms保持一致 */
  transition: transform 400ms linear;
}

.box:hover::after {
  transform: scaleX(1);
  /* 移入动画:从左到右滑出,变换原点设为左侧 */
  transform-origin: left center;
}

效果验证

  • 鼠标hover盒子时:下划线从左到右平滑滑出
  • 鼠标移出盒子时:下划线从左到右平滑收回
  • 页面刷新/首次打开时:无任何多余的动画触发,下划线默认隐藏,完全符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:45:01