本文将介绍10个常用的JavaScript网页特效实现,包括轮播图、图片懒加载、无限滚动等,每个案例都提供完整代码和详细讲解。
一、响应式导航栏
1.1 效果展示
- 桌面端显示完整导航
- 移动端显示汉堡菜单
- 平滑的动画过渡
<!-- HTML结构 -->
<nav class="navbar">
<div class="brand">Logo</div>
<button class="toggle-btn">
<span></span>
<span></span>
<span></span>
</button>
<ul class="nav-links">
<li><a href="#home">首页</a></li>
<li><a href="#about">关于</a></li>
<li><a href="#services">服务</a></li>
<li><a href="#contact">联系</a></li>
</ul>
</nav>
/* CSS样式 */
.navbar {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem;
background: #fff;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
.toggle-btn {
display: none;
}
.nav-links {
display: flex;
gap: 2rem;
}
@media (max-width: 768px) {
.toggle-btn {
display: block;
}
.nav-links {
display: none;
position: absolute;
top: 100%;
left: 0;
width: 100%;
background: #fff;
}
.nav-links.active {
display: flex;
flex-direction: column;
}
}
// JavaScript实现
const toggleBtn = document.querySelector('.toggle-btn');
const navLinks = document.querySelector('.nav-links');
toggleBtn.addEventListener('click', () => {
navLinks.classList.toggle('active');
});
// 点击外部关闭菜单
document.addEventListener('click', (e) => {
if (!e.target.closest('.navbar')) {
navLinks.classList.remove('active');
}
});
二、图片懒加载
2.1 使用Intersection Observer
<img class="lazy"
data-src="image.jpg"
src="placeholder.jpg"
alt="懒加载图片">
// 懒加载实现
function lazyLoad() {
const images = document.querySelectorAll('img.lazy');
const imageObserver = new IntersectionObserver((entries, observer) => {
entries.