创建一个多层次的megamenu

问题描述

我正在尝试创建一个多层次的 megamenu。问题是,当我将鼠标悬停在 2 级导航(左子菜单导航)上时,它并不总是正确显示 3 级导航(右子菜单导航)。部分 3 级导航链接显示,部分不会显示

megamenu 的另一个问题是,当我将鼠标悬停在导航级别 2 中的第二个链接上时,级别 3 导航中的链接将在与导航中的第二个链接相同的位置开始2 级 - 他们应该从顶部开始。问题如下图所示:

enter image description here

第三个问题是3级导航和2级导航的高度不一样。

这是我目前的代码

HTML:

<!-- Top menu -->
<div class="top-menu">
    <ul>
        <li>
            <a href="#">Home</a>
        </li>
        <li>
            <a href="#">Programming</a>

            <!-- Submenu level 1 -->
            <ul class="submenu-level-1">
                <li>
                    <a href="#">Backend</a>

                    <!-- Submenu level 2 -->
                    <ul class="submenu-level-2">
                        <li>
                            <a href="#">PHP</a>
                        </li>
                        <li>
                            <a href="#">Java</a>
                        </li>
                        <li>
                            <a href="#">Python</a>
                        </li>  
                        <li>
                            <a href="#">C#</a>
                        </li>                                                        
                    </ul>

                </li>
                <li>
                    <a href="#">Frontend</a>

                    <!-- Submenu level 2 -->
                    <ul class="submenu-level-2">
                        <li>
                            <a href="#">HTML</a>
                        </li>
                        <li>
                            <a href="#">CSS</a>
                        </li>
                        <li>
                            <a href="#">JavaScript</a>
                        </li>                            
                    </ul>

                </li>
            </ul>                
        </li>
        <li>
            <a href="#">Blog</a>
        </li>
        <li>
            <a href="#">Contact us</a>
        </li>
        <li>
            <a href="#">About us</a>
        </li>
    </ul>
</div>

CSS:

/* TOP MENU */
.top-menu ul {
    list-style-type:none;
}

.top-menu > ul {
    display: inline-block;
    position: relative;
}

.top-menu > ul > li {
    float: left;
}

.top-menu li {
    background-color: lightgrey;
}

/* The following rules will apply to all <a> elements in both the top-menu & sub-menus */
.top-menu ul a {
    text-decoration: none;
    color: black;
    text-align: center;
    display: block;
}

.top-menu > ul > li > a {
    padding: 16px 24px 16px 24px;
}

.top-menu ul a:hover {
    background-color: black;
    color: white;    
}

/* Hide submenu-level-1 & submenu-level-2 as default */
.top-menu .submenu-level-1,.top-menu .submenu-level-2 {
    display: none;
}

/* SUBMENU-LEVEL-1 */
.top-menu ul li:hover > .submenu-level-1 {
    display: block;
}

.top-menu .submenu-level-1 {    
    position: absolute;
    left: 0px;
    right: 0px;
}

.top-menu .submenu-level-1 > li {   
    background-color: #c1c1c1;
}

.top-menu .submenu-level-1 li {
    position: relative;
}

.top-menu .submenu-level-1 a {
    width: 25%;
}

/* SUBMENU-LEVEL-2 */
.top-menu .submenu-level-1 li:hover > .submenu-level-2 {
    display: block;
}

.top-menu .submenu-level-2 {
    padding: 0px;
    margin: 0px;
    position: absolute;
    top: 0px;
    left: 25%;
    width: 75%;
}

.top-menu .submenu-level-2 li {
    background-color: #f1f1f1;
    /* width: 75%; */
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)