You need to enable JavaScript to run this app. 如何将CSS链接hover动画的完成状态保存为类,点击时添加到对应元素
优惠活动
大模型
产品
解决方案
定价
更多

如何将CSS链接hover动画的完成状态保存为类,点击时添加到对应元素

解决方案

你当前实现的hover效果用的是CSS过渡(transition)而非@keyframes定义的关键帧动画,所以animation-fill-mode属性不会生效,这个属性仅对关键帧动画起作用。可以按照以下步骤实现需求:

1. 提取激活状态独立类

把hover状态的样式提取为独立的激活类,同时为了保留原有的hover效果,将hover选择器和激活类选择器合并共用样式,新增CSS代码如下:

/* 下划线伪类的hover和激活状态共用样式 */
.link--elara:hover::before,
.link--elara.is-active::before {
    transform: translate3d(0, 2px, 0) scale3d(1.08, 3, 1);
    clip-path: polygon(0% 0%, 0% 100%, 50% 100%, 50% 0, 50% 0, 50% 100%, 50% 100%, 0 100%, 100% 100%, 100% 0%);
}

/* 文字上浮的hover和激活状态共用样式 */
.link--elara:hover span,
.link--elara.is-active span {
    transform: translate3d(0, -2px, 0);
}

2. 添加点击触发逻辑

补充少量JS实现点击时添加/切换激活类的效果,示例代码如下:

const elaraLinks = document.querySelectorAll('.link--elara');
elaraLinks.forEach(link => {
    link.addEventListener('click', (e) => {
        // 如果是a标签需要阻止默认跳转可放开下面注释
        // e.preventDefault();
        // 需要点击切换效果用toggle,需要点击后永久保持用add
        link.classList.toggle('is-active');
        // link.classList.add('is-active');
    });
});

修改完成后点击链接就会自动添加is-active类,保持动画结束后的最终样式,原有的hover交互效果也不会受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 08:15:03