多级下拉Div定位

Javascript- Multi-level Drop Down Div Positioning?

本文关键字:定位 Div 多级      更新时间:2023-09-26

所以我试图用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"是什么意思。你能解释一下吗?

希望有帮助!