案例:动态任务列表(To-Do List)
用户可以添加任务、标记任务为完成状态,并删除任务。
1. HTML 结构
<!DOCTYPE html>
<html lang="zh-CN">
<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="container">
<h1>我的任务列表</h1>
<input type="text" id="taskInput" placeholder="输入新任务...">
<button id="addTaskBtn">添加任务</button>
<ul id="taskList"></ul>
</div>
<script src="script.js"></script>
</body>
</html>
2. CSS 样式(styles.css)
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
margin: 0;
padding: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
.container {
background-color: #fff;
padding: 20px;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
width: 300px;
text-align: center;
}
h1 {
font-size: 24px;
margin-bottom: 20px;
}
input[type="text"] {
width: calc(100% - 22px);
padding: 10px;
margin-bottom: 10px;
border: 1px solid #ccc;
border-radius: 4px;
}
button {
padding: 10px 20px;
background-color: #28a745;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
}
button:hover {
background-color: #218838;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px;
border-bottom: 1px solid #ccc;
}
li.completed {
text-decoration: line-through;
color: #888;
}
li button {
background-color: #dc3545;
border: none;
color: #fff;
padding: 5px 10px;
border-radius: 4px;
cursor: pointer;
}
li button:hover {
background-color: #c82333;
}
3. JavaScript 交互(script.js)
// 获取DOM元素
const taskInput = document.getElementById("taskInput");
const addTaskBtn = document.getElementById("addTaskBtn");
const taskList = document.getElementById("taskList");
// 添加任务
addTaskBtn.addEventListener("click", () => {
const taskText = taskInput.value.trim();
if (taskText !== "") {
addTask(taskText);
taskInput.value = "";
}
});
// 回车键添加任务
taskInput.addEventListener("keypress", (e) => {
if (e.key === "Enter") {
addTaskBtn.click();
}
});
// 添加任务到列表
function addTask(taskText) {
const li = document.createElement("li");
li.innerHTML = `
<span>${taskText}</span>
<button>删除</button>
`;
taskList.appendChild(li);
// 标记任务为完成
li.querySelector("span").addEventListener("click", () => {
li.classList.toggle("completed");
});
// 删除任务
li.querySelector("button").addEventListener("click", () => {
taskList.removeChild(li);
});
}
4. 功能说明
-
添加任务:
-
用户输入任务内容后,点击“添加任务”按钮或按回车键,任务会添加到列表中。
-
-
标记任务为完成:
-
点击任务文本,任务会被标记为完成状态(添加删除线)。
-
-
删除任务:
-
点击任务右侧的“删除”按钮,任务会从列表中移除。
-
5. 运行效果
-
打开浏览器,加载 HTML 文件。
-
输入任务并点击“添加任务”按钮,任务会显示在列表中。
-
点击任务文本可以标记为完成,点击“删除”按钮可以移除任务。
6. 扩展功能
你可以进一步扩展这个案例,例如:
-
保存任务:使用
localStorage
将任务保存到本地,刷新页面后任务不会丢失。 -
任务排序:添加拖拽功能,允许用户重新排序任务。
-
任务分类:添加分类标签(如工作、生活),方便用户管理任务