2021-11-13 01:42:23
本方案旨在设计一个基于HTML5+CSS3+JavaScript的响应式个人相册博客网站,包含个人介绍、作品展示、技能说明、留言互动等功能模块,采用响应式布局适配不同终端设备。
实现要点:
JavaScript实现:
// 轮播核心逻辑class BannerSlider { constructor(container) { this.container = container; this.items = container.querySelectorAll('li'); this.currentIndex = 0; this.init(); } init() { // 自动轮播设置 setInterval(() => this.next(), 3000); // 添加导航指示器 this.addIndicators(); } next() { this.goTo((this.currentIndex + 1) % this.items.length); } goTo(index) { // 淡出动画实现 $(this.items[this.currentIndex]).fadeOut(500); $(this.items[index]).fadeIn(500); this.currentIndex = index; }}// 初始化轮播new BannerSlider(document.querySelector('.banner'));3. 相册网格布局<div class="gallery-container"> <div class="gallery-item" data-aos="fade-up"> <img src="images/gallery/01.jpg" alt="作品1"> <div class="gallery-overlay"> <h3>自然风光</h3> <p>2023年5月拍摄于黄山</p> </div> </div> <!-- 更多相册项 --></div>CSS关键样式:
.gallery-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 20px; padding: 20px;}.gallery-item { position: relative; overflow: hidden; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1); transition: transform 0.3s ease;}.gallery-item:hover { transform: translateY(-5px);}.gallery-overlay { position: absolute; bottom: 0; left: 0; right: 0; background: rgba(0,0,0,0.7); color: white; padding: 15px; transform: translateY(100%); transition: transform 0.3s ease;}.gallery-item:hover .gallery-overlay { transform: translateY(0);}4. 留言表单验证<form id="messageForm" class="message-form"> <div class="form-group"> <input type="text" id="name" name="name" required placeholder="您的姓名"> </div> <div class="form-group"> <input type="email" id="email" name="email" required placeholder="电子邮箱"> </div> <div class="form-group"> <textarea id="content" name="content" required rows="5" placeholder="留言内容"></textarea> </div> <button type="submit" class="submit-btn">提交留言</button></form>JavaScript验证逻辑:
document.getElementById('messageForm').addEventListener('submit', function(e) { e.preventDefault(); const name = document.getElementById('name').value.trim(); const email = document.getElementById('email').value.trim(); const content = document.getElementById('content').value.trim(); if(!name || !email || !content) { alert('请填写完整表单!'); return; } if(!/^[^s@]+@[^s@]+.[^s@]+$/.test(email)) { alert('请输入有效的邮箱地址!'); return; } // 表单提交逻辑... this.reset(); alert('留言提交成功!');});图片优化:
使用WebP格式图片(节省30%体积)
实现懒加载(loading="lazy")
不同设备加载不同尺寸图片(srcset属性)
代码优化:
CSS/JS文件合并压缩
使用CDN加速静态资源
实现异步加载非关键JS
缓存策略:
设置合理的Cache-Control头
使用Service Worker实现离线缓存
本方案完整实现了响应式个人相册博客的核心功能,采用模块化开发方式便于维护扩展,通过性能优化确保良好用户体验,适合作为Web前端课程大作业或个人作品集展示网站。