在JavaScript中实现下划线跟随导航菜单的效果,通常涉及到CSS和JavaScript的结合使用。以下是一个简单的示例,展示了如何实现这一效果:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Navigation Menu</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<nav class="navbar">
<ul class="nav-list">
<li class="nav-item"><a href="#home">Home</a></li>
<li class="nav-item"><a href="#about">About</a></li>
<li class="nav-item"><a href="#services">Services</a></li>
<li class="nav-item"><a href="#contact">Contact</a></li>
</ul>
<div class="underline"></div>
</nav>
<script src="script.js"></script>
</body>
</html>
/* styles.css */
body {
font-family: Arial, sans-serif;
}
.navbar {
position: relative;
display: flex;
justify-content: center;
}
.nav-list {
list-style: none;
display: flex;
padding: 0;
}
.nav-item {
margin: 0 15px;
}
.nav-item a {
text-decoration: none;
color: #333;
font-size: 18px;
}
.underline {
position: absolute;
bottom: 0;
height: 3px;
background-color: #007bff;
transition: all 0.3s ease;
}
// script.js
document.addEventListener('DOMContentLoaded', function() {
const navItems = document.querySelectorAll('.nav-item');
const underline = document.querySelector('.underline');
navItems.forEach(item => {
item.addEventListener('mouseenter', function() {
const link = this.querySelector('a');
const linkRect = link.getBoundingClientRect();
underline.style.width = `${linkRect.width}px`;
underline.style.left = `${linkRect.left - document.querySelector('.navbar').offsetLeft}px`;
});
});
navItems.forEach(item => {
item.addEventListener('mouseleave', function() {
underline.style.width = '0';
underline.style.left = '0';
});
});
});
<div>
。mouseenter
事件,计算当前链接的位置和宽度,并更新下划线的位置和宽度。mouseleave
事件,重置下划线的位置和宽度。通过上述方法,可以实现一个简单的下划线跟随导航菜单效果,提升用户体验。
领取专属 10元无门槛券
手把手带您无忧上云