Vue todos代办事项功能

这篇博客详细介绍了如何使用Vue.js实现todos待办事项的功能,包括创建工程和组件、铺设待办任务、添加任务、删除任务、底部统计、数据切换、清空已完成任务以及数据缓存。通过讲解各个步骤,涵盖了Vue的基础语法、组件化开发、事件处理、数据绑定等技术点。
摘要由CSDN通过智能技术生成

今天做的笔记是todos 待办事项项目  

相信大家学完vue基础后,迫不及待想实现一些功能.所以这里我会用到Vue基础语法 和一些js的知识来互相结合运用

可能写的笔记不太好  大家耐心观看,有意见可以在评论区留言.我不会分享源码哦,大家想要源码还是自己看一遍敲出来最好的.

自行创建目录下的子组件 和样式css

todos-创建工程和组件

目录情况如下

 

 base.css内容如下

hr {
	margin: 20px 0;
	border: 0;
	border-top: 1px dashed #c5c5c5;
	border-bottom: 1px dashed #f7f7f7;
}

.learn a {
	font-weight: normal;
	text-decoration: none;
	color: #b83f45;
}

.learn a:hover {
	text-decoration: underline;
	color: #787e7e;
}

.learn h3,
.learn h4,
.learn h5 {
	margin: 10px 0;
	font-weight: 500;
	line-height: 1.2;
	color: #000;
}

.learn h3 {
	font-size: 24px;
}

.learn h4 {
	font-size: 18px;
}

.learn h5 {
	margin-bottom: 0;
	font-size: 14px;
}

.learn ul {
	padding: 0;
	margin: 0 0 30px 25px;
}

.learn li {
	line-height: 20px;
}

.learn p {
	font-size: 15px;
	font-weight: 300;
	line-height: 1.3;
	margin-top: 0;
	margin-bottom: 0;
}

#issue-count {
	display: none;
}

.quote {
	border: none;
	margin: 20px 0 60px 0;
}

.quote p {
	font-style: italic;
}

.quote p:before {
	content: '“';
	font-size: 50px;
	opacity: .15;
	position: absolute;
	top: -20px;
	left: 3px;
}

.quote p:after {
	content: '”';
	font-size: 50px;
	opacity: .15;
	position: absolute;
	bottom: -42px;
	right: 3px;
}

.quote footer {
	position: absolute;
	bottom: -40px;
	right: 0;
}

.quote footer img {
	border-radius: 3px;
}

.quote footer a {
	margin-left: 5px;
	vertical-align: middle;
}

.speech-bubble {
	position: relative;
	padding: 10px;
	background: rgba(0, 0, 0, .04);
	border-radius: 5px;
}

.speech-bubble:after {
	content: '';
	position: absolute;
	top: 100%;
	right: 30px;
	border: 13px solid transparent;
	border-top-color: rgba(0, 0, 0, .04);
}

.learn-bar > .learn {
	position: absolute;
	width: 272px;
	top: 8px;
	left: -300px;
	padding: 10px;
	border-radius: 5px;
	background-color: rgba(255, 255, 255, .6);
	transition-property: left;
	transition-duration: 500ms;
}

@media (min-width: 899px) {
	.learn-bar {
		width: auto;
		padding-left: 300px;
	}

	.learn-bar > .learn {
		left: 8px;
	}
}

index.css样式如下

html,
body {
	margin: 0;
	padding: 0;
}

button {
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	font-size: 100%;
	vertical-align: baseline;
	font-family: inherit;
	font-weight: inherit;
	color: inherit;
	-webkit-appearance: none;
	appearance: none;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

body {
	font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif;
	line-height: 1.4em;
	background: #f5f5f5;
	color: #111111;
	min-width: 230px;
	max-width: 550px;
	margin: 0 auto;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	font-weight: 300;
}

:focus {
	outline: 0;
}

.hidden {
	display: none;
}

.todoapp {
	background: #fff;
	margin: 130px 0 40px 0;
	position: relative;
	box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2),
	            0 25px 50px 0 rgba(0, 0, 0, 0.1);
}

.todoapp input::-webkit-input-placeholder {
	font-style: italic;
	font-weight: 300;
	color: rgba(0, 0, 0, 0.4);
}

.todoapp input::-moz-placeholder {
	font-style: italic;
	font-weight: 300;
	color: rgba(0, 0, 0, 0.4);
}

.todoapp input::input-placeholder {
	font-style: italic;
	font-weight: 300;
	color: rgba(0, 0, 0, 0.4);
}

.todoapp h1 {
	position: absolute;
	top: -140px;
	width: 100%;
	font-size: 80px;
	font-weight: 200;
	text-align: center;
	color: #b83f45;
	-webkit-text-rendering: optimizeLegibility;
	-moz-text-rendering: optimizeLegibility;
	text-rendering: optimizeLegibility;
}

.new-todo,
.edit {
	position: relative;
	margin: 0;
	width: 100%;
	font-size: 24px;
	font-family: inherit;
	font-weight: inherit;
	line-height: 1.4em;
	color: inherit;
	padding: 6px;
	border: 1px solid #999;
	box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2);
	box-sizing: border-box;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

.new-todo {
	padding: 16px 16px 16px 60px;
	border: none;
	background: rgba(0, 0, 0, 0.003);
	box-shadow: inset 0 -2px 1px rgba(0,0,0,0.03);
}

.main {
	position: relative;
	z-index: 2;
	border-top: 1px solid #e6e6e6;
}

.toggle-all {
	width: 1px;
	height: 1px;
	border: none; /* Mobile Safari */
	opacity: 0;
	position: absolute;
	right: 100%;
	bottom: 100%;
}

.toggle-all + label {
	width: 60px;
	height: 34px;
	font-size: 0;
	position: absolute;
	top: 12px;
	left: -13px;
	-webkit-transform: rotate(90deg);
	transform: rotate(90deg);
	z-index: 9999
}

.toggle-all + label:before {
	content: '❯';
	font-size: 22px;
	color: #e6e6e6;
	padding: 10px 27px 10px 27px;
}

.toggle-all:checked + label:before {
	color: #737373;
}

.todo-list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.todo-list li {
	position: relative;
	font-size: 24px;
	border-bottom: 1px solid #ededed;
}

.todo-list li:last-child {
	border-bottom: none;
}

.todo-list li.editing {
	border-bottom: none;
	padding: 0;
}

.todo-list li.edi
Vue实现Todolist-代办事项
Black_snow_ji的博客
03-19 799
首先准备思路 1.先引入Vue.js框架 2.可以自己写一个简单布局或者可以引入其他插件 3.具体请看代码有注释 这里是引用 sui 的插件和css样式 <div id="app"> <!--header start--> <header class="bar bar-nav"> <a class...
vue.js添加待办事项样式特效
07-24
在“vue.js添加待办事项样式特效”这个项目中,我们将深入探讨如何利用Vue.js实现一个具有动态添加、删除功能待办事项列表,并且带有吸引人的视觉效果。 首先,我们需要在HTML文件中设置基础结构,包含一个输入框...
Todo-Vuejs:使用vuejs进行简单的待办事项应用
05-12
待办事项 使用创建,读取,删除和更新功能在构建Todo应用程序 注意:如果您使用的是vscode,则可以安装liveserver扩展来运行该应用程序 执照 麻省理工学院 作者 杰米·安德烈斯·贝莱斯·罗哈斯
待办事项小项目-vue-js
02-20
vue-todos是 todomvc vue模块的升级版本,界面简约,功能丰富,知道点全面,能帮您快速上手vuejs.喜欢的请点心,关注,star ,fork,这些是我坚持下去的动力!!
Vue 项目实战2-待办事项应用
最新发布
2301_81807150的博客
08-25 381
data: {tasks: [],},计算属性methods: {// 添加新任务},// 删除任务},// 切换任务状态},// 显示所有任务},// 显示待办任务},// 显示已办任务},
Vue待办事项
weixin_63147435的博客
05-06 1052
Vue简单制作待办事项(超详细)
Vue实例待办事项
weixin_64925940的博客
05-16 3034
vue实现待办事项(技术: vue-cli,bulma,vuex)
vue实现ToDoList待办事项/清单
努力变好
10-30 5479
1、这个功能运用的知识点比较多,computed计算,watch监听,directives自定义指令和methods定义事件,还有一些属性绑定,列表渲染,表单绑定指令,按键修饰符,表单修饰符等... 2、部分知识点 3、效果展示 功能说明: 1.在头部输入框内输入内容按回车键即可待办事项 2.单击待办项的前面选择框可实现未完成或已完成切换 3.双击待办内容可以修改里面的内容,修改完成后点击空白处或enter键都可实现修改,如果不想修改按Esc键可恢复初始内容。 4.单击待办
经典Vue待办事项
wangheng_hd的博客
12-13 857
经典代办事项
vue待办事件
weixin_48047636的博客
05-23 352
<template> <div> <!-- 点击确定添加到数组元素 --> <!-- v-model双向绑定 --> <!-- 当按键抬起的时候触碰点击事件 语法keyup.enter--> <input @keyup.enter="some.push(kw);kw=''" type="text" placeholder="请输入待办事项" v-model="kw"&gt
vue todolist待办事项完整
aifan2109的博客
11-23 353
1 <template> 2 3 4 <div id="app"> 5 6 <input type="text" v-model='todo' @keydown="doAdd($event)" /> 7 8 9 <br> 10 ...
to-do-list-vue:待办事项清单-vue
03-06
待办事项清单 待办事项清单-vue
vue-todo:一个简单的待办事项列表应用程序,用于学习Vue.js
04-18
待办事项清单 项目设置 npm install 编译和热重装以进行开发 npm run serve 编译并最小化生产 npm run build 整理和修复文件 npm run lint 自定义配置 请参阅。
vue实现待办事件列表
04-16
创建一个待办事件列表实现待办事件的增删改以及选中功能
todo.io:vue.js上的待办事项列表
03-19
todo.io vue.js上的待办事项列表
Vue.js待办事项清单代码.rar
04-13
本压缩包"Vue.js待办事项清单代码.rar"提供了一个基础的Vue.js应用示例,用于实现一个简单的待办事项管理功能。 在Vue.js中,创建一个待办事项清单应用主要涉及以下几个关键知识点: 1. **Vue实例**:Vue应用的...
Vue.js待办事项清单代码
05-01
本项目“Vue.js待办事项清单代码”是一个使用Vue.js 2.6.11版本构建的基础应用实例,主要展示了如何在实际项目中实现动态添加和删除待办事项功能。 首先,我们要了解Vue.js的核心概念。Vue.js通过声明式的数据...
Vue简明实用教程(09)——Vue综合练习(待办事项)
谷哥的小弟
11-16 554
关于Vue的综合练习小项目之待办事项
使用vue做一个待办事项案例
qq_61342324的博客
10-17 879
待办事项”常用语题型某人还需要完成哪些事项,“待办”的意思是等待办理,“待办事项”意思是等待办理的事项,主要作用是提醒,常用在人们的日程生活中、学习和工作中。该对象的属性: 内容(title), 完成状态(checked), 编号(id)将文本框中输入的待办事项内容转换为一项待办事项对象数据。待办事项:在未来一段时间内需要去做的。在添加的逻辑中,需要获得到文本框中的输入值。每一项待办事项使用对象结构来保存,利用数组结构来保存所有待办事项.然后添加到所有待办事项数组中保存。在文本框中输入新待办事项内容。
vue2待办事项项目实例
11-07
这是一个使用mui+mint+vue2.x+vue-router+vuex+webpack制作的待办事项项目实例,样式使用vue移动端mint ui框架,原生手机能力偏重于mui框架。该项目实现了以下功能: ①勾选按钮可以选择是否已完成; ②若已完成(被勾选),则字体变暗和被划去;若未完成(没有被勾选),则保持不变; ③每条待办事项可自由选择是否删除; ④可自由添加事务进入待办事项中,回车键效果一样; ⑤有数字提示总事项和未完成事项。 <<代码示例>> ```html <template> <div class="todo"> <div class="header"> <h1>待办事项</h1> <div class="add"> <input type="text" placeholder="添加待办事项" v-model="newTodo" @keyup.enter="addTodo"> </div> </div> <div class="content"> <ul> <li v-for="(todo, index) in todos" :key="index"> <div class="checkbox"> <input type="checkbox" v-model="todo.done" @change="updateTodo"> </div> <div class="text" :class="{done: todo.done}"> {{ todo.text }} </div> <div class="delete" @click="deleteTodo"> <i class="iconfont icon-delete"></i> </div> </li> </ul> </div> <div class="footer"> <div class="total"> 总事项:{{ todos.length }} </div> <div class="undone"> 未完成:{{ undone }} </div> </div> </div> </template> <script> export default { data() { return { newTodo: '', todos: [ { text: '学习Vue', done: false }, { text: '学习Vuex', done: false }, { text: '学习Vue Router', done: false } ] } }, computed: { undone() { return this.todos.filter(todo => !todo.done).length } }, methods: { addTodo() { if (this.newTodo.trim() === '') return this.todos.push({ text: this.newTodo, done: false }) this.newTodo = '' }, updateTodo() { localStorage.setItem('todos', JSON.stringify(this.todos)) }, deleteTodo() { this.todos.splice(index, 1) } } } </script> <style scoped> .todo { .header { display: flex; justify-content: space-between; align-items: center; padding: 10px; background-color: #42b983; color: #fff; h1 { font-size: 20px; font-weight: normal; margin: 0; } .add { flex: 1; margin-left: 10px; input { width: 100%; padding: 5px; border: none; border-radius: 5px; outline: none; font-size: 16px; } } } .content { ul { list-style: none; margin: 0; padding: 0; li { display: flex; align-items: center; padding: 10px; border-bottom: 1px solid #eee; .checkbox { margin-right: 10px; input { width: 20px; height: 20px; } } .text { flex: 1; font-size: 16px; &.done { color: #999; text-decoration: line-through; } } .delete { i { font-size: 20px; color: #999; } } } } } .footer { display: flex; justify-content: space-between; align-items: center; padding: 10px; background-color: #eee; .total, .undone { font-size: 16px; } } } </style> ```
写文章

热门文章

  • ElementUI的简单使用方法讲解 13219
  • get请求图片出现403 防盗链解决方式 no-referrer 10380
  • 处理不同的请求--设置content-type 6871
  • 前端入职第一天该做什么? 5875
  • element-ui的表单验证及自定义验证规则 4162

分类专栏

  • html 3篇
  • JavaScript 19篇
  • vue 26篇
  • SQL 6篇
  • 前端工作流程 4篇
  • vuex 4篇
  • eslint 1篇
  • vscode 3篇
  • axios 2篇
  • Css 6篇
  • Npm 9篇
  • vant移动端组件 2篇
  • element-ui 2篇
  • todos项目 2篇
  • webpack 2篇
  • node.js 19篇

最新评论

  • Vue todos代办事项功能

    偏爱: 阔以教教我吗

  • 3个步骤就让一个web服务器建立起来(web服务器简单写法)

    su9855: 对我帮助很大,谢谢

  • 前端配置环境

    盈扑欣朔曼: 唉,安装nvm失败了,搞得要重装系统,赔了夫人又折兵

  • 非脚手架vue兼容IE和360兼容模式方法

    一个正在努力的小白码农: 没有,行不通

  • 非脚手架vue兼容IE和360兼容模式方法

    周一见~: +1 同问,后来你解决了没

大家在看

  • Java双亲委派机制讲解和常见问题解决案例示范 579
  • 游戏逆向基础-跳出游戏线程发包
  • 代码模板之-C语言如何优雅的定义事件和字符串解析?(index < ARRAY_SIZE(str_event) ? str_event[index] : “unknown“) 161
  • Linux 目录结构和重要文件路径详细说明 601
  • ​‌‌C++语言的基础知识点​ 109

最新文章

  • 获取url内的参数数据
  • 非脚手架vue兼容IE和360兼容模式方法
  • 知识点----为数组对象每一个对象添加新的键值对
2022年10篇
2021年86篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳坪山网站建设公司巩义外贸网站优化哪家专业网站的优化找选火11星兰州网站权重优化什么意思海林商城网站优化北辰网站关键词优化公司上海质量网站优化软件是真的吗顺义网站优化建设价格宁乡百度网站优化十堰市网站关键词优化优势上海官网网站优化管城回族区信息化网站搭建优化成都规模大的传统行业网站优化闵行区公司网站优化定制网站关键词排名优化哪个品牌好铜陵海外网站优化菏泽好的电商网站优化咸宁工厂网站优化公司排名外贸网站谷歌优化服务商苏州优化网站排名壹起航网站优化问题乐从网站优化优势云南靠谱的网站优化泰州网站维护优化威海市网站优化制作海南网站的优化澳门网站优化公司深圳公司的网站优化如何做网站优化效果好吗怎样才能优化好一个网站网站优化怎样做外链香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化