实现滚动时显示/隐藏导航栏并激活导航链接的教程
一、功能概述
本文将介绍如何通过JavaScript实现页面滚动时动态显示/隐藏导航栏,并根据当前滚动位置自动激活对应的导航链接。这种效果常见于现代网站,能提升用户体验和页面交互性。
二、HTML结构设计
首先构建基本的页面结构,包括导航栏和内容区域:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>滚动导航示例</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: Arial, sans-serif;
line-height: 1.6;
}
/* 导航栏样式 */
.navbar {
position: fixed;
top: 0;
left: 0;
width: 100%;
background-color: #333;
padding: 15px 0;
transition: transform 0.3s ease-in-out;
z-index: 1000;
}
.navbar.hidden {
transform: translateY(-100%);
}
.nav-container {
max-width: 1200px;
margin: 0 auto;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 20px;
}
.logo {
color: white;
font-size: 24px;
font-weight: bold;
}
.nav-links {
display: flex;
list-style: none;
}
.nav-links li {
margin-left: 30px;
}
.nav-links a {
color: white;
text-decoration: none;
padding: 5px 10px;
transition: color 0.3s;
}
.nav-links a.active {
color: #ff6b6b;
border-bottom: 2px solid #ff6b6b;
}
/* 内容区域样式 */
.content {
margin-top: 70px;
}
.section {
height: 500px;
padding: 60px 20px;
max-width: 1200px;
margin: 0 auto;
}
#home { background-color: #f4f4f4; }
#about { background-color: #e9e9e9; }
#services { background-color: #ddd; }
#contact { background-color: #ccc; }
</style>
</head>
<body>
<!-- 导航栏 -->
<nav class="navbar" id="navbar">
<div class="nav-container">
<div class="logo">我的网站</div>
<ul class="nav-links">
<li><a href="#home" class="active">首页</a></li>
<li><a href="#about">关于我们</a></li>
<li><a href="#services">服务</a></li>
<li><a href="#contact">联系我们</a></li>
</ul>
</div>
</nav>
<!-- 页面内容 -->
<main class="content">
<section id="home" class="section">
<h2>首页</h2>
<p>欢迎来到我们的网站!向下滚动查看导航栏效果。</p>
</section>
<section id="about" class="section">
<h2>关于我们</h2>
<p>这里是关于我们的内容...</p>
</section>
<section id="services" class="section">
<h2>服务</h2>
<p>我们提供的各种服务...</p>
</section>
<section id="contact" class="section">
<h2>联系我们</h2>
<p>联系方式信息...</p>
</section>
</main>
<script>
// JavaScript代码将在这里编写
</script>
</body>
</html>