前端开发:简单的记账应用

实现一个简单的记账应用:自动添加时间与页面美化

在现代生活中,记账是管理个人财务的基本技能。今天,我们将学习如何用 HTML、CSS 和 JavaScript 创建一个简单的记账应用,其中包括自动添加时间戳和页面美化的功能。通过这篇文章,你将学会如何使用这些技术来开发一个实用的记账工具,并使其更具吸引力。

项目概述

我们的记账应用将具备以下功能:

  1. 记录管理:允许用户添加、查看和删除记录。
  2. 时间自动添加:每次添加记录时,自动附加当前时间。
  3. 页面美化:通过 CSS 美化页面,使其更具吸引力。

项目结构

本项目包括三个主要文件:

  • index.html:定义页面结构
  • style.css:设置页面样式
  • script.js:实现功能逻辑

1. HTML 文件

首先,我们创建一个基本的 HTML 文件,用于构建应用的界面。

<!DOCTYPE html><html lang="en"><head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>记账应用</title>
    <!-- 链接到 CSS 文件以应用样式 -->
    <link rel="stylesheet" href="style.css"></head><body>
    <div class="container">
        <h1>记账应用</h1>
        <!-- 输入描述 -->
        <input type="text" id="description" placeholder="描述">
        <!-- 输入金额 -->
        <input type="number" id="amount" placeholder="金额">
        <!-- 添加记录按钮 -->
        <button id="add-btn">添加记录</button>
        <!-- 显示记录的列表 -->
        <ul id="record-list"></ul>
    </div>
    <!-- 链接到 JavaScript 文件以实现功能 -->
    <script src="script.js"></script></body></html>

2. CSS 文件

接下来,我们使用 CSS 文件来美化页面。

/* 通用样式 */body, h1, input, button, ul {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* 设置页面背景和对齐方式 */body {
    font-family: Arial, sans-serif; /* 字体 */
    background-color: #f4f4f4; /* 背景颜色 */
    display: flex; /* 使用 Flexbox 布局 */
    justify-content: center; /* 水平居中对齐 */
    align-items: center; /* 垂直居中对齐 */
    height: 100vh; /* 高度为视口高度 */
}

/* 设置容器样式 */.container {
    background: #fff; /* 背景颜色 */
    border-radius: 8px; /* 圆角 */
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); /* 阴影 */
    padding: 20px; /* 内边距 */
    width: 350px; /* 宽度 */
    text-align: center; /* 文本居中 */
}

/* 标题样式 */h1 {
    color: #333; /* 字体颜色 */
    margin-bottom: 20px; /* 底部外边距 */
}

/* 输入框样式 */input {
    width: calc(50% - 10px); /* 宽度,减去边距 */
    padding: 10px; /* 内边距 */
    border: 1px solid #ddd; /* 边框 */
    border-radius: 4px; /* 圆角 */
    font-size: 16px; /* 字体大小 */
    margin-bottom: 10px; /* 底部外边距 */
}

/* 数字输入框样式 */input[type="number"] {
    margin-left: 10px; /* 左侧外边距 */
}

/* 添加按钮样式 */#add-btn {
    width: 100%; /* 宽度 */
    padding: 10px; /* 内边距 */
    background-color: #28a745; /* 背景颜色 */
    color: #fff; /* 字体颜色 */
    border: none; /* 去除边框 */
    border-radius: 4px; /* 圆角 */
    font-size: 16px; /* 字体大小 */
    cursor: pointer; /* 鼠标指针样式 */
    transition: background-color 0.3s; /* 背景颜色过渡效果 */
}

/* 按钮悬停效果 */#add-btn:hover {
    background-color: #218838; /* 背景颜色变化 */
}

/* 记录列表样式 */#record-list {
    list-style-type: none; /* 去除列表项标记 */
    padding: 0; /* 去除内边距 */
    margin-top: 20px; /* 顶部外边距 */
}

/* 记录项样式 */#record-list li {
    background: #f9f9f9; /* 背景颜色 */
    border-bottom: 1px solid #ddd; /* 底部边框 */
    padding: 10px; /* 内边距 */
    font-size: 16px; /* 字体大小 */
    display: flex; /* 使用 Flexbox 布局 */
    justify-content: space-between; /* 两端对齐 */
    align-items: center; /* 垂直居中对齐 */
}

/* 最后一项无底部边框 */#record-list li:last-child {
    border-bottom: none; /* 去除底部边框 */
}

/* 时间样式 */.time {
    color: #888; /* 字体颜色 */
    font-size: 14px; /* 字体大小 */
    margin-left: 10px; /* 左侧外边距 */
}

3. JavaScript 文件

最后,我们实现 JavaScript 文件以处理应用逻辑,包括记录的添加、显示和删除功能。

// 当文档加载完成时执行document.addEventListener('DOMContentLoaded', () => {
    // 获取 DOM 元素
    const descriptionInput = document.getElementById('description'); // 描述输入框
    const amountInput = document.getElementById('amount'); // 金额输入框
    const addButton = document.getElementById('add-btn'); // 添加按钮
    const recordList = document.getElementById('record-list'); // 记录列表
    
    // 渲染记录列表
    function renderRecords() {
        // 从 localStorage 中获取记录
        const records = JSON.parse(localStorage.getItem('records')) || [];
        recordList.innerHTML = ''; // 清空记录列表
        
        // 遍历记录并添加到列表中
        records.forEach((record, index) => {
            const li = document.createElement('li'); // 创建列表项
            li.textContent = `${record.description} - ${record.amount}元`; // 设置文本内容
            
            const timeSpan = document.createElement('span'); // 创建时间标签
            timeSpan.textContent = record.time; // 设置时间文本
            timeSpan.classList.add('time'); // 添加时间样式
            
            const removeButton = document.createElement('button'); // 创建删除按钮
            removeButton.textContent = '删除'; // 设置按钮文本
            removeButton.classList.add('remove-btn'); // 添加按钮样式
            removeButton.addEventListener('click', () => {
                // 删除按钮点击事件
                records.splice(index, 1); // 从记录数组中删除对应记录
                localStorage.setItem('records', JSON.stringify(records)); // 更新 localStorage
                renderRecords(); // 重新渲染记录列表
            });
            
            // 将时间标签和删除按钮添加到列表项中
            li.appendChild(timeSpan);
            li.appendChild(removeButton);
            recordList.appendChild(li); // 将列表项添加到记录列表中
        });
    }
    
    // 添加记录按钮点击事件
    addButton.addEventListener('click', () => {
        const description = descriptionInput.value.trim(); // 获取并修剪描述输入
        const amount = parseFloat(amountInput.value.trim()); // 获取并解析金额输入
        
        // 如果描述和金额都有效
        if (description && !isNaN(amount)) {
            // 从 localStorage 中获取记录
            const records = JSON.parse(localStorage.getItem('records')) || [];
            const now = new Date().toLocaleString(); // 获取当前时间
            // 将新记录添加到记录数组中
            records.push({ description, amount, time: now });
            localStorage.setItem('records', JSON.stringify(records)); // 更新 localStorage
            descriptionInput.value = ''; // 清空描述输入框
            amountInput.value = ''; // 清空金额输入框
            renderRecords(); // 重新渲染记录列表
        }
    });
    
    renderRecords(); // 初次渲染记录列表
});

总结

通过本文的介绍,我们成功实现了一个简单的记账应用,具备了自动添加时间戳和美化页面的功能。你可以根据需要进一步扩展和优化这个应用,例如增加编辑功能或数据统计功能。希望这篇文章对你有所帮助

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值