天天看點

用Vue制作記事本

先放個效果圖吧

用Vue制作記事本

制作記事本一共分為五個部分。

1、第一部分就是添加内容。目的是輸入内容後按下enter能夠在目錄下出現對應的内容,此部分應用v-for,v-model以及v-text完成,html程式如下

<div id="app">
    <input id="text" type="text" v-model="addValue" @keyup.enter="add" placeholder="請輸入内容">
    <ul>
        <li v-for="(item,index) in list" id="List">
            <span id="text2">{{ index+1 }}.{{ item }}</span>
            <span id="x">x</span>
        </li>
    </ul>
</div>
           

js程式如下

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    var app = new Vue({
        el: "#app",
        data: {
            list: ["吃飯"],
            addValue: "睡覺"
        },
        methods: {
            add: function () {
                this.list.push(this.addValue);
            }
        }
    })
</script>
           

首先是給li标簽中添加一個v-for,然後其中的span标簽中的内容應用v-text來書寫,此處是用的內插補點表達式{{ }}。

然後為了同步使用者輸入的内容,此處應用v-model來完成,添加一個add函數,用push便可以做到。

2、第二部分就是删除内容。目錄中的每一條内容後面都有一個"x",點選便可以删除該條内容,此部分應用v-on來完成,html程式如下

js程式如下

remove: function (index) {
    this.list.splice(index, 1);
},
           

v-on可以簡寫為@,綁定一個點選事件,然後此處應用splice來完成這個remove函數。

3、第三部分就是統計。可以看到效果圖左下角有一行字:共計2條筆記。目的為了統計一共有多少條筆記,此部分應用v-text來完成,html程式如下

直接使用list.length便可以知道有多少條筆記了。

4、第四部分就是清空。可以看到效果圖右下角有一個清空鍵,目的是點選該按鈕便可以全部清空,而不用一條條去删除,此部分應用v-on來完成,html程式如下

js程式如下

clear: function () {
    this.list = [];
}
           

首先是綁定一個點選事件,然後定義一個clear函數,清空的話就是令list裡面變為空就可以了。

5、第五部分就是隐藏。當每一條筆記都删除完後,最下面的“共計x條筆記”和“清空”這一行字可以隐藏起來,此部分應用v-show來完成,html程式如下

<span v-show="list.length!=0" id="note">共計<strong>{{ list.length }}</strong>條筆記</span>
<span v-show="list.length!=0" @click="clear" id="Clear">清空</span>
           

當list中的長度不為0,即list中有内容時,這一行字将會顯示,否則就不顯示。

Vue的部分做完了,剩下的就是css調樣式了,此處就直接給程式了

#app {
    width: 350px;
    border: 1px solid #ccc;
    background-color: #f5f5f5;
    box-shadow: 10px 10px 5px gray;
}

#text {
    margin-top: 10px;
    margin-left: 40px;
    width: 300px;
    height: 50px;
    font-size: 30px;
    background-color: #f5f5f5;
    border: 0px;
    border-bottom: 1px solid #ccc;
}

#List {
    width: 300px;
    height: 30px;
    font-size: 16px;
    margin-top: 10px;
    border-bottom: 1px solid #ccc;
    list-style: none;
    position: relative;
}

#text2 {
    display: inline-block;
    width: 270px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

#x {
    position: absolute;
    right: 10px;
    cursor: pointer;
}

#note {
    margin-left: 40px;
}

#Clear {
    margin-left: 175px;
    cursor: pointer;
}