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

如何让:not(:hover)伪类在页面加载或刷新时不触发

解决按钮初始加载不触发:not(:hover)样式的方案

要实现按钮加载时不显示红色,仅在鼠标至少悬停一次并离开后才变红,仅靠CSS无法完成——因为CSS无法追踪元素是否被hover过的历史状态,需要结合JavaScript实现:

实现步骤

  1. 调整CSS样式
    初始状态不给按钮设置红色背景,仅当按钮拥有自定义类(比如has-been-hovered)且未被hover时,才应用红色背景:

    .test:hover {
      background-color: yellow;
    }
    /* 仅当按钮被hover过一次后,未hover状态才显示红色 */
    .test.has-been-hovered:not(:hover) {
      background-color: red;
    }
    
  2. 添加JavaScript逻辑
    监听按钮的mouseleave事件,第一次触发时给按钮添加has-been-hovered类,标记该按钮已经被hover过:

    <button class="test">hello</button>
    <script>
      const btn = document.querySelector('.test');
      btn.addEventListener('mouseleave', function() {
        // 只需添加一次类即可
        this.classList.add('has-been-hovered');
      });
    </script>
    

原理说明

  • 页面加载时,按钮没有has-been-hovered类,所以.test.has-been-hovered:not(:hover)的样式不会生效,按钮保持默认背景。
  • 当鼠标第一次悬停按钮再离开时,mouseleave事件触发,给按钮添加类,之后只要按钮不在hover状态,就会显示红色背景;hover时依然显示黄色。

内容的提问来源于stack exchange,提问作者黃柏瑋

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 12:07:03