Javascript- 多级下拉 Div 定位?

标签 javascript html css

所以我试图用 CSS 和 JavaScript 制作一个多层次的水平菜单。我有一个显示子菜单的 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 下任何紧随其后的 block 级元素(作为兄弟元素)的定位。快速修复如下所示:

<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>

(我还继续修复了 ul 的子标签 aul 只需要 li 标记为 child 。)

同样,您需要将 #extrabox2#extrabox 下移出,这样它就不会影响其 sibling 的位置。

我不确定您所说的“我还想将其设置为只能选择一个链接”是什么意思。你能澄清一下吗?

希望对您有所帮助!

关于Javascript- 多级下拉 Div 定位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31972168/

相关文章:

javascript - 有没有一种方法可以在不将事件处理程序添加到标记或使用 addEvent 的情况下用 JavaScript 编写事件处理程序?

javascript - 如何从轮子中获取 Canvas 的值(value)

html - 如何使用 :hover

css - 如何使用CSS根据父div设置子类高度

javascript - 无法在动态创建的 html 按钮上执行 javascript

javascript - 函数创建者的参数何时在创建的函数中可用?

javascript - jQuery 放大在 Chrome 和 Safari 中不起作用,但在 Firefox 中不起作用

javascript - 关闭普通标题文本以允许工具提示 JQuery

javascript - 我自己的工具提示中的 href

Javascript for 循环遍历 JSON 值