多级下拉Div定位
Javascript- Multi-level Drop Down Div Positioning?
所以我试图用CSS和JavaScript制作一个多层次的水平菜单。我有一个toggle函数,它显示子菜单的div容器,但是,当它显示时,它会将链接推到容器下面。我怎样才能使它,所以当我单击链接,以显示一个div容器,它出现在下面的其余链接。此外,我想使它只有一个链接可以选择,我不知道如何做到这一点。我以前从未使用过JavaScript,对CSS还是个新手。
我已经从代码中删除了几乎所有的样式。但这是功能。
#togglebox {
display:none;
}
#togglebox li{
display: inline-block;
}
#extrabox {
display:none;
background: #E6ECF2;
text-align: center;
min-width: 100%;
}
#extrabox li{
display: inline-block;
}
#extrabox2 {
display:none;
background: #E6ECF2;
text-align: center;
min-width: 100%;
}
#extrabox2 li{
display: inline-block;
}
function toggle_visibility(id) {
var e = document.getElementById(id);
if(e.style.display == 'block')
e.style.display = 'none';
else
e.style.display = 'block';
}
<ul class="sub-menu" style="display:inline;">
<a href="#"><li id="NSM1">Normal Sub Menu</li></a></td>
<a href="#" onclick="toggle_visibility('togglebox');"><li id="SMEL">Sub-menu Item with Second Level</li></a>
<a href="#"><li id="NSM2">Normal Sub Menu</li></a>
<br />
</ul>
<div id="togglebox">
<a href="#"><li id="NSSL1">[Normal Link]</li></a>
<a href="#" onclick="toggle_visibility('extrabox');"><li id="SSL2">[Has extra Level]</li></a>
<div id="extrabox">
<a href="#"><li id="sublinkea">3rd level item1</li></a> <a href="#"><li id="sublinkeb">3rd level item2</li></a> <a href="#"><li id="sublinkea">3rd level item3</li></a>
<a href="#"><li id="sublinkeb">3rd level item4</li></a>
</div>
<a href="#" onclick="toggle_visibility('extrabox2');"><li id="SSL3"><li id="sublinksc">[Has Extra Level]</li></a>
<div id="extrabox2">
<a href="#"><li id="sublinkea">3rd level item1</li></a>
<a href="#"><li id="sublinkeb">3rd level item2</li></a>
<a href="#"><li id="sublinkea">3rd level item3</li></a>
<a href="#"><li id="sublinkeb">3rd level item4</li></a>
</div>
<a href="#"><li id="NSSL2">[Normal Link]</li></a>
</div>
</div>
在我看来,问题是你有#extrabox
作为#togglebox
的孩子,当你真的想要它的兄弟姐妹。事实上,#extrabox
将影响#togglebox
下在它之后的任何块级元素(作为兄弟姐妹)的定位。一个快速修复方法如下:
<div id="togglebox">
<ul>
<li id="NSSL1">
<a href="#">[Normal Link]</a>
</li>
<li id="SSL2">
<a href="#" onclick="toggle_visibility('extrabox');">
[Has extra Level]
</a>
</li>
</ul>
</div>
<div id="extrabox">
<!-- put #extrabox contents here -->
</div>
(我还继续并修复了a
标签是ul
的子;ul
只接受li
标签作为子标签)
同样地,你要把#extrabox2
从#extrabox
的下面移出来,这样它就不会影响它的兄弟姐妹的位置。
我不确定你所说的"Also I would like to make it only one link can be selected"是什么意思。你能解释一下吗?
希望有帮助!
相关文章:
- 绝对定位不适用于Javascript DIV
- 如何相对于浏览器窗口定位DIV
- DIV不会与实验性CSS3菜单一起定位
- jQuery - 在另一个 DIV 中定位特定的 DIV
- 在 DIV 中定位表格单元格
- DIV-Elemt 绝对(!) 定位
- 在resizable()之后定位DIV
- 按百分比定位 Div 元素
- 在 IE8 中将 DIV 定位在图像上方
- 定位 AJAX 会通过使用“rel”属性生成正确的 DIV
- 使用 jQuery offset() 将绝对定位的 DIV 设置为另一个 DIV 的相同 y 坐标
- 定位JS动画DIV
- Javascript随机定位Div's而不重叠
- Safari:绝对定位的DIV在通过DOM更新时不会移动
- 定位Div内容,使其不会被截屏
- 滚动后重新定位DIV
- 定位Div "Fixed"垂直和绝对;水平位置:相对位置;容器Div
- 在java脚本中动态分配和定位DIV'S
- 如何在特定坐标中定位DIV
- 在特定文本上动态定位DIV