【发布时间】:2017-03-04 04:35:28
【问题描述】:
我正在尝试创建一个非常基本的移动下拉菜单,单击该菜单会扩展this codepen portfolio page project for Free Code Camp. 的右上角导航菜单永远不会出现,但是当我检查元素时,似乎 javascript 函数是实际工作,“show” CSS 类被添加和删除到 mobileNavDrop div。
不可见的菜单似乎也位于它应该在的页面上,如使用检查元素工具在此屏幕截图中所见:
Invisible drop-down menu highlighted with inspect element tool
我尝试使用 z-index 将其一直向前推进,并使横幅不可见,以查看它是否隐藏在事物后面,但事实并非如此。我什至尝试让菜单以可见的方式开始,而不是“显示:无;”它仍然没有显示在页面上。
我在其他地方得到的建议是只使用 jquery 和 bootstrap,但我希望通过尝试从头开始编写所有内容来更多地理解事物。所以我为响应式布局写的东西可能有冲突吗?
这至少是我认为相关的代码部分。谢谢!
HTML
<div class='container-navbar'>
<div class='navbar'>
<div class='row'>
<div class='col-sm-2 col-md-1'>
<ul class='nav-left'>
<li class='header-button'><a href='http://www.freecodecamp.com/davallerr' target='_blank'>davallerr</a></li>
</ul>
</div>
<div class='col-sm-2 col-md-3'>
<div class='mobile-nav'>
<i onclick='mobileNavDrop()' class='fa fa-bars mobile-nav-icon'></i>
<div id='mobileNavDrop' class='mobile-nav-drop'>
<a href='#about'>about</a>
<a href='#portfolio'>the work</a>
<a href='#contact'>contact</a>
</div>
</div>
<ul class='nav-right'>
<li><a href='#about'>about</a></li>
<li><a href='#portfolio'>the work</a></li>
<li><a href='#contact'>contact</a></li>
</ul>
</div>
</div>
</div>
</div>
CSS
.mobile-nav-icon {
padding: 1.25em;
}
.mobile-nav-icon:hover, .mobile-nav-icon:focus {
background: #40514f;
color: #fff;
}
.mobile-nav {
position: relative;
display: inline-block;
float: right;
overflow: visible;
}
.mobile-nav-drop {
display: none;
position: absolute;
right: 0;
background: #ccc;
min-width: 10em;
box-shadow: 0 0 .25em 0 rgba(0,0,0,.2);
}
.show {
display: block;
}
.mobile-nav-drop a {
color: #000;
padding: 1em;
display: block;
}
.mobile-nav-drop a:hover {
background: #aaa;
}
JS
function mobileNavDrop() {
document.getElementById('mobileNavDrop').classList.toggle('show');
}
window.onclick = function(event) {
if (!event.target.matches('.mobile-nav-icon')) {
var dropdowns = document.getElementsByClassName('mobile-nav-drop');
var i;
for (i = 0; i < dropdowns.length; i++) {
var openDropdown = dropdowns[i];
if (openDropdown.classList.contains('show')) {
openDropdown.classList.remove('show');
}
}
}
};
【问题讨论】:
标签: javascript html css drop-down-menu