-
vue transition 테스트 코드프로그래밍/개발메모 2021. 1. 28. 12:19728x90반응형
참고: leave 되는 블럭은 화면이 멈춘 상태로 사라진다.
참고: :name 으로 transition 의 이름을 변경할 수 있다.
<template> <div> <div class="flex bg-blue-100 border-t border-b border-blue-500 text-blue-700 px-4 py-3"> <!-- <p class="text-sm">Some additional text to explain said message.</p> --> <button class="mybtn" @click="onPage(1)">page 1</button> <button class="mybtn" @click="onPage(2)">page 2</button> </div> <div class="relative"> <transition :name="trans_name"> <div v-if="page==1" class="absolute bg-red-600 h-80 w-full" > <div class="text-white text-4xl">{{ count }} </div> </div> </transition> <transition :name="trans_name"> <div v-if="page==2" class="absolute bg-blue-600 h-80 w-full" > <div class="text-white text-4xl">{{ count }} </div> </div> </transition> </div> </div> </template> <script> // import HelloWorld from './components/HelloWorld.vue' export default { name: 'App', components: { // HelloWorld }, data() { return { count: 0, page: 1, trans_name: 'slide-fade', } }, mounted() { setInterval(() => { this.count++; }, 200); }, methods: { onPage(p) { this.page = p; if(p == 1) { this.trans_name = 'slide-fade' } else { this.trans_name = 'slide-fade-b' } } } } </script> <style> #app { font-family: Avenir, Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; /* text-align: center; */ /* color: #2c3e50; */ /* margin-top: 60px; */ } .slide-fade-enter-active { transition: all 5s ease; } .slide-fade-leave-active { transition: all 5s ease; } .slide-fade-enter-from { transform: translateX(-100%); /* opacity: 0; */ } .slide-fade-leave-to { transform: translateX(100%); /* opacity: 0; */ } .slide-fade-b-enter-active { transition: all 5s ease; } .slide-fade-b-leave-active { transition: all 5s ease; } .slide-fade-b-enter-from { transform: translateX(100%); } .slide-fade-b-leave-to { transform: translateX(-100%); } </style>반응형