国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

用Vue做一個待辦事項

這篇具有很好參考價值的文章主要介紹了用Vue做一個待辦事項。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

????????這個待辦事項有以下功能:增刪查,既新增待辦事項,刪除待辦事項,查看全部,未完成,完成待辦事項,當(dāng)鼠標(biāo)移動到待辦事項上時會顯示刪除按鈕

? ? ? ? 分為四個部分來實現(xiàn):ToDoHeader.vue、ToDoMain.vue、ToDoFooter.vue、ToDoList.vue

ToDoHeader.vue

頭部部分

 <template>
 	<div>
 		<div class="header">
 			<p class="title">待辦事項</p>
 			<input class="new-todo" type="text" placeholder="請?zhí)顚懭蝿?wù)" v-model.trim="name" @keyup.enter="enterName" />
 		</div>
 	</div>
 </template>
 <script setup>
 	import {
 		ref
 	} from 'vue'
 	const name = ref('')
 	const emit = defineEmits(['addTodo'])
 	const enterName = () => {
		// 觸發(fā)自定義事件,為空時彈出警示框
		if(name.value===""){
			alert("任務(wù)名稱不能為空")
			return
		}
 		emit('addTodo', name.value)
 		name.value = ''
 	}
	
 </script>

 <style>
	 .title{
		 font-size: 20px;
		 color: red;
		 height: 40px;
		 width: 86.5%;
		margin: 10px 40px 0 40px;
		 padding-top: 10px;
		 text-align: center;
		 border: 1px solid #ccc;
	 }
	 .new-todo{
		 height: 40px;
		 width: 80%;
		 margin: 5px 40px 0 40px;
		 padding: 4px 0 0 65px;
		 border: 1px solid #ccc;
	 }
 </style>

ToDoMain.vue

列表總體樣式和刪除樣式

<template>
	<div class="main">
		<ul class="todo-list">
			<li v-for="item in list" :key="item.id" :class="{ completed: item.done }">
				<div class="view">
					<input class="toggle" type="checkbox" v-model="item.done" />
					<label>{{ item.name }}</label>
					<button class="destroy" @click="delTodo(item.id)"><div class="overlay">x</div></button>
				</div>
			</li>
		</ul>
	</div>
</template>

<script setup>
	//聲明props
	const props = defineProps(['list'])
	//聲明自定義事件
	const emit = defineEmits(['delTodo'])
	const delTodo = id => {
		id && emit('delToDo', id) // 觸發(fā)事件
	}
</script>

<style>
	.view{
		position: relative;
		height: 40px;
		width: 800px;
		margin-left: 20px;
		padding-top: 15px;
		border-bottom: 1px solid #ccc;
	}
	li{
		margin-left: 20px;
	}
	label{
		position: absolute;
		left: 70px;
		top: 23px;
	}
	
	.destroy{
		float: right;
		border: none;
		background-color: white;
	}
	 .overlay{
		 position: absolute;
		 top: 26px;
			 font-size: 40px;
		     color: black;
		     /* 字體居中 */
		     transform: translate(-50%,-50%);
		     font-size: large;
		     /* 懸停前完全透明 */
		     opacity: 0;
		     transition: 0.3s ease-in-out; 
		 }
		  
		 .view:hover .overlay{
		     transition: 0.3s ease-in-out;
		     /* 懸停時完全不透明 */
		     opacity: 1;
		 }
		 
		 input[type="checkbox"] {
		 		appearance: none;
		 		/*取消默認(rèn)的復(fù)選框樣式*/
		 		width: 30px;
		 		/*設(shè)置方形寬度為20px*/
		 		height: 30px;
		 		/*設(shè)置方形高度為20px*/
		 		border: 1px solid #000;
		 		/*設(shè)置邊框樣式*/
		 		border-radius: 50%;
		 		/*將方形的邊框改為圓形*/
		 	}
		 
		 	input[type="checkbox"]:checked {
		 		&:before {
		 			content: '\2713';
		 			/*添加一個對勾,默認(rèn)顏色是黑色*/
		 			color: greenyellow;
		 			/*將對勾顏色改為白色*/
		 			font-size: 20px;
		 			margin-left: 5px;
		 			/*將對勾左邊距改為4px,讓它看著像居中*/
		 		}
		 	}
</style>

ToDoList.vue

列表部分

 <template>
 	<ToDoHeader @addTodo="addTodo"></ToDoHeader>
 	<ToDoMain :list="showList" @delToDo="delToDo"></ToDoMain>
 	<ToDoFooter :lastLength="lastLength" @updateStatus="updateStatus"></ToDoFooter>
 </template>
 <script setup>
 	import ToDoHeader from './ToDoHeader.vue'
 	import ToDoMain from './ToDoMain.vue'
 	import ToDoFooter from './ToDoFooter.vue'
 	import {
 		computed,
 		ref
 	} from 'vue'
 	const list = ref([{
 			id: 1,
 			name: '跑步',
 			done: false,
 		},
 		{
 			id: 2,
 			name: '健身',
 			done: true,
 		},
 	])
 	const addTodo = name => {
 		list.value.push({
 			name,
 			done: false,
 			id: ~~(Math.random() * 1000)
 		})
 	}
 	const delToDo = id => {
 		list.value = list.value.filter(item => item.id !== id)
 	}
 	const lastLength = computed(() => {
 		return list.value.filter(item => !item.done).length
 	})
 	const status = ref('all')
 	const showList = computed(() => {
 		if (status.value === 'all') {
 			return list.value
 		}else if (status.value === 'active') {
 			return list.value.filter(item => !item.done)
 		}else if (status.value === 'completed') {
 			return list.value.filter(item => item.done)
 		}
 	})
 	
 	const updateStatus = setStatus => {
 		status.value = setStatus // 將子組件的狀態(tài)賦值給父組件
 	}
 </script>
 <style>
 </style>

ToDoFooter.vue

頁腳部分

<template>
	<div class="footer">
		<span class="todo-count">共<strong>{{ lastLength }}</strong>條未完成任務(wù)</span>
		<ul class="filters">
			<li class="oneli">
				<a @click.prevent="emit('updateStatus', 'all')" :class="{ selected: status === 'all' }"
					href="#/">全部</a>
			</li>
			<li>
				<a @click.prevent="emit('updateStatus', 'active')" :class="{ selected: status === 'active' }"
					href="#/active">未完成</a>
			</li>
			<li>
				<a @click.prevent="emit('updateStatus', 'completed')" :class="{ selected: status === 'completed' }"
					href="#/completed">已完成</a>
			</li>
		</ul>
	</div>
</template>

<script setup>
	const emit = defineEmits(['updateStatus'])
	const props = defineProps(['lastLength', 'status'])
</script>

<style>
	.oneli{
		
		margin-left: 50%;
	}
	.todo-count {
		margin-left: 40px;
		float: left;
	}

	ul {
		margin-left: -25px;
		list-style-type: none;
	}

	li {
		float: left;
		margin-left: 4px;
	}

	a {
		border: 1px solid #d3d3d3;
		/* 清除a標(biāo)簽?zāi)J(rèn)效果 */
		text-decoration: none;
		color: black;
		font-size: 8px;
	}
</style>

最后更改main.js中的代碼

main.js

import { createApp } from 'vue'
import App from './components/ToDoList.vue'

createApp(App).mount('#app')

總體效果:

用Vue做一個待辦事項,vue.js,javascript,前端

新增效果:

用Vue做一個待辦事項,vue.js,javascript,前端

刪除效果:

鼠標(biāo)懸停時會顯示刪除按鈕

用Vue做一個待辦事項,vue.js,javascript,前端

查找效果:

全部效果:

用Vue做一個待辦事項,vue.js,javascript,前端

未完成效果:

用Vue做一個待辦事項,vue.js,javascript,前端

完成效果:

用Vue做一個待辦事項,vue.js,javascript,前端文章來源地址http://www.zghlxwxcb.cn/news/detail-858104.html

到了這里,關(guān)于用Vue做一個待辦事項的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【js&vue】聯(lián)合gtp仿寫一個簡單的vue框架,以此深度學(xué)習(xí)JavaScript

    【js&vue】聯(lián)合gtp仿寫一個簡單的vue框架,以此深度學(xué)習(xí)JavaScript

    lifecycle.js 注解: this.$options.beforeMount.call(this);與 this.$options.beforeMount();有什么區(qū)別: call(this) ?的作用是將當(dāng)前對象( this )作為參數(shù)傳遞給? beforeMount ?方法,使得在? beforeMount ?方法內(nèi)部可以通過? this ?訪問到當(dāng)前對象的上下文 直接調(diào)用了? beforeMount ?方法,沒有指定上下

    2024年02月09日
    瀏覽(37)
  • 【js小案例】視頻倍數(shù)播放、計算機(jī)、待辦事項管理

    【js小案例】視頻倍數(shù)播放、計算機(jī)、待辦事項管理

    視頻倍數(shù)播放示例圖: ?視頻倍數(shù)播放代碼: 計算機(jī)效果圖: ?計算機(jī)代碼: 待辦事項管理效果圖: ?待辦事項管理代碼:

    2024年02月12日
    瀏覽(24)
  • 如何建立一個好的待辦事項系統(tǒng)并提高工作效率

    如果你有一系列的任務(wù)需要完成,你會如何記住它們呢? 最簡單的方法當(dāng)然是將它們記在腦中,但如果任務(wù)的數(shù)量很多,記憶的細(xì)節(jié)難免模糊。紙和筆也是一個不錯的選擇,但紙質(zhì)的任務(wù)清單容易遺失或者損壞。讓應(yīng)用來幫忙當(dāng)然也是個不錯的選擇。不過,現(xiàn)在市面上的任務(wù)

    2024年02月08日
    瀏覽(20)
  • vue-codemirror實現(xiàn)一個前端代碼在線編輯器,可處理 HTML,VUE,JS,CSS代碼在線編輯

    vue-codemirror實現(xiàn)一個前端代碼在線編輯器,可處理 HTML,VUE,JS,CSS代碼在線編輯

    先找個目錄創(chuàng)建一個vue項目 例如 我們想要項目叫 editor 在終端執(zhí)行 2和3其實都可以 但個人建議 最近還是2會更穩(wěn)定一些 在終端執(zhí)行 引入依賴包 然后在項目src目錄下創(chuàng)建 utils 文件夾 里面創(chuàng)建一個setting.js 參考代碼如下 然后 這邊 調(diào)用組件的代碼 因為項目也剛創(chuàng) 我直接寫 s

    2024年02月15日
    瀏覽(32)
  • 前端項目部署自動檢測更新后通知用戶刷新頁面(前端實現(xiàn),技術(shù)框架vue、js、webpack)——方案一:編譯項目時動態(tài)生成一個記錄版本號的文件

    前端項目部署自動檢測更新后通知用戶刷新頁面(前端實現(xiàn),技術(shù)框架vue、js、webpack)——方案一:編譯項目時動態(tài)生成一個記錄版本號的文件

    當(dāng)我們重新部署前端項目的時候,如果用戶一直停留在頁面上并未刷新使用,會存在功能使用差異性的問題,因此,當(dāng)前端部署項目后,需要提醒用戶有去重新加載頁面。 vue、js、webpack 編譯項目時動態(tài)生成一個記錄版本號的文件 輪詢(20s、自己設(shè)定時間)這個文件,判斷版

    2024年02月02日
    瀏覽(57)
  • JavaScript - 判斷當(dāng)前時間是否在指定區(qū)間內(nèi),例如:9:00~12:00(檢查當(dāng)前時間是否處于規(guī)定的兩個時間段范圍內(nèi)),適用于 vue.js / uniapp / 微信小程序等前端項目

    例如,您想知道當(dāng)前時間是否處于 9:00 ~ 12:00 時間區(qū)間內(nèi),然后根據(jù)這個判斷進(jìn)而實現(xiàn)業(yè)務(wù)邏輯。 如下示例所示, 本文提供一個函數(shù),您只需要傳入 2 個時間區(qū)間,便可得出當(dāng)前時間是否在該時間區(qū)間范圍內(nèi): 您可以一鍵復(fù)制,直接粘貼到您的項目中。 您只需要傳入開始時

    2024年02月16日
    瀏覽(50)
  • vue3中Fragment特性的一個bug,需要留意的注意事項

    vue3中Fragment特性的一個bug,需要留意的注意事項

    vue3中的Fragment 模版碎片特性是什么,簡單的理解就是 template模板代碼 不在像vue2中那樣必須在根節(jié)點在包裹一層節(jié)點了。 vue2寫法 vue3寫法 vue3中Fragment特性的一個bug(需要留意的問題) 組件HelloWorld: 組件HelloWorld的使用 同時控制臺waring : 利用開發(fā)者模式看dom結(jié)構(gòu), 發(fā)現(xiàn)v-show的

    2024年01月22日
    瀏覽(21)
  • 手機(jī)待辦事項app哪個好?

    手機(jī)待辦事項app哪個好?

    手機(jī)是日常很多人隨身攜帶的設(shè)備,手機(jī)除了擁有通訊功能外,還能幫助大家高效管理日常工作,借助手機(jī)上的待辦事項提醒APP可以快速地幫助大家規(guī)劃日常事務(wù),提高工作的效率。 過去,我也曾經(jīng)在尋找一款能夠?qū)⒐ぷ魅蝿?wù)清晰羅列的APP時,在通過對多款軟件進(jìn)行對比后,

    2024年02月07日
    瀏覽(23)
  • 前端隨筆:HTML/CSS/JavaScript和Vue

    前端隨筆:HTML/CSS/JavaScript和Vue

    最近因為工作需要,需要接觸一些前端的東西。之前雖然大體上了解過 HTML 、 CSS 和 JavaScript ,也知道 HTML 定義了內(nèi)容、 CSS 定義了樣式、 JavaScript 定義了行為,但是卻沒有詳細(xì)的學(xué)習(xí)過前端三件套的細(xì)節(jié)。而最近的工作中需要使用 Vue ,并且想到未來的工作中使用 Vue 能夠更

    2024年02月16日
    瀏覽(26)
  • JavaScript 框架比較:Angular、React、Vue.js

    在 Web 開發(fā)領(lǐng)域,JavaScript 提供大量技術(shù)??晒┻x擇。其中最典型的三套組合,分別是 MERN、MEAN 和 MEVN。這些首字母相同的選項各自代表不同的技術(shù)加工具組合。為了在這些技術(shù)棧中做出明智選擇,讓我們先從核心組件聊起,再對各自前端框架(React、Angular 和 Vue)進(jìn)行簡化比

    2024年01月20日
    瀏覽(36)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包