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

JavaScript 网页设计案例

在本指南中,我们将通过一个实际的网页设计案例,深入探讨如何使用 JavaScript 创建一个交互式的网页。我们将构建一个简单的待办事项应用(To-Do List),并将 JavaScript 应用于网页的动态行为与用户交互。

一、环境准备

1.1 工具与环境

在开始之前,我们需要准备一些基本工具:

  • 编辑器:一个代码文本编辑器,例如 Visual Studio Code 或 Sublime Text。
  • 浏览器:为了查看我们的网页,可以使用 Chrome、Firefox 或任何现代浏览器。
  • Git(可选):用来管理版本控制,尤其是在开发过程中。

1.2 文件结构

在你的工作目录中,创建一个新文件夹,比如叫 todo-app,并在里面创建如下文件:

todo-app/
|-- index.html
|-- styles.css
|-- script.js

二、构建 HTML 结构

接下来,我们将构建一个基本的 HTML 结构,为我们的待办事项应用打下基础。

2.1 创建 HTML 文件

打开 index.html 文件,并输入以下代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="styles.css">
<title>待办事项应用</title>
</head>
<body>
<div class="container">
<h1>待办事项</h1>
<input type="text" id="task-input" placeholder="添加新的任务...">
<button id="add-task">添加</button>
<ul id="task-list"></ul>
</div>
<script src="script.js"></script>
</body>
</html>
解释代码
  • DOCTYPE 和语言:指定文档为 HTML5。
  • 头部信息:包含字符集、响应式设计和引入 CSS 文件。
  • 主体结构:包含一个输入框、一个按钮和一个用于展示任务的列表。

三、添加样式

为了让我们的应用更美观,我们需要为其添加一些样式。

3.1 创建 CSS 文件

打开 styles.css 文件,并输入以下代码:

body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
margin: 0;
padding: 0;
}

.container {
max-width: 600px;
margin: 50px auto;
padding: 30px;
background: white;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}

h1 {
text-align: center;
}

input[type="text"] {
width: calc(100% - 80px);
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
}

button {
padding: 10px;
background-color: #5cb85c;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
}

button:hover {
background-color: #4cae4c;
}

ul {
list-style-type: none;
padding: 0;
}

li {
padding: 10px;
margin: 5px 0;
background-color: #eaeaea;
border-radius: 5px;
display: flex;
justify-content: space-between;
align-items: center;
}

li button {
background-color: #d9534f;
}
解释样式
  • 全局样式:为正文设置字体、背景色和内边距。
  • 容器样式:通过设置最大宽度、外边距、内边距和阴影,为容器增添美感。
  • 按钮及输入框:设置按钮和输入框的样式,使其看起来更加现代。

四、编写 JavaScript 逻辑

接下来,我们为待办事项应用添加 JavaScript 逻辑,使其具备动态功能。

4.1 创建 JavaScript 文件

打开 script.js 文件,并输入以下代码:

document.addEventListener('DOMContentLoaded', () => {
const taskInput = document.getElementById('task-input');
const addTaskButton = document.getElementById('add-task');
const taskList = document.getElementById('task-list');

addTaskButton.addEventListener('click', addTask);
taskInput.addEventListener('keypress', function (e) {
if (e.key === 'Enter') {
addTask();
}
});

function addTask() {
const taskValue = taskInput.value.trim();
if (taskValue === '') {
alert('请输入有效的任务!');
return;
}

const li = document.createElement('li');
li.textContent = taskValue;

const deleteButton = document.createElement('button');
deleteButton.textContent = '删除';
deleteButton.addEventListener('click', () => {
taskList.removeChild(li);
});
li.appendChild(deleteButton);

taskList.appendChild(li);
taskInput.value = '';
}
});
解释代码
  • 事件监听器:使用 DOMContentLoaded 确保页面加载完毕后再执行 JavaScript。
  • 添加任务功能
    • 获取输入框内容并去除多余空白。
    • 如果输入为空,弹出提示。
    • 创建新的任务 li 元素,并添加删除按钮。
    • 将新任务添加到任务列表,并清空输入框。
  • 删除任务功能:点击删除按钮时,从列表中移除相应的任务。

五、测试应用

5.1 启动项目

  1. 打开你的Web浏览器。
  2. 用浏览器打开 index.html 文件(可以直接拖动至浏览器)。
  3. 你应该能够看到一个基本的待办事项应用界面。

5.2 添加和删除任务

  • 在输入框中输入一个任务,然后点击“添加”按钮,或者按下回车键。
  • 确保任务被添加到列表中。
  • 点击任务旁边的“删除”按钮,确保任务能从列表中移除。

六、增加功能

在这一步,我们可以为应用增加一些更高级的功能,让它更具实用性。例如,增加任务的持久化存储。

6.1 使用 Local Storage

我们可以使用浏览器的 Local Storage 功能来存储和恢复任务列表数据。

更新 script.js

修改 script.js 文件,让我们在页面加载时从 Local Storage 中读取任务,并在添加任务时将其存储:

document.addEventListener('DOMContentLoaded', () => {
const taskInput = document.getElementById('task-input');
const addTaskButton = document.getElementById('add-task');
const taskList = document.getElementById('task-list');

// 从 Local Storage 加载任务
loadTasks();

addTaskButton.addEventListener('click', addTask);
taskInput.addEventListener('keypress', function (e) {
if (e.key === 'Enter') {
addTask();
}
});

function loadTasks() {
const tasks = JSON.parse(localStorage.getItem('tasks')) || [];
tasks.forEach(task => {
addTaskToDOM(task);
});
}

function addTask() {
const taskValue = taskInput.value.trim();
if (taskValue === '') {
alert('请输入有效的任务!');
return;
}

addTaskToDOM(taskValue);
saveTaskToLocalStorage(taskValue);
taskInput.value = '';
}

function addTaskToDOM(taskValue) {
const li = document.createElement('li');
li.textContent = taskValue;

const deleteButton = document.createElement('button');
deleteButton.textContent = '删除';
deleteButton.addEventListener('click', () => {
taskList.removeChild(li);
removeTaskFromLocalStorage(taskValue);
});
li.appendChild(deleteButton);

taskList.appendChild(li);
}

function saveTaskToLocalStorage(task) {
const tasks = JSON.parse(localStorage.getItem('tasks')) || [];
tasks.push(task);
localStorage.setItem('tasks', JSON.stringify(tasks));
}

function removeTaskFromLocalStorage(task) {
let tasks = JSON.parse(localStorage.getItem('tasks')) || [];
tasks = tasks.filter(t => t !== task);
localStorage.setItem('tasks', JSON.stringify(tasks));
}
});
新增的功能解释
  • loadTasks():在页面加载时,从 Local Storage 加载之前保存的任务。
  • addTaskToDOM(taskValue):将传入的任务值添加到 DOM 中,是添加任务的一个独立功能。
  • saveTaskToLocalStorage(task):将添加的任务存储到 Local Storage 中。
  • removeTaskFromLocalStorage(task):在删除任务时,更新 Local Storage。

七、增强用户体验

7.1 输入框提示

为了增强用户体验,我们可以为输入框添加占位符以及澄清用户操作。

<input type="text" id="task-input" placeholder="添加新的任务..." aria-label="输入新的任务" required>

7.2 动画效果

我们还可以在任务的添加与删除时添加简单的动画效果,使其看起来更加流畅。通过 CSS 提供过渡效果:

在 styles.css 中更新任务列表的样式:

li {
transition: all 0.3s ease;
}

八、发布应用

8.1 准备发布

一旦你对应用的功能与外观满意,就可以将其发布到 Web 上。

  1. 选择托管服务:可以使用 GitHub Pages、Netlify、Vercel 等。
  2. 推送代码到 GitHub(如果使用版本控制)。

8.2 使用 GitHub Pages 发布

将项目托管到 GitHub Pages:

  1. 将项目推送到 GitHub。
  2. 在 GitHub 仓库的 Settings 中,找到 Pages 部分,选择 main 或 master 分支,并保存。
  3. 更新后,你可以在 https://yourusername.github.io/your-repo-name 上访问应用。

8.3 使用 Netlify 发布

  1. 访问 Netlify。
  2. 创建一个账户并链接至 GitHub。
  3. 在 Netlify 中选择你的项目并进行部署。

通过这次的实践,我们了解了 JavaScript 在网页设计中的应用以及如何通过简单的 HTML、CSS、和 JavaScript 构建一个待办事项应用。我们实现了动态添加、删除任务,并添加了数据持久化的功能。在用户体验上也做了一些增强,比如输入框的占位符和任务的动画效果。

这个简单的项目为我们深入学习前端开发打下了基础,今后你可以在此基础上加入更多的功能,如任务编辑、到期时间设定、任务分类等,进一步提升应用的复杂性与实用性。


http://www.kler.cn/a/284032.html

相关文章:

  • 408模拟卷较难题(无分类)
  • odoo 17 后端路由接口认证自定义
  • HBase使用create创建表时报错ERROR: KeeperErrorCode = NoNode for /hbase/master
  • 阿里云和七牛云对象存储区别和实现
  • Python 随笔
  • MoneyPrinterTurbo – 开源的AI短视频生成工具
  • 12、stm32通过dht11读取温湿度
  • Elasticsearch简单介绍
  • 智慧高校迎新服务平台的设计与实现---附源码92489
  • http方法调用接口
  • Django如何实现websocket
  • 【工作实践】MVEL 2.x语法指南
  • vscode在html中的使用
  • 多进程比多线程开销大的原因
  • 海绵城市雨水监测系统
  • C++:Github开源7.8Kstar的线程池介绍
  • 如何在没有密码的情况下解锁 Oppo 手机?5 种简单的方法
  • hadoop日志文件
  • 随身wifi靠谱吗?适合哪类人使用?靠谱随身wifi怎么选?热门随身wifi推荐测评!
  • CRC32
  • 使用[KafkaStreams流计算框架实时计算产生报警(升级报警)
  • 深入解析Nginx的Fair调度算法:实现请求的智能分配
  • 中国各地区数字经济发展对环境污染的影响数据(2011-2021年)
  • 坐牢第三十天(c++)
  • 【微信小程序】分包--独立分包
  • 请问基于规则和强化学习的各自的优缺点有哪些?应用场景有哪些?今天的北京机器人展上的技术专家的技术