适合新手学习的JavaScript网页设计案例
1. 基础交互
- 动态按钮:
JavaScript代码:
const button = document.getElementById('myButton');
button.addEventListener('mouseover', () => {
button.style.backgroundColor = 'blue';
});
button.addEventListener('mouseout', () => {
button.style.backgroundCol or = 'white';
});
HTML结构:
<button id="myButton">点击我</button>
解释:
getElementById
:通过 ID 获取 DOM 元素。addEventListener
:添加事件监听器,当鼠标悬停或移开时触发相应函数。style.backgroundColor
:设置元素的背景颜色。
- 简单动画:
JavaScript代码:
const element = document.getElementById('myElement');
function animate() {
element.style.transform = 'translateX(200px)';
}
const button = document.getElementById('animateButton');
button.addEventListener('click', animate);
HTML结构:
<div id="myElement">这是一个可移动的元素</div>
<button id="animateButton">点击动画</button>
解释:
transform: translateX(200px)
:将元素向右移动 200 像素。
- 动态显示时间:
JavaScript代码:
function showTime() {
const now = new Date();
const timeString = now.toLocaleTimeString();
document.getElementById('clock').textContent = timeString;
}
setInter val(showTime, 1000);
HTML结构:
<div id="clock"></div>
解释:
Date()
:创建一个日期对象。toLocaleTimeString()
:将日期对象转换为本地时间字符串。textContent
:设置元素的文本内容。
2. 表单与数据处理
-
表单验证:
JavaScript代码:
const emailInput = document.getElementById('email'); const submitButton = document.getElementById('submit'); submitButton.addEventListener ('click', () => { const email = emailInput.value; const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailRegex.test(email)) { alert('请输入正确的邮箱地址'); } });
HTML结构:
<input type="email" id="email">
<button id="submit">提交</button>
-
简单抽奖:
JavaScript代码:
const button = document.getElementById('draw'); const result = document.getElementById('result'); button.addEventListener('click', () => { const randomNum = Math.floor(Math.random() * 100) + 1; result.textContent = `恭喜您,抽中的号码是:${randomNum}`; });
HTML结构:
<button id="draw">抽奖</button>
<div id="result"></div>
-
留言板:
JavaScript代码:
const messageInput = document.getElementById('message'); const messageList = document.getElementById('message-list'); messageInput.addEventListener('submit', (event) => { event.preventDefault(); const message = messageInput.value; const li = document.createElement('li'); li.textContent = message; messageList.appendChild(li); // 使用 localStorage 保存留言,以便刷新页面后仍能显示 const messages = JSON.parse(localStorage.getItem('messages')) || []; messages.push(message); localStorage.setItem('messages', JSON.stringify(messages)); mes sageInput.value = ''; });
HTML结构:
<input type="text" id="message">
<button type="submit">提交</button>
<ul id="message-list"></ul>
解释:
localStorage
:浏览器提供的本地存储,用于保存数据。JSON.parse
:将字符串解析为 JSON 对象。JSON.stringify
:将 JavaScript 对象转换为 JSON 字符串。
3. 响应式设计与布局
-
响应式布局:
JavaScript代码:
const mediaQuery = window.matchMedia('(max-width: 768px)'); mediaQuery.addEventListener('change', () => { if (mediaQuery.matches) { // 手机屏幕样式 document.body.classList.add('mobile'); } else { // 桌面屏幕样式 document.body.classList.remove('mobile'); } });
HTML结构:
<body>
<style>
.mobile {
/* 手机屏幕样式 */
}
</style>
</body>
-
轮播图:
JavaScript代码:
const images = document.querySelectorAll('.slider-image'); let currentIndex = 0; function showImage(index) { images.forEach((image, i) => { image.style.display = i === index ? 'block' : 'none'; }); } // 自动切换 setInterval(() => { currentIndex = (currentIndex + 1) % images.length; showImage(currentIndex); }, 3000);
HTML结构:
<div class="slider">
<img class="slider-image" src="image1.jpg">
<img class="slider-image" src="image2.jpg">
</div>
4. 搜索与过滤
- 简单搜索:
JavaScript代码:
const searchInput = document.getElementById('search'); const items = document.querySelectorAll('.item'); searchInput.addEventListener('input', () => { const searchTerm = searchInput.value.toLowerCase(); items.forEach(item => { if (item.textContent.toLowerCase().includes(searchTerm)) { item.style.display = 'block'; } else { item.style.display = 'none'; } }); });
HTML结构:
<input type="text" id="search">
<ul>
<li class="item">搜索结果1</li>
<li class="item">搜索结果2</li>
</ul>