【问题标题】:Make hovered menu stick long enough to click使悬停的菜单保持足够长的时间以单击
【发布时间】:2019-04-11 06:26:52
【问题描述】:

我正在尝试创建一个带有子菜单的导航栏,但是当我打开子菜单时,我无法单击列表。悬停的列表没有保持打开状态,我无法点击它。

$('.one').hover(function(){
		$(this).next().show();
	}, function(){
		$(this).next().hide();
	});
body {
  font-family: Arial, Helvetica, sans-serif;
}

.navbar {
  overflow: hidden;
  background-color: #333;
}

.navbar a {
  float: left;
  font-size: 16px;
  color: white;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
}

.dropdown {
  float: left;
  overflow: hidden;
}

.dropdown .dropbtn {
  font-size: 16px;  
  border: none;
  outline: none;
  color: white;
  padding: 14px 16px;
  background-color: inherit;
  font-family: inherit;
  margin: 0;
}

.navbar a:hover, .dropdown:hover .dropbtn {
  background-color: red;
}

.dropdown-content {
  display: none;
  position: absolute;
  background-color: #f9f9f9;
  min-width: 160px;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
  z-index: 1;
}

.dropdown-content a {
  float: none;
  color: black;
  padding: 12px 16px;
  text-decoration: none;
  display: block;
  text-align: left;
}

.dropdown-content a:hover {
  background-color: #ddd;
}

.dropdown:hover .dropdown-content {
  display: block;
}

.yo {
  display: none;
  position: absolute;
  background-color: #f1f1f1;
  min-width: 160px;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
  z-index: 1;
  left: 100%;
  top: 30%;
}

.yo a {
  color: black;
  padding: 12px 16px;
  text-decoration: none;
  display: block;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

</head>
<body>

<div class="navbar">
  <a href="#home">Home</a>
  <a href="#news">News</a>
  <div class="dropdown">
    <button class="dropbtn">Dropdown 
      <i class="fa fa-caret-down"></i>
    </button>
    <div class="dropdown-content">
      <a href="#" class="one">Link 1</a>
      <div class="yo">
						<a href="#">Link 1</a>
						<a href="#">Link 2</a>
						<a href="#">Link 3</a>
					</div>
      <a href="#" class="one">Link 2</a>
      <div class="yo">
						<a href="#">Link 4</a>
						<a href="#">Link 5</a>
						<a href="#">Link 6</a>
					</div>
      <a href="#" class="one">Link 3</a>
      <div class="yo">
						<a href="#">Link 7</a>
						<a href="#">Link 8</a>
						<a href="#">Link 9</a>
					</div>
    </div>
  </div> 
</div>

<h3>Dropdown Menu inside a Navigation Bar</h3>
<p>Hover over the "Dropdown" link to see the dropdown menu.</p>

</body>
</html>

当我点击 Dropdown--> 将鼠标悬停在 Link 1 上,现在我想选择 Link 1 在您悬停时打开的子菜单中。无论如何我可以保持链接打开足够长的时间来点击链接。

【问题讨论】:

  • 请注意“下拉”链接如何在其 DIV 中包含所有内容,并且仅使用 css :hover 来显示/隐藏菜单。您需要将按钮“one”和子菜单“yo”都放在一个 div 中并在 div 上执行 css :hover。不需要jquery。

标签: javascript jquery html css


【解决方案1】:

注意“下拉”链接如何在其 DIV 中包含所有内容,并且仅使用 css :hover 来显示/隐藏菜单。您需要将按钮“one”和子菜单“yo”都放在一个 div 中并在 div 上执行 css :hover。不需要jquery。

html:

<div class="navbar">
  <a href="#home">Home</a>
  <a href="#news">News</a>
  <div class="dropdown">
    <button class="dropbtn">Dropdown 
      <i class="fa fa-caret-down"></i>
    </button>
    <div class="dropdown-content">
      <div class="submenu">
        <a href="#" class="one">Link 1</a>
        <div class="yo">
          <a href="#">Link 1</a>
          <a href="#">Link 2</a>
          <a href="#">Link 3</a>
        </div>
      </div>
      <div class="submenu">
        <a href="#" class="one">Link 2</a>
        <div class="yo">
          <a href="#">Link 4</a>
          <a href="#">Link 5</a>
          <a href="#">Link 6</a>
        </div>
      </div>
      <div class="submenu">
        <a href="#" class="one">Link 3</a>
        <div class="yo">
          <a href="#">Link 7</a>
          <a href="#">Link 8</a>
          <a href="#">Link 9</a>
        </div>
      </div>
    </div>
  </div>
</div>

添加这个css:

.submenu:hover .yo {
  display: block;
}

移除 JQuery 悬停。

Here is the working fiddle

【讨论】:

  • 尝试悬停链接 1,然后尝试单击出现的另一个链接 1,不幸的是您将无法访问
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-29
  • 1970-01-01
  • 1970-01-01
  • 2011-07-08
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多