使用原生JS和CSS创建响应式导航下拉菜单
36 浏览量
更新于2024-08-31
收藏 100KB PDF 举报
该资源是一个教程,讲解如何使用原生JavaScript实现一个响应式的导航下拉菜单。这个菜单设计要求下拉菜单的宽度与浏览器视口相同,一级菜单有两个选项,当鼠标悬停在一级菜单上时,对应的二级菜单会显示或隐藏。教程涉及的技术包括CSS的`position`属性、JavaScript的定时器、事件处理(`mouseout`和`mouseover`)以及HTML结构设计。
在HTML和CSS部分,首先创建一个包含导航条的`div`,将其`position`设为`relative`,高度设为50px,并确保其宽度为100%,以占据整个视口宽度。导航条的结构由一个外层`ul`(`outer`类)和内部嵌套的`li`元素组成,每个`li`元素包含一级导航链接和对应的二级导航`ul`。二级导航`ul`的`position`被设置为`absolute`,并将其`top`值设为50px(即一级导航的高度),`left`和`right`均设为0,以填充整个视口宽度。使用`display: inline-block`和外层`div`的`text-align: center`来实现导航项的居中对齐。
CSS代码示例:
```css
.header {
position: relative;
height: 50px;
width: 100%;
}
.outer {
display: flex;
justify-content: center;
}
.outerList {
display: inline-block;
}
.inter {
position: absolute;
top: 50px;
left: 0;
right: 0;
visibility: hidden; /* 初始隐藏二级菜单 */
}
```
在JavaScript部分,主要利用`mouseover`和`mouseout`事件监听一级导航项。当鼠标进入一级导航项时,显示对应的二级菜单,可能通过设置定时器来延迟显示,以防止鼠标快速移动时频繁切换。当鼠标离开一级导航项时,清除定时器并隐藏二级菜单。JavaScript代码示例:
```javascript
const outerLists = document.querySelectorAll('.outerList');
const interMenus = document.querySelectorAll('.inter');
outerLists.forEach((outerList) => {
outerList.addEventListener('mouseover', () => {
const interMenu = outerList.nextElementSibling;
setTimeout(() => {
interMenu.style.visibility = 'visible';
}, 200); // 延迟200毫秒显示
});
outerList.addEventListener('mouseout', () => {
const interMenu = outerList.nextElementSibling;
clearTimeout(interMenu.timeoutId);
interMenu.timeoutId = setTimeout(() => {
interMenu.style.visibility = 'hidden';
}, 200); // 延迟200毫秒隐藏
});
});
```
在这个例子中,通过结合CSS和JavaScript,可以创建一个动态且响应式的导航下拉菜单,适应不同浏览器视口宽度,并且能优雅地处理鼠标悬停时的显示和隐藏效果。
2020-06-05 上传
149 浏览量
213 浏览量
135 浏览量
102 浏览量
weixin_38501810
- 粉丝: 2
- 资源: 942
最新资源
- scrooge:通用金融帐户汇总器
- 基于PHP实现的CSS精简优化工具 1.0_csstip_工具查询(PHP源代码+html).zip
- 欧辰 RT133-1BL00-MB 产品规格书_V1.2.zip
- 机翼-发电机-混合向导:我在Ansys环境中制作了一个混合向导,以构造机翼并准备进行CFD分析
- 59个矢量头像 .ai .svg .sketch .png素材下载
- e-commerce-jsf-tjw:电子商务计划Java实用程序JSF门户网站Java门户网站
- 毕业答辩合集2.rar
- 一览您的系统。 GNU / Linux,BSD,Mac OS和Windows操作系统的top / htop替代方案。-Python开发
- 此应用程序提供通过 USB 或TCP/IP连接的 Android 设备的显示和控制。它不需要任何根访问权限。它适用于GNU/Li
- drive_ros_localize_wheel_odometry:此过滤器将车辆编码器消息转换为里程表消息
- 西霸士重载连接器2014年综合选型手册.zip
- 【开源项目】简易示波器电路原理图、源程序、设计资料分享-电路方案
- Learning_JavaScript
- QTableViewTest.rar
- PasswordEditText.zip
- 基于jsp实现的SQL网上书店售书系统(源代码+论文+答辩PPT).rar