VueJs Animation Transition tutorial

    By: Manu
    3 years ago

    Check video Guide for Vue Animations


    VueJs Animation Transition tutorial


    <template>
    
    
        <div class='container wrapper'>
            <form action="">
                <div class="form-group">
                    <input type="text" class="form-control" v-model="name">
                </div>
                <div class="fomr-group">
                    <input type="submit" class="btn btn-primary" v-on:click.prevent="addOnePlayer()">
                </div>
            </form>
            <hr>
            <div class="row" align='center'>
                <ul>
                <transition-group name="appear">
                    
                        <li
                            v-for="(player,index) in players" :key="player"
                            class="list-group-item"
                            v-on:click="removeName(index,$event)"
                        >
                        { player }
                        </li>
                    
                </transition-group>
                </ul>
            </div>
    
    
            <!-- <button @click="display = !display">Toggle</button>
            <hr>
            <transition name="appear">
                <div  v-if="display">
                    <h1 class='btn btn-info'>Some Content</h1>
                </div>
            </transition> -->
        </div>
    
    
    </template>
    
    
    <script>
        export default {
            data(){
               return{
                   name:'',
                   players:['Roger','Steve','Mark'],
                   display:false
               }
            },
            methods:{
                addOnePlayer(){
                    if(!this.players.includes(this.name)){
                        this.players.unshift(this.name);
                    }
                },
                removeName(index,e){
                    e.target.style.position = 'absolute';
                    this.players.splice(index,1);
                }
            },
        }
    </script>
    <style scoped>
        .appear-enter{
            opacity:0;
            color:red;
            transform:translateX(30px);
        }
        .appear-enter-active{
            opacity:1;
            transition: all 0.5s ease;
            color:red;
            animation:slideUp 1s ease-out;
        }
        .appear-enter-to{
            transition: all 0.5s ease;
            color:green;
        }
        .appear-leave{
        }
        .appear-leave-active{
            transition: all 0.5s ease;
            color:grey;
            transform:translateX(30px);
            animation:slideDown 1s ease-out;
        }
        .appear-move{
            transition:trasform 0.5s;
        }
    
    
        .appear-leave-to{
            opacity:0;
            transition: all 0.5s ease;
        }
    
    
    
    
        /* cutom css */
        .wrapper{
            padding-top: 100px;
        }
    </style>