[Vue.js] transitionμ μ΄μ©ν΄μ μ λλ©μ΄μ μλ λνλ΄κΈ°.
μ°Έκ³ λ‘ Vue.jsμ λν΄μ μ λͺ¨λ¦ λλ€.
μ무거λ λ§ ν΄λ³΄λ μ€μ΄κ³ μ³μ μ 보μΈμ§ μ λ λͺ¨λ¦ λλ€!
λ²νΌμ λ§μ°μ€λ₯Ό λλ©΄
μμ΄ μ²μ²ν λ°μ λλλ‘
λ§λ€μ΄λ³Ό κ²μ΄λ€.
1. μ€ννλ©΄
λμμ μλΉμ€κ° μ’ λ£λμ΄ ν΄λΉ μ½ν μΈ λ₯Ό μ¬μν μ μμ΅λλ€.
2. MainView.vue
λ²νΌμ μ€μ νκ³ btnμ΄λ ν΄λμ€λ₯Ό λΆμ¬μ€¬λ€.
<template>
<div class="main-view">
<button class="btn" > Click </button>
</div>
</template>
μ 체 νλ©΄ μ€μ μ΄λ€.
<style scoped>μ μ½λ
.main-view {
position: relative;
width: 100vw;
height: 100vh;
background-color: lemonchiffon;
}
λ²νΌμ΄ μ€μμ μμΉνλλ‘ λ§λ€μλ€. ν μ€νΈ 컬λ¬λ νμ΄νΈμ΄κ³ , λ°°κ²½μμ λΈλμ΄λ€.
<style scoped>μ μ½λ
.btn{
position: absolute;
width: 80px;
height: 50px;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 20px;
color: white;
background-color: black;
cursor: pointer;
transition: background-color 0.8s ease, border 0.8s ease;
}
배경컬λ¬λ μ§λΆνμμΌλ‘ λ³κ²½νκ³ , ν λ리λ borderλ₯Ό μ΄μ©νμ¬ λ³κ²½λλλ‘ ν κ²μ΄λ€. μ΄λ λ§μ°μ€ 컀μλ₯Ό λλ©΄ μμμ΄ λ³νλλ‘ λ§λ€μ΄μ£Όλ μ€νμΌμ :hoverλΌκ³ νλ€. :hoverμ transitionμ λ£μ΄ μμ λ³κ²½μ μλλ₯Ό μ‘°μ ν΄ λ³Ό κ²μ΄λ€. transitionμ μ λλ©μ΄μ μλλ₯Ό μ‘°μ νλ λ°©λ²μ μ 곡νλ€.
transition: [μμ±] [μ§μμκ°] [νμ΄λ° ν¨μ] [μ§μ° μκ°];μΌλ‘ μ½λλ₯Ό μ λλ°, μμ±μΌλ‘ λλΉλ λμ΄κ° λ€μ΄κ° μλ μκ³ ν λλ¦¬λ§ λ€μ΄κ° μλ μκ³ λ€μνκ² μ¬μ©κ°λ₯νλ€. νμ¬ μ½λμμλ 배경컬λ¬(background-color)μ ν λ리(border)λ₯Ό μμ±μΌλ‘ μ§μ νλ€. μ§μμκ°μ 0.8sλ‘ μ§μ νλ€. νμ΄λ° ν¨μλ μλκ° μ΄λ»κ² λ³νν μ§ κ²°μ νλλ°, 컀μ€ν°λ§μ΄μ§λ κ°λ₯ν΄μ μ΄λ€ κ°μλ 곑μ μ λ°λ₯΄κ² ν μλ μλ€. μ¬κΈ°μλ λ΄λΆμμ μ€μ ν΄ μ£Όλ easeλ‘ μ€μ νλ€. ease λ§κ³ linear, ease-in, ease-outλ μμΌλ νλ²μ© ν΄λ³΄λ©΄ μ’μ λ―νλ€. νμ¬ μ½λμμ μ§μ° μκ°μ μ€μ νμ§ μμμ§λ§, μ λλ©μ΄μ μ μΆλ° μκ°μ μ ν μλ μλ€.
μ¬λ¬ μμ±μ μ§μ νκ³ μΆμΌλ©΄ μμ μ½λμ²λΌ ,μ μ°μ΄ μμ±μ μ΄μ΄ μ μΌλ©΄ λλ€.
<style scoped>μ μ½λ
.btn:hover {
background-color: #ed3597;
color: white;
border: 3px solid #ed3597;
cursor: pointer;
}
μλ λ§ν¬μ λ€μ΄κ°λ©΄ μ§μ νμ΄λ°ν¨μλ₯Ό μ€μ νμ λ μ΄λ»κ² λμνλμ§ μμλ₯Ό λ³Ό μ μλ€.
cubic-bezier.com
cubic-bezier.com
μ΄λ μ£Όμν μ μ΄ μλ€. λ μμμ μ΄ν΄λ³΄μ.
λμμ μλΉμ€κ° μ’ λ£λμ΄ ν΄λΉ μ½ν μΈ λ₯Ό μ¬μν μ μμ΅λλ€.
λμμ μλΉμ€κ° μ’ λ£λμ΄ ν΄λΉ μ½ν μΈ λ₯Ό μ¬μν μ μμ΅λλ€.
λ μμμ μ°¨μ΄μ μ λ§μ°μ€κ° λ²νΌμμ λ©μ΄μ§λ©΄μ μκΈ°λ λ³νμ΄λ€. κ·Έ μ΄μ λ transitionμ΄ μ΄λ ν΄λμ€μ λΆμ΄μλμ§μ λ°λΌ λ¬λΌμ§λ€. .btn ν΄λμ€μΈ λ²νΌμ λ§λ ν΄λμ€μ transition μ½λλ₯Ό λ£μ΄λλ©΄ λ§μ°μ€λ₯Ό λ²νΌμμ λΌλ κ°μ μλλ‘ μμμ΄ λμκ°λ€. κ·Έλ°λ° :hoverμ transition μ½λλ₯Ό λ£μ΄λλ©΄ λ§μ°μ€λ₯Ό λ λ μ½λκ° μ μ©λμ§ μλλ€. (μλ°©ν₯ μ μ©μ΄ μ λλ κ²)
:hoverκ° μ»€μλ₯Ό μ¬λ¦¬λ©΄ μ μ©λλ ν΄λμ€λκΉ transition μ½λλ₯Ό hoverμ λ£μ μ μλ€.(λ΄κ° κ·Έλ¬μ..γ γ ) κ·Έλ°λ° :hoverλ μ¬λ Έμ λλ§ μ μ©λκ² νλκΉ, λ°λλ‘ λΌλ©΄? μ μ©μ΄ μλλ κ²μ΄λ€. μλ°©ν₯μΌλ‘ μ μ©νκ³ μΆλ€λ©΄ κΌ transition μ½λλ₯Ό .btn ν΄λμ€μ λ£μ΄μΌ νλ€.
Vue.js
Vue.js - νλ‘κ·ΈλμλΈ μλ°μ€νΈλ¦½νΈ νλ μμν¬
ko.vuejs.org