吸顶效果是一种常见的网页设计技巧,它使得页面的某个元素(如导航栏)在用户滚动页面时始终保持在视口的顶部。使用原生JavaScript实现吸顶效果,可以通过监听滚动事件并动态改变元素的样式来实现。
吸顶效果通常涉及到以下几个概念:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sticky Header</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<header id="stickyHeader">Sticky Header</header>
<div class="content">
<!-- 页面内容 -->
</div>
<script src="script.js"></script>
</body>
</html>
body {
margin: 0;
font-family: Arial, sans-serif;
}
#stickyHeader {
background-color: #333;
color: white;
padding: 10px 20px;
text-align: center;
width: 100%;
transition: top 0.3s;
}
.sticky {
position: fixed;
top: 0;
z-index: 1000;
}
.content {
height: 2000px; /* 仅用于演示滚动效果 */
}
window.addEventListener('scroll', function() {
var header = document.getElementById('stickyHeader');
var sticky = header.offsetTop;
if (window.pageYOffset > sticky) {
header.classList.add('sticky');
} else {
header.classList.remove('sticky');
}
});
requestAnimationFrame
优化滚动事件处理,减少重绘次数。var ticking = false;
window.addEventListener('scroll', function() {
if (!ticking) {
window.requestAnimationFrame(function() {
var header = document.getElementById('stickyHeader');
var sticky = header.offsetTop;
if (window.pageYOffset > sticky) {
header.classList.add('sticky');
} else {
header.classList.remove('sticky');
}
ticking = false;
});
ticking = true;
}
});
通过以上步骤和代码示例,你可以实现一个简单的吸顶效果,并根据需要进行优化和调整。
领取专属 10元无门槛券
手把手带您无忧上云