javascript - 当鼠标离开元素时,CSS 过渡过早结束

标签 javascript jquery html css

我正在为我的网站制作菜单。已经完成了,只有一个小细节让我很烦。看看下面的片段。当我将鼠标悬停在父元素上时,子元素会随着过渡向下滑动。但是一旦鼠标离开父/子元素,子元素就会消失。

我已经确定,当鼠标离开父/子元素时,子元素会在向上滑动过渡开始之前迅速移出 View (left: -9999px;)。

我怎样才能让它在鼠标离开菜单时以相同的过渡类型滑回菜单?是否有仅 CSS 的解决方案,或者我是否也必须使用 jQuery?

ul {
  list-style: none;
  padding: 0;
}

li {
  width: 180px;
}

#menu ul ul {
  left: -9999px;
  position: absolute;
  background: red none repeat scroll 0 0;
}

#menu li:hover>ul {
  left: auto;
}

#menu ul ul li {
  height: 0;
  transition: height 0.2s ease 0s;
}

#menu ul ul ul {
  margin-left: 100%;
  top: 0;
}

#menu ul li:hover>ul>li {
  height: 32px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav id="menu">
  <ul>
    <li>Parent Item
      <ul>
        <li>Child Item
          <ul>
            <li>Child Child Item</li>
          </ul>
        </li>
      </ul>
    </li>
  </ul>
</nav>

最佳答案

去掉left属性,使用overflow: hidden 另外,我不认为将“自动”与过渡一起使用。它会使用此属性自动弹出。

#menu ul ul {
  position: absolute;
  overflow: hidden;
  background: red none repeat scroll 0 0;
}

#menu li:hover>ul {
  
}

#menu ul ul li {
  height: 0;
  transition: height 0.2s ease 0s;
}

#menu ul li:hover>ul>li {
  height: 32px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav id="menu">
  <ul>
    <li>Parent Item
      <ul>
        <li>Child Item</li>
      </ul>
    </li>
  </ul>
</nav>

关于javascript - 当鼠标离开元素时,CSS 过渡过早结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46814818/

相关文章:

php - 文件上传和安全问题

Java HtmlUnit 网页抓取器 newPage 不可访问

jquery - 如何确定4列列表中<li>的显示顺序?

jQuery - 响应面板

javascript - Bootstrap Popover 内容不起作用

javascript - 如何在 FlatList 中的项目之间切换?

JavaScript\JQuery - 识别单选按钮值是否因点击而改变

javascript - XDomainRequest 与 XMLHTTPRequest

jquery - 禁用重复 div 内的所有按钮

html - 如何使用ruby脚本填充html文件