百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

「详细教程」HTML、CSS 和 JS 实现一个任务管理工具-ToDoList

itomcoil 2025-01-11 13:58 27 浏览

本文将一步一步介绍如何实现下面这样的一个任务管理工具

基本结构

首先我们建立 HTML 的基本结构,定义 HTML 文档的类型、语言、头部信息以及页面内容。

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Todo List</title> 
    <style media="screen"> 
        /* CSS 样式 */ 
    </style>
    <script> 
        /* JavaScript 脚本 */ 
    </script> 
</head>
<body> 
    <!-- HTML 页面内容 -->
</body> 
</html>

HTML

下面这是页面的主要内容,比较简单。包含了一个容器,其中包含一个输入框和一个按钮用于添加任务,并且还有一个空的任务列表,用于在添加任务时显示任务。

<div class="container">
    <div id="newtask">
        <input type="text" placeholder="要完成的任务..">
        <button id="push">添加</button>
    </div>

    <div id="tasks"></div>
</div>

CSS

重置页面所有元素的内外边距和盒模型大小,并将元素的盒模型设为"border-box",使得元素的大小不会随着内边距和边框的增加而变化。

    	*,
*:before,
*:after{
    padding: 0;
    margin: 0;
    box-sizing: border-box;
}

设置整个页面的背景图像,高度为视口高度"100vh"

body{
    background: url("https://haiyong.site/img/img-blog.csdnimg.cn/aff605fb499846f5911bec368762e829.png" );
    background-repeat: no-repeat;
    background-position: center;
    background-size: cover;
    height: 100vh;
}

.container是整个应用的最外层容器,它被定位在屏幕的中心,并且具有一个白色的背景和10像素的圆角边框。它的宽度为40%,但是最小宽度为450像素。

.container{
    width: 40%;
    min-width: 450px;
    position: absolute;
    transform: translate(-50%,-50%);
    top: 50%;
    left: 50%;
    background: white;
    border-radius: 10px;
}

#newtask是一个表单容器,其中包含一个输入框和一个提交按钮。输入框的样式包括宽度、高度、字体、边框、内边距、字体颜色和字体粗细。当输入框被聚焦时,边框颜色会改变。提交按钮的样式包括宽度、高度、字体、字体颜色、背景颜色、边框、圆角和光标样式。

#newtask{
    position: relative;
    padding: 30px 20px;
}
#newtask input{
    width: 75%;
    height: 45px;
    font-family: 'Poppins',sans-serif;
    font-size: 15px;
    border: 2px solid #d1d3d4;
    padding: 12px;
    color: #111111;
    font-weight: 500;
    position: relative;
    border-radius: 5px;
}
#newtask input:focus{
    outline: none;
    border-color: #0d75ec;
}

#newtask button{
    position: relative;
    float: right;
    width: 20%;
    height: 45px;
    border-radius: 5px;
    font-family: 'Poppins',sans-serif;
    font-weight: 500;
    font-size: 16px;
    background-color: #0d75ec;
    border: none;
    color: #ffffff;
    cursor: pointer;
    outline: none;
}

#tasks是待办事项列表的样式,用于设置其背景颜色、内边距、顶部外边距、边框半径、宽度和相对定位。

#tasks{
    background-color: #ffffff;
    padding: 30px 20px;
    margin-top: 10px;
    border-radius: 10px;
    width: 100%;
    position: relative;
}

.task是每个待办事项的样式,用于设置其背景颜色、高度、下外边距、内边距、显示属性、对齐方式、边框半径、边框样式和光标类型。

.task{
    background-color: #c5e1e6;
    height: 50px;
		margin-bottom: 8px;
    padding: 5px 10px;
    display: flex;
		border-radius: 5px;
    align-items: center;
    justify-content: space-between;
    border: 1px solid #939697;
    cursor: pointer;
}

.task span是每个待办事项中的文本的样式,用于设置其字体系列、字体大小和字重。

.task span{
    font-family: 'Poppins',sans-serif;
    font-size: 15px;
    font-weight: 400;
}

.task button是每个待办事项中的删除按钮的样式,用于设置其背景颜色、文本颜色、高度、宽度、边框半径、边框样式、光标类型和轮廓样式。

.task button{
    background-color: #0a2ea4;
    color: #ffffff;
    height: 100%;
    width: 40px;
    border-radius: 5px;
    border: none;
    cursor: pointer;
    outline: none;
}
/* 为已完成的任务设置下划线文本装饰 */
.completed{
    text-decoration: line-through;
}

JavaScript

下面是添加新任务按钮的 JavaScript 代码块,定义了点击按钮时的行为。querySelector 方法会返回匹配给定选择器的第一个元素,这里匹配 ID 为 "push" 的按钮。点击按钮时,执行函数中的代码块。

document.querySelector('#push').onclick = function(){
    /* JavaScript 代码块 */
}

首先判断输入框中的内容是否为空。如果为空,则弹出一个提示框,提示用户输入任务。如果不为空,则执行后续代码块。

if(document.querySelector('#newtask input').value.length == 0){
    alert("请输入任务")
}
else{
    /* JavaScript 代码块 */
}

如果输入框不为空,则会将输入框的值添加到任务列表中。这段代码使用了 innerHTML 属性将一个新的 div 元素插入到了任务列表中,其中包括任务名称和删除按钮。${document.querySelector('#newtask input').value} 是一个 ES6 模板字符串语法,用于将输入框的值插入到字符串中。

else{
    document.querySelector('#tasks').innerHTML += `
        <div class="task">
            <span id="taskname">
                ${document.querySelector('#newtask input').value}
            </span>
            <button class="delete">
                <i class="far fa-trash-alt"></i>
            </button>
        </div>
    `;

最后将删除按钮的点击事件绑定到一个匿名函数上,当点击删除按钮时,它将删除任务列表中的相应任务。这里使用了 querySelectorAll 方法选择所有具有 delete 类名的元素,并使用 for 循环遍历它们,并将每个元素的点击事件绑定到一个匿名函数上。在匿名函数中,this 引用当前的删除按钮,this.parentNode 引用该按钮的父元素,也就是任务列表的 div 元素。remove() 方法用于删除该元素。

相关推荐

python创建文件夹,轻松搞定,喝咖啡去了

最近经常在录视频课程,一个课程下面往往有许多小课,需要分多个文件夹来放视频、PPT和案例,这下可好了,一个一个手工创建,手酸了都做不完。别急,来段PYTHON代码,轻松搞定,喝咖啡去了!import...

如何编写第一个Python程序_pycharm写第一个python程序

一、第一个python程序[掌握]python:python解释器,将python代码解释成计算机认识的语言pycharm:IDE(集成开发环境),写代码的一个软件,集成了写代码,...

Python文件怎么打包为exe程序?_python3.8打包成exe文件

PyInstaller是一个Python应用程序打包工具,它可以将Python程序打包为单个独立可执行文件。要使用PyInstaller打包Python程序,需要在命令行中使用py...

官方的Python环境_python环境版本

Python是一种解释型编程开发语言,根据Python语法编写出来的程序,需要经过Python解释器来进行执行。打开Python官网(https://www.python.org),找到下载页面,选择...

[编程基础] Python配置文件读取库ConfigParser总结

PythonConfigParser教程显示了如何使用ConfigParser在Python中使用配置文件。文章目录1介绍1.1PythonConfigParser读取文件1.2Python...

Python打包exe软件,用这个库真的很容易

初学Python的人会觉得开发一个exe软件非常复杂,其实不然,从.py到.exe文件的过程很简单。你甚至可以在一天之内用Python开发一个能正常运行的exe软件,因为Python有专门exe打包库...

2025 PyInstaller 打包说明(中文指南),python 打包成exe 都在这里

点赞标记,明天就能用上这几个技巧!linux运维、shell、python、网络爬虫、数据采集等定定做,请私信。。。PyInstaller打包说明(中文指南)下面按准备→基本使用→常用...

Python自动化办公应用学习笔记40—文件路径2

4.特殊路径操作用户主目录·获取当前用户的主目录路径非常常用:frompathlibimportPathhome_dir=Path.home()#返回当前用户主目录的Path对象...

Python内置tempfile模块: 生成临时文件和目录详解

1.引言在Python开发中,临时文件和目录的创建和管理是一个常见的需求。Python提供了内置模块tempfile,用于生成临时文件和目录。本文将详细介绍tempfile模块的使用方法、原理及相关...

python代码实现读取文件并生成韦恩图

00、背景今天战略解码,有同学用韦恩图展示各个产品线的占比,效果不错。韦恩图(Venndiagram),是在集合论数学分支中,在不太严格的意义下用以表示集合的一种图解。它们用于展示在不同的事物群组之...

Python技术解放双手,一键搞定海量文件重命名,一周工作量秒搞定

摘要:想象一下,周五傍晚,办公室的同事们纷纷准备享受周末,而你,面对着堆积如山的文件,需要将它们的文件名从美国日期格式改为欧洲日期格式,这似乎注定了你将与加班为伍。但别担心,Python自动化办公来...

Python路径操作的一些基础方法_python路径文件

带你走进@机器人时代Discover点击上面蓝色文字,关注我们Python自动化操作文件避开不了路径操作方法,今天我们来学习一下路径操作的一些基础。Pathlib库模块提供的路径操作包括路径的...

Python爬取下载m3u8加密视频,原来这么简单

1.前言爬取视频的时候发现,现在的视频都是经过加密(m3u8),不再是mp4或者avi链接直接在网页显示,都是经过加密形成ts文件分段进行播放。今天就教大家如果通过python爬取下载m3u8加密视频...

探秘 shutil:Python 高级文件操作的得力助手

在Python的标准库中,shutil模块犹如一位技艺精湛的工匠,为我们处理文件和目录提供了一系列高级操作功能。无论是文件的复制、移动、删除,还是归档与解压缩,shutil都能以简洁高效的方式完成...

怎么把 Python + Flet 开发的程序,打包为 exe ?这个方法很简单!

前面用Python+Flet开发的“我的计算器v3”,怎么打包为exe文件呢?这样才能分发给他人,直接“双击”运行使用啊!今天我给大家分享一个简单的、可用的,把Flet开发的程序打包为...