【Vue】實現打沙袋效果

效果預覽:https://sevlt.github.io/punching-bag/index.html

Html 代碼:

<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <link rel="stylesheet" href="./style.css" />
        <script src="./vue.js"></script>
        <title>Punching Bag</title>
    </head>
    <body>
        <div id="app">
            <div id="bag" v-bind:class="{burst:ended}"></div>
            <div id="bagHealthBorder">
                <div id="bagHealth" v-bind:style="{width:health+'%'}"></div>
            </div>
            <div id="controls">
                <button v-on:click="punch" v-bind:disabled="ended">Punch</button>
                <button v-on:click="restart">Restart</button>
            </div>
        </div>
        <script src="app.js"></script>
    </body>
</html>

CSS 代碼:

#bag {
    width: 200px;
    height: 500px;
    margin: 20px auto;
    background-image: url(./img/bag.png);
}
#bag.burst {
    background-image: url(./img/bag-burst.png);
}
#bagHealthBorder {
    width: 200px;
    height: 20px;
    border: 2px solid black;
    margin: 20px auto;
}
#bagHealth {
    background-color: #cb0025;
    height: 20px;
}
#controls {
    width: 120px;
    margin: 20px auto;
}

JavaScript 代碼:

new Vue({
    el: '#app',
    data: {
        health: 100,
        ended: false,
    },
    methods: {
        punch: function () {
            this.health -= 10
            if (this.health <= 0) {
                this.ended = true
            }
        },
        restart: function () {
            this.health = 100
            this.ended = false
        },
    },
})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章