阻止下拉导航栏将元素推到一边
stopping dropdown navigation bar from pushing elements aside
我有一个下拉导航栏,当按钮或图像等元素在页面上太高时,导航栏会在出现下拉选项时将元素推到右侧。我该如何阻止这种情况?
导航栏:
<nav id="nav1">
<ul>
<li><a href="#" onmousedown="Sound.play()">Home</a></li>
<li onmouseover = "DropDown1()" onmouseout="DropUp1()"><a href="#" onmousedown="Sound.play()">Images</a><ul class="DropUp" id="Droplist1" >
<li class="DropDown"><a id="Droplist1" href="#">Test1</a></li>
<li class="DropDown"><a href="#">Test2</a></li>
<li class="DropDown"><a href="#">Test3</a></li></ul>
</li>
<li onmouseover = "DropDown2()" onmouseout="DropUp2()"><a href="#" onmousedown="Sound.play()">Adverts</a><ul id="Droplist2" class="DropUp">
<li class="DropDown"><a href="#">Test1</a></li>
<li class="DropDown"><a href="#">Test2</a></li></ul>
</li>
<li><a href="#" onmousedown="Sound.play()">Data Validation</a></li>
<li><a href="#" onmousedown="Sound.play()">Security</a></li>
</ul>
</nav>
.CSS:
nav#nav1 li a {
display: block;
padding: 3px 8px;
background-color: #5e8ce9;
color: #fff;
text-decoration: none;
}
nav#nav1 li {
list-style: none;
float: left;}
.DrowDown {
display: block;
position: absolute;
margin: 0;
padding: 0;
float: none;
}
nav#nav1 li:hover li {
float: none; }
nav#nav1 li:hover li a {
background-color: #69f;
border-bottom: 1px solid #fff;
color: #000; }
#navbar li li a:hover {
background-color: #8db3ff; }
nav#nav1 ul li a:hover { background: #686868 ; }
nav#nav1 ul li a:active { background: #F0F0F0; }
用于下拉列表的 JavaScript 函数:
function DropDown2() {
var t = document.getElementById("Droplist2");
t.className = "DropDown";
}
function DropDown1() {
var t = document.getElementById("Droplist1");
t.className = "DropDown";
}
function DropUp2() {
var t = document.getElementById("Droplist2");
t.className = "DropUp";
}
function DropUp1() {
var t = document.getElementById("Droplist1");
t.className = "DropUp";
}
如果你想知道为什么我选择了如此困难的路线来制作导航栏,那是因为我必须使用 JavaScript。
这是JS小提琴示例:http://jsfiddle.net/fNPvf/10015/
小提琴中的窗口很小,效果略有不同,但请注意,当您将鼠标悬停在"数据验证"上时,下拉菜单如何将文本/图像/正文向下推?
您需要绝对定位和包含<div>
或<ul>
本身的更高 z 指数。只需将其添加到您的代码中并根据需要调整z-index
:
nav#nav1 ul{
position: absolute;
top: 0;
z-index: 9;
}
在此处查看工作演示
相关文章:
- 更改css子元素导航树
- 导航到页面上的某个滑块元素
- 将持久活动类附加到导航栏范围中的导航元素(AngularJS)
- 在元素之间导航的Javascript
- 获取文档的所有元素,id为'主导航'
- 更改<导航>当向下滚动到具有特定id的元素时
- jQuery导航菜单没有't更新第一个元素
- 我的导航选项卡正在删除元素
- 如何防止导航栏中的元素在重新调整大小时被切断
- 滚动到某个元素后,相同的导航栏变得固定
- jquery切换隐藏/显示导航元素
- 如何使用左右箭头键在元素之间导航
- 粘性导航元素 - 隐藏然后显示
- 修复了标题导航和滚动到()下一个/上一个元素
- CSS:无法将元素正确定位在粘性导航栏下方
- 无法使用
导航到正确的元素,因为页面标题窗格已修复(冻结) - 单页网站粘性导航:更改内容元素的活动状态
- 多个配对导航元素的悬停事件
- CSS 导航链接样式:删除其他元素的样式,并在将鼠标悬停在选定元素上时删除双边框
- 如何检测js中元素导航的状态