首页 前端知识 【JavaWeb】HTML JS CSS实现导航栏下拉菜单(详细)

【JavaWeb】HTML JS CSS实现导航栏下拉菜单(详细)

2024-05-11 23:05:44 前端知识 前端哥 605 401 我要收藏

效果:

 

html页面

<body>
<div class="menu">
<ul>
<li>
<a href="#">一级菜单</a>
<ul>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
</ul>
</li>
<li>
<a href="#">一级菜单</a>
<ul>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
</ul>
</li>
<li>
<a href="#">一级菜单</a>
<ul>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
</ul>
</li>
<li>
<a href="#">一级菜单</a>
<ul>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
</ul>
</li>
<li>
<a href="#">一级菜单</a>
<ul>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
<li><a href="#">二级菜单</a></li>
</ul>
</li>
</ul>
</div>
</body>
复制

JS代码

<script>
$(function() {
$(".menu>ul>li").hover(function() {
$(this.querySelector("ul")).slideToggle()
})
})
</script>
复制
JS代码详解:
  1. $(function() { ... }): 这是jQuery的快捷方式,用于在DOM加载完成后执行代码。它等价于 $(document).ready(function() { ... }),表示代码会在页面加载完成后执行。

  2. $(".menu>ul>li").hover(function() { ... }): 这是一个选择器,它选中所有具有"class"为"menu"的元素中的直接子元素的<li>(列表项)。然后,通过.hover()方法为这些<li>元素添加悬停事件的监听。

  3. function() { ... }: 这是一个悬停事件的回调函数。当鼠标悬停在匹配的菜单项上时,这个函数会被执行。

  4. $(this.querySelector("ul")).slid

    Toggle(): 在悬停事件回调函数中,首先使用this来获取当前鼠标悬停的菜单项元素。然后,通过querySelector("ul")来选择这个菜单项元素下的<ul>(无序列表,也就是子菜单)元素。接着,通过.slideToggle()方法来切换子菜单的显示状态,如果子菜单是隐藏的,则显示它;如果子菜单是显示的,则隐藏它。.slideToggle()方法会为显示和隐藏添加动画效果。

CSS代码

* {
padding: 0;
margin: 0;
}
.menu {
background: #910000;
}
.menu>ul {
display: flex;
justify-content: space-between;
width: 80%;
margin: auto;
}
.menu ul li {
list-style: none;
}
.menu>ul>li {
position: relative;
}
.menu ul li a {
padding: 10px;
display: block;
color: white;
text-decoration: none;
}
.menu ul ul {
position: absolute;
width: 100%;
background: #910000;
display: none;
}
复制
CSS代码详解:​​​
  1. * 选择器将页面上所有元素的内边距和外边距设置为0,以消除默认的内边距和外边距。
  2. .menu 类选择器选中具有 “menu” 类的元素,设置了背景颜色为深红色 (#910000)。
  3. .menu>ul 选择器选中直接子元素是 ul 的 .menu 元素,将其样式设置为弹性布局 (display: flex),并使用 justify-content: space-between 属性使子元素在水平方向上等间距分布。
  4. .menu ul li 选择器选中所有 ul 元素下的 li 元素,并移除其默认的列表样式。
  5. .menu>ul>li 选择器选中 .menu 元素下的直接子元素 li,设置其位置为相对定位。
  6. .menu ul li a 选择器选中所有 ul 元素内的 li 元素中的锚点 (<a> 标签),设置了内边距、显示为块级元素、文字颜色为白色、去除下划线。
  7. .menu ul ul 选择器选中 ul 元素的子 ul 元素(子菜单),设置其位置为绝对定位,宽度为100%,背景颜色与父菜单一致,且初始状态为不显示。
转载请注明出处或者链接地址:https://www.qianduange.cn//article/8179.html
标签
评论
发布的文章

JQuery中的load()、$

2024-05-10 08:05:15

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!