要创建一个吸顶导航栏,并在用户向下滚动页面时隐藏导航栏,可以使用
HTML
、CSS
和JavaScript
实现以下效果。
最近小编美化网站,挺喜欢顶部导航菜单下拉隐藏,上拉再显示的功能,下面小编讲解下具体怎么操作
演示图片
网站演示
HTML 结构
创建一个包含导航栏的 HTML 结构:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>吸顶导航栏</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<!-- 导航栏 -->
<div class="navbar" id="navbar">
<a href="#home">首页</a>
<a href="#about">关于我们</a>
<a href="#services">服务</a>
<a href="#contact">联系我们</a>
</div>
<!-- 内容 -->
<div class="content">
<h1>欢迎光临</h1>
<p>滚动页面查看导航栏的隐藏效果。</p>
<!-- 内容区模拟长页面 -->
<div style="height: 2000px;"></div>
</div>
<script src="script.js"></script>
</body>
</html>
CSS 样式 (styles.css)
/* 基础样式 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* 导航栏样式 */
.navbar {
position: fixed;
top: 0;
width: 100%;
background-color: #333;
overflow: hidden;
color: #fff;
display: flex;
justify-content: space-around;
padding: 1rem 0;
transition: top 0.3s;
z-index: 10;
}
.navbar a {
color: white;
text-decoration: none;
padding: 0.5rem 1rem;
}
.navbar a:hover {
background-color: #575757;
}
/* 内容样式 */
.content {
padding-top: 60px;
text-align: center;
}
JavaScript 实现隐藏效果 (script.js)
// 获取导航栏元素
const navbar = document.getElementById("navbar");
let prevScrollpos = window.pageYOffset; // 初始滚动位置
window.onscroll = function() {
let currentScrollPos = window.pageYOffset;
if (prevScrollpos > currentScrollPos) {
// 用户向上滚动,显示导航栏
navbar.style.top = "0";
} else {
// 用户向下滚动,隐藏导航栏
navbar.style.top = "-60px"; // 隐藏到页面上方
}
// 更新前一滚动位置
prevScrollpos = currentScrollPos;
}
这样,当用户向下滚动页面时,导航栏会自动隐藏,向上滚动时重新显示。
小编自用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>底部菜单导航</title>
</head>
<style>
body {
height: 1200px;
margin: 0;
font-family: Arial, sans-serif;
}
.content {
padding: 20px;
text-align: center;
}
.footer {
position: fixed;
bottom: -100px; /* 默认隐藏菜单 */
left: 0;
width: 100%;
background-color: #333;
color: white;
text-align: center;
transition: bottom 0.3s ease;
}
.footer ul {
list-style: none;
margin: 0;
padding: 0;
}
.footer ul li {
display: inline-block;
margin: 10px;
}
.footer ul li a {
color: white;
text-decoration: none;
font-size: 16px;
}
</style>
<body>
<div class="content">
<h1>欢迎访问我的网站</h1>
<p>请滚动页面以查看底部菜单。</p>
</div>
<div class="footer" id="footerMenu">
<ul>
<li><a href="#">首页</a></li>
<li><a href="#">关于我们</a></li>
<li><a href="#">服务</a></li>
<li><a href="#">联系我们</a></li>
</ul>
</div>
<script>
const footer = document.getElementById('footerMenu');
window.addEventListener('scroll', function() {
if (window.scrollY > 100) {
footer.style.bottom = '0'; // 显示底部菜单
} else {
footer.style.bottom = '-100px'; // 隐藏底部菜单
}
});
</script>
</body>
</html>