【问题标题】:only allow CSS hover event after timeout using JavaScript只允许使用 JavaScript 超时后的 CSS 悬停事件
【发布时间】:2015-12-07 08:05:11
【问题描述】:

我只想在元素未悬停一段时间后才允许悬停事件,如果鼠标重新进入悬停的元素,我希望它的行为就像鼠标从未离开一样。

ex: 导航在 CSS :hover 上有一个下拉菜单,如果用户的鼠标错误地超出了悬停的元素,下拉菜单会立即消失,相反我想设置一个计时器来检查是否鼠标悬停超过 500 毫秒,如果是这样,请关闭下拉菜单;如果鼠标在该时间段内重新进入,则停止关闭事件并保持菜单打开。

HTML::

<nav>
  <ul>
    <li>ghetto nav item 1
      <ul>
        <li>awful Dropdown item</li>
      </ul>
    </li>
    <li>ghetto nav item 2</li>
  </ul>
</nav>

CSS::

nav > ul > li > ul > li {
    display: none;
}
nav > ul > li:hover + ul > li {
    display: block;
}

JS:: ??

【问题讨论】:

    标签: javascript css hover


    【解决方案1】:

    您可以使用 CSS3 做到这一点。将transition-delay 与元素的height 一起应用,而不是切换display

    nav > ul > li > ul > li {
      transition-delay: 0.5s;
      height: 0px;
      overflow: hidden;
    }
    
    nav > ul > li:hover > ul > li {
      transition-delay: 0s;
      height: 100%;
    }
    <nav>
      <ul>
        <li>ghetto nav item 1
          <ul>
            <li>awful Dropdown item</li>
          </ul>
        </li>
        <li>ghetto nav item 2</li>
      </ul>
    </nav>

    【讨论】:

    • giggidy 那只是干净和光荣。我最近一直在努力学习 JS。谢谢!我不知道过渡延迟
    猜你喜欢
    • 2020-06-19
    • 2016-08-08
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    相关资源
    最近更新 更多