当前位置: 首页 > news >正文

JavaScript 网页设计案例:打造一个交互式用户界面

随着Web开发的不断进步,JavaScript已成为前端开发中不可或缺的语言。本文将通过一个具体的案例,展示如何利用JavaScript创建一个简单而富有交互性的网页,涵盖布局、样式和动态效果等方面。

一、项目概述

本案例将构建一个“任务列表”网页应用,用户可以添加、删除和标记任务。该应用旨在展示JavaScript的基本用法,如何处理DOM操作以及实现简单的交互效果。

项目功能:

  1. 添加任务
  2. 删除任务
  3. 标记任务为已完成
  4. 清空已完成任务

二、技术栈

  • HTML:用于构建网页的基本结构
  • CSS:用于美化网页,设置样式
  • JavaScript:实现网页的交互效果

三、实现步骤

3.1 创建基本结构

首先,我们需要创建一个HTML文件,定义基本的页面结构。

<!DOCTYPE html>
<html lang="zh">
<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><button id="clearCompletedBtn">清空已完成任务</button></div><script src="script.js"></script>
</body>
</html>

3.2 添加样式

接下来,我们创建一个CSS文件 styles.css,为页面添加一些基本样式。

body {font-family: Arial, sans-serif;background-color: #f4f4f4;margin: 0;padding: 0;
}.container {max-width: 600px;margin: 50px auto;background: #fff;padding: 20px;border-radius: 8px;box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}h1 {text-align: center;
}input[type="text"] {width: calc(100% - 130px);padding: 10px;border: 1px solid #ccc;border-radius: 4px;
}button {padding: 10px;margin-left: 10px;border: none;background: #007BFF;color: white;border-radius: 4px;cursor: pointer;
}button:hover {background: #0056b3;
}ul {list-style: none;padding: 0;
}li {padding: 10px;border-bottom: 1px solid #ccc;display: flex;justify-content: space-between;align-items: center;
}.completed {text-decoration: line-through;color: gray;
}

3.3 实现JavaScript逻辑

最后,我们编写 script.js 文件,添加任务、删除任务、标记任务以及清空已完成任务的功能。

document.addEventListener("DOMContentLoaded", () => {const taskInput = document.getElementById("taskInput");const addTaskBtn = document.getElementById("addTaskBtn");const taskList = document.getElementById("taskList");const clearCompletedBtn = document.getElementById("clearCompletedBtn");// 添加任务addTaskBtn.addEventListener("click", () => {const taskText = taskInput.value.trim();if (taskText) {const li = document.createElement("li");li.innerHTML = `<span>${taskText}</span><button class="deleteBtn">删除</button>`;taskList.appendChild(li);taskInput.value = "";// 添加标记已完成功能li.firstChild.addEventListener("click", () => {li.classList.toggle("completed");});// 添加删除功能li.querySelector(".deleteBtn").addEventListener("click", () => {taskList.removeChild(li);});}});// 清空已完成任务clearCompletedBtn.addEventListener("click", () => {const completedTasks = document.querySelectorAll(".completed");completedTasks.forEach(task => taskList.removeChild(task));});
});

四、项目效果

运行上述代码后,我们的网页将显示一个简单的任务列表应用。用户可以输入任务并点击“添加任务”按钮,任务将被添加到列表中。点击任务可以标记为已完成,点击“删除”按钮可以删除特定任务,最后,用户可以通过“清空已完成任务”按钮一次性删除所有已完成的任务。

五、总结

通过这个简单的JavaScript网页设计案例,我们展示了如何使用HTML、CSS和JavaScript构建一个基本的交互式应用。此项目不仅能帮助新手熟悉前端开发的基本概念,还能为后续的复杂项目打下基础。

在实际开发中,随着需求的复杂化,可以考虑使用前端框架(如Vue、React、Angular等)来提升开发效率和代码的可维护性。但无论使用何种工具,掌握JavaScript的基本知识都是至关重要的。希望这个案例对你有所帮助,鼓励大家在实践中不断探索和学习!

相关文章:

  • 迈瑞嵌入式面试及参考答案
  • 软件测试学习笔记丨Mock的价值与实战
  • 【算法业务】关于数据驱动的用户增长思考
  • Ubuntu 开机自启动 .py / .sh 脚本,可通过脚本启动 roslaunch/roscore等
  • DMDSC更换DCR和VOTE磁盘
  • MySQL-数据库设计
  • tomcat的安装,管理与配置
  • ECMAScript与Python、Java和C++比较的详细的代码案例
  • Excel中查找某个值的位置,用位置取值
  • 浅谈stm32的GPIO引脚配置模式
  • 在Ubuntu 16.04上安装Virtualmin与Webmin、LAMP、BIND和PostFix的方法
  • Swagger配置且添加小锁(asp.net)(笔记)
  • 遥感图像语义分割数据集制作(使用ArcGIS Pro)
  • 只申请一块sizeofimage的内存能否实现PE文件的拉伸
  • 【PyTorch】生成对抗网络
  • bearychat的java client
  • FastReport在线报表设计器工作原理
  • gulp 教程
  • Java 网络编程(2):UDP 的使用
  • laravel 用artisan创建自己的模板
  • Vue学习第二天
  • windows下如何用phpstorm同步测试服务器
  • 后端_MYSQL
  • 从如何停掉 Promise 链说起
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (3)STL算法之搜索
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (三)c52学习之旅-点亮LED灯
  • (三)SvelteKit教程:layout 文件
  • (四)React组件、useState、组件样式
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .net core使用ef 6
  • .Net IOC框架入门之一 Unity
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .Net的DataSet直接与SQL2005交互
  • .net解析传过来的xml_DOM4J解析XML文件
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • .pop ----remove 删除
  • @Resource和@Autowired的区别
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [001-03-007].第07节:Redis中的事务
  • [14]内置对象
  • [23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians
  • [AutoSar]BSW_OS 02 Autosar OS_STACK
  • [BUAA软工]第一次博客作业---阅读《构建之法》
  • [BZOJ1010] [HNOI2008] 玩具装箱toy (斜率优化)
  • [C# 基础知识系列]专题十六:Linq介绍
  • [C/C++] C/C++中数字与字符串之间的转换
  • [C++基础]-入门知识
  • [codeforces]Recover the String
  • [c语言]小课堂 day2
  • [flink]部署模式
  • [HDCTF 2023]Welcome To HDCTF 2023
  • [HNOI2008]水平可见直线