javascript - 将主导航链接替换为悬停时的子菜单链接 - 而不是下拉菜单

标签 javascript jquery html css drop-down-menu

最近在一个网站上看到一个很喜欢的导航效果,但是找不到了,查了下代码,看看是怎么做的。有一个标准的菜单栏,宽度为 100%,高度约为 30 像素,每个链接在其中等距分布。当您将鼠标悬停在图库链接上时,整个菜单栏发生变化,链接被替换为子菜单。没有下拉菜单,整个菜单栏都变成了子菜单项。我不太清楚这是怎么做到的。任何建议,将不胜感激。这是我正在使用的示例 html 标记:

<nav>
    <ul class ="menu">
        <li class ="nav__item"><a href="about.html">about</a></li>
        <li class ="nav__item"><a href="galleries.html">galleries</a>
            <ul class="submenu">
                <li class ="nav__subitem"><a href="one.html">one</a></li>
                <li class ="nav__subitem"><a href="two.html">two</a></li>
                <li class ="nav__subitem"><a href="three.html">three</a></li>
                <li class ="nav__subitem"><a href="four.html">four</a></li>
                <li class ="nav__subitem"><a href="five.html">five</a></li>
                <li class ="nav__subitem"><a href="six.html">six</a></li> 
            </ul> <!-- close sub -->
        </li>
        <li class ="nav__item"><a href="blog.html">stories</a></li>
        <li class ="nav__item"><a href="contact.html">contact</a></li>  
        <li class ="nav__item"><a href="thankyou.html">thank you</a></li>     
    </ul>
</nav>

最佳答案

不确定这是否是您要查找的内容,但请查看此 fiddle

通过相对定位为导航设置固定高度,并在鼠标悬停时定位嵌套 ul 的父级我能够实现这种效果。

nav {
    height: 50px;
    overflow: hidden;
    position: relative;
    background: #999999;
}
.menu {
    list-style-type:none;
    position: relative;
}
ul {
    padding: 0;
    margin: 0;
}
li.nav__item {
    float:left;
}
li.nav__item a {
    padding: 0 15px;
    line-height:50px;
}
.submenu {
    position:absolute;
    left:15px;
}
.nav__subitem {
    line-height: 50px;
    float: left;
    list-style: outside none none;
}

还有一点 jQuery 魔法将它们结合在一起。

 $(".has-children").mouseover(function () {
        $(".menu").css("top", "-50px");
    });
    $(".main-navigation").mouseleave(function () {
        $(".menu").css("top", "0px");
    });

关于javascript - 将主导航链接替换为悬停时的子菜单链接 - 而不是下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32470145/

相关文章:

javascript - 如何从文本区域打印文本?

javascript - 简化此 If 语句,使其不重复代码 - Javascript

javascript - 使用ajax上传多个文件

html - 将两个不同样式的页面合并为一个

javascript - Ember Inspector 如何从应用程序获取数据?

javascript - 为什么我的对象返回未定义?

javascript - 循环遍历单选按钮并更改最近的 div、jquery 上的背景颜色

javascript - 如何检查 2 个 jQuery 选择器是否指向相同的元素?

html - 列反向灵活排序

html - 使用translateX代替margin-left的CSS动画,可能吗?