Vue.js实现备忘录功能
作者:互联网
效果展示:
html代码:
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
<!DOCTYPE html>
< html >
< head >
< meta charset = "utf-8" >
<!-- 移动设备设置 -->
< meta name = "viewport" content = "width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" >
< title >记事本</ title >
< link rel = "stylesheet" type = "text/css" href = "css/noteUI.css" >
<!-- vue核心框架 -->
< script src = "vue/vue.js" type = "text/javascript" charset = "UTF-8" ></ script >
< script src = "vue/vue-resource.min.js" type = "text/javascript" charset = "UTF-8" ></ script >
</ head >
< body >
< div id = "app" >
<!-- 一般用于头部 -->
< header >
< h1 >备忘录< span class = "right" >{{now}}</ span ></ h1 >
</ header >
< section >
<!-- 多行文本 -->
<!-- 视图传数据 -->
<!-- v-model="diary"双向数据绑定 -->
< textarea v-model = "diary" style = "width: 100%;height: 200px;" placeholder = "写日记是一个好习惯" >
</ textarea >
<!-- @click='finished'绑定methods属性中的方法 -->
< button @ click = "finished" class = "finish" >完成</ button >
</ section >
< ul >
<!-- 循环遍历data中的noteooks属性B,每次循环都赋值给nb -->
<!-- v-for="(数组值,数组下标) in noteBooks"-->
< li v-for = "(nb,i) in noteBooks" >
<!--nb.txt类似对象访问-->
<!-- v-html="nb.txt"绑定html代码 -->
< p v-html = "nb.txt" >写日记是一个好习惯</ p >
< div class = "btn_ground" >
< button @ click = "del" type = "button" class = "del left" >删除</ button >
<!-- v-text="nb.time" 绑定文本等价于 {{nb.time}}-->
< span class = "time" v-text = "nb.time" ></ span >
< button @ click = "upDate(i)" type = "button" class = "update right" >修改</ button >
</ div >
</ li >
</ ul >
</ div >
< footer >
版权所有 zk
</ footer >
< script src = "noteBook.js" type = "text/javascript" charset = "UTF-8" ></ script >
</ body >
</ html >
|
CSS代码:
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
*{
margin : 0 ;
padding : 0 ;
}
header,#app,footer{
margin : 0 8px ;
}
header h 1 {
color : #FF4500 ;
font-weight : normal ;
font-size : 24px ;
padding-top : 10px ;
padding-bottom : 4px ;
border-bottom : 1px solid #ccc ;
margin-bottom : 4px ;
}
#app textarea{
width : 100% ;
height : 200px ;
border : none ;
border-bottom : 1px solid #ccc ;
padding : 8px 4px ;
}
button{
padding : 4px ;
background-color : #fff ;
border : 1px solid #ccc ;
border-radius: 4px ;
}
/* position: relative;没有脱离正常流 */
/* relitive相对于自己在流中的元素定位 */
/* relative一般用于位置微调,或者让absolute参考自己定位 */
#app section{
position : relative ;
}
.finish{
position : absolute ;
background-color : limegreen;
bottom : 8px ;
right : 4px ;
}
#app ul{
margin-top : 8px ;
}
#app li{
border-bottom : 1px solid #CCCCCC ;
margin-bottom : 8px ;
}
. left {
float : left ;
}
. right {
float : right ;
}
/* 组合选择器 */
header span. right {
font-size : 14px ;
padding-top : 13px ;
}
.btn_ground{
height : 30px ;
margin-top : 4px ;
}
.del{
background-color : orangered;
color : #FFFFFF ;
}
.update{
background-color : royalblue;
color : #FFFFFF ;
}
footer{
color : #999 ;
text-align : center ;
font-size : 12px ;
}
|
js代码:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
function getNowString(){
var now= new Date()
var arr=[ '日' , '一' , '二' , '三' , '四' , '五' , '六' ]
return now.toLocaleDateString()
+ '星期'
+arr[now.getDay()]
}
var App = new Vue({
el: '#app' ,
data:{
now:getNowString(),
noteBooks:[
{
time: '2019/6/17 星期一' ,
txt: '今天天气不好'
},{
time: '2019/6/18 星期二' ,
txt: '今天学习<i style="color:red">Adidas'
}
],
diary: '' ,
index: '-1'
},
methods:{
finished: function (){
//!App.diary是考虑App.diary=null的情况
if (!App.diary||0==App.diary.length) return
if (-1==App.index){
//存入noteBooks中
//unshift插入到数组首位
App.noteBooks.unshift({
time:App.now,
txt:App.diary
})
} else {
//修改
App.noteBooks[App.index]={
time:App.now,
txt:App.diary
}
App.index=-1
}
App.diary = ''
App.now=getNowString()
},
del: function (i){
// 删除 splice(起始下标,删除个数)
App.noteBooks.splice(i,1)
},
upDate: function (i){
var nb=App.noteBooks[i]
App.diary=nb.txt
App.now = nb.time
//App.index 为-1表示新增,其他就是修改
App.index=i
}
}
})
|
标签:Vue,color,App,noteBooks,js,备忘录,diary,now,button 来源: https://www.cnblogs.com/xingwxzti/p/11088022.html