์ฐธ๊ณ ๋ก 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