【发布时间】:2015-07-20 08:51:04
【问题描述】:
在纯 JavaScript 中创建下拉导航很困难。没有jQuery。
菜单应以显示下拉菜单的单个按钮开头 将鼠标悬停在 5 个菜单项上。将鼠标悬停在 5 个菜单项中的一个上应该会在原始菜单右侧显示第二个下拉菜单,其中包含另外 5 个菜单项。
我遇到的问题是如何定位被悬停的导航项的直接子项。
例如,如果我将鼠标悬停在第一个项目上,则会显示子下拉菜单。但它不适用于第二个项目,依此类推。
任何帮助将不胜感激。谢谢!
HTML
<section class="dropdown-container">
<button id="dropdown-trigger">Dropdown</button>
<nav class="dropdown-list none">
<ul class="dropdown">
<li>
<span class="nav-link"> Item</span>
<ul class="sub-dropdown none">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</li>
<li>
<span class="nav-link">Item/span>
<ul class="sub-dropdown none">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</li>
<li>
<span class="nav-link">Item</span>
<ul class="sub-dropdown none">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</li>
<li>
<span class="nav-link">Item</span>
<ul class="sub-dropdown none">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</li>
<li>
<span class="nav-link">Item</span>
<ul class="sub-dropdown none">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</li>
</ul>
</nav>
</section>
JavaScript
var button = document.getElementById('dropdown-trigger'),
dropdown = document.getElementsByClassName('dropdown'),
dropdownList = document.querySelector('.dropdown-list'),
navLink = document.getElementsByClassName('nav-link'),
link = document.querySelector('.dropdown'),
subDropdown = document.getElementsByClassName('sub-dropdown');
button.addEventListener('mouseover', displayDropdown);
button.addEventListener('mouseout', removeDropdown);
function displayDropdown() {
dropdownList.classList.toggle('none');
}
function removeDropdown() {
dropdownList.classList.toggle('none');
}
JSFIDDLE:https://jsfiddle.net/1dx73fy6/
【问题讨论】:
-
你没有使用Jquery的权限?
-
@ZakariaAcharki 我正在努力学习严格的js
标签: javascript html css drop-down-menu