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

如何修复CSS hover状态退出时无平滑过渡的问题

问题修复:Hover过渡生效但离开时无过渡效果

问题描述

当前实现了div容器hover时的ease-in-out过渡效果,但离开容器后,元素直接恢复到无锥形渐变边框的原始状态,没有过渡效果。尝试给div类本身或::before伪元素设置transition,但仅hover时过渡生效,离开时无效。

原因分析

问题出在非hover状态下的::before伪元素未定义hover时修改的属性初始值。当鼠标离开时,background、transform、filter、clip-path这些属性会从hover状态的值直接跳转到浏览器默认值(比如background: transparent、transform: none),由于初始状态未声明这些属性,浏览器无法计算过渡动画,导致直接恢复原始状态。

解决方案

在::before伪元素的基础样式中,声明所有hover时会修改的属性的初始值,让浏览器能识别属性的变化范围,从而在离开hover时触发过渡效果。

修改后的代码

.wp-block-group.has-base-background-color.has-background.is-layout-flow.wp-container-7.wp-block-group-is-layout-flow::before {
    content: "";
    position: absolute;
    inset: 0;
    transition: all .2s ease-in-out;
    /* 声明hover时会变化的属性初始值 */
    background: conic-gradient(from 90deg at 40% -25%, #ffd700, #f79d03, #ee6907, #e6390a, #de0d0d, #d61039, #cf1261, #c71585, #cf1261, #d61039, #de0d0d, #ee6907, #f79d03, #ffd700, #ffd700, #ffd700);
    transform: translate3d(0,0,0);
    filter: blur(0);
    clip-path: polygon(-100vmax -100vmax,100vmax -100vmax,100vmax 100vmax,-100vmax 100vmax,-100vmax -100vmax,0 0,0 100%,100% 100%,100% 0,0 0);
    opacity: 0;
}

.wp-block-group.has-base-background-color.has-background.is-layout-flow.wp-container-7.wp-block-group-is-layout-flow:hover::before {
    transform: translate3d(0,0,-1px);
    filter: blur(10px);
    opacity: 1;
}

补充说明

  • 过渡效果必须依赖属性的“初始值”和“目标值”都被明确声明,浏览器才能计算中间的过渡动画
  • 若想优化性能,可把transition: all .2s ease-in-out改为指定属性,比如transition: opacity .2s ease-in-out, transform .2s ease-in-out, filter .2s ease-in-out

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:40:25