You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Vue는 진입(enter)/진출(leave) 및 목록 전환 처리를 위해 [`<Transition>`](/guide/built-ins/transition.html) 및 [`<TransitionGroup>`](/guide/built-ins/transition-group.html) 컴포넌트를 제공합니다.
11
+
그러나 Vue 앱에서도 웹에서 애니메이션을 사용하는 다른 방법이 많이 있습니다.
12
+
여기에서는 몇 가지 추가적인 기법에 대해 설명합니다.
12
13
13
-
Vue provides the [`<Transition>`](/guide/built-ins/transition.html) and [`<TransitionGroup>`](/guide/built-ins/transition-group.html) components for handling enter / leave and list transitions. However, there are many other ways of using animations on the web, even in a Vue application. Here we will discuss a few additional techniques.
14
+
## 클래스 기반 애니메이션
14
15
15
-
## Class-based Animations
16
-
17
-
For elements that are not entering / leaving the DOM, we can trigger animations by dynamically adding a CSS class:
16
+
DOM에 진입/진출하지 않는 엘리먼트의 경우, CSS 클래스를 동적으로 추가하여 애니메이션을 트리거할 수 있습니다:
18
17
19
18
<divclass="composition-api">
20
19
@@ -54,8 +53,8 @@ export default {
54
53
55
54
```vue-html
56
55
<div :class="{ shake: disabled }">
57
-
<button @click="warnDisabled">Click me</button>
58
-
<span v-if="disabled">This feature is disabled!</span>
56
+
<button @click="warnDisabled">클릭하기</button>
57
+
<span v-if="disabled">이 기능은 비활성화되어 있습니다!</span>
59
58
</div>
60
59
```
61
60
@@ -91,9 +90,10 @@ export default {
91
90
92
91
<DisabledButton />
93
92
94
-
## State-driven Animations
93
+
## 상태 기반 애니메이션
95
94
96
-
Some transition effects can be applied by interpolating values, for instance by binding a style to an element while an interaction occurs. Take this example for instance:
95
+
예를 들어 상호 작용이 발생하는 동안 엘리먼트에 스타일을 바인딩하여 값을 보간하여 일부 트렌지션 효과를 적용할 수 있습니다.
In addition to color, you can also use style bindings to animate transform, width, or height. You can even animate SVG paths using spring physics - after all, they are all attribute data bindings:
147
+
색상 외에도 스타일 바인딩을 사용하여 `transform`, `width` 또는 `height`에 애니메이션을 적용할 수도 있습니다.
148
+
스프링 물리학을 사용하여 SVG `path`에 애니메이션할 수도 있습니다.
149
+
결국 모두 속성 데이터 바인딩입니다:
148
150
149
151
<ElasticHeader />
150
152
151
-
## Animating with Watchers
153
+
## 감시자로 애니메이션 만들기
152
154
153
-
With some creativity, we can use watchers to animate anything based on some numerical state. For example we can animate the number itself:
155
+
약간의 창의성으로 우리는 감시자를 사용하여 수치 상태를 기반으로 무엇이든 애니메이션할 수 있습니다.
156
+
예를 들어 숫자 자체에 애니메이션을 적용할 수 있습니다:
154
157
155
158
<divclass="composition-api">
156
159
157
160
```js
158
161
import { ref, reactive, watch } from'vue'
159
-
importgsapfrom'gsap'
162
+
importgsapfrom'gsap'// 타사 라이브러리
160
163
161
164
constnumber=ref(0)
162
165
consttweened=reactive({
@@ -172,7 +175,7 @@ watch(number, (n) => {
172
175
<divclass="options-api">
173
176
174
177
```js
175
-
importgsapfrom'gsap'
178
+
importgsapfrom'gsap'// 타사 라이브러리
176
179
177
180
exportdefault {
178
181
data() {
@@ -192,19 +195,19 @@ export default {
192
195
</div>
193
196
194
197
```vue-html
195
-
Type a number: <input v-model.number="number" />
198
+
숫자 입력: <input v-model.number="number" />
196
199
<p>{{ tweened.number.toFixed(0) }}</p>
197
200
```
198
201
199
202
<AnimateWatcher />
200
203
201
204
<divclass="composition-api">
202
205
203
-
[Try it in the Playground](https://sfc.vuejs.org/#eyJBcHAudnVlIjoiPHNjcmlwdCBzZXR1cD5cbmltcG9ydCB7IHJlZiwgcmVhY3RpdmUsIHdhdGNoIH0gZnJvbSAndnVlJ1xuaW1wb3J0IGdzYXAgZnJvbSAnZ3NhcCdcblxuY29uc3QgbnVtYmVyID0gcmVmKDApXG5jb25zdCB0d2VlbmVkID0gcmVhY3RpdmUoe1xuICBudW1iZXI6IDBcbn0pXG5cbndhdGNoKFxuICBudW1iZXIsXG4gIChuKSA9PiB7XG4gICAgZ3NhcC50byh0d2VlbmVkLCB7IGR1cmF0aW9uOiAwLjUsIG51bWJlcjogTnVtYmVyKG4pIHx8IDAgfSlcbiAgfVxuKVxuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImRlbW9cIj5cbiAgICBUeXBlIGEgbnVtYmVyOiA8aW5wdXQgdi1tb2RlbC5udW1iZXI9XCJudW1iZXJcIiAvPlxuICAgIDxwIGNsYXNzPVwiYmlnLW51bWJlclwiPnt7IHR3ZWVuZWQubnVtYmVyLnRvRml4ZWQoMCkgfX08L3A+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlPlxuLmJpZy1udW1iZXIge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zaXplOiAyZW07XG59XG48L3N0eWxlPlxuIiwiaW1wb3J0LW1hcC5qc29uIjoie1xuICBcImltcG9ydHNcIjoge1xuICAgIFwiZ3NhcFwiOiBcImh0dHBzOi8vdW5wa2cuY29tL2dzYXA/bW9kdWxlXCIsXG4gICAgXCJ2dWVcIjogXCJodHRwczovL3NmYy52dWVqcy5vcmcvdnVlLnJ1bnRpbWUuZXNtLWJyb3dzZXIuanNcIlxuICB9XG59In0=)
[Try it in the Playground](https://sfc.vuejs.org/#eyJBcHAudnVlIjoiPHNjcmlwdD5cbmltcG9ydCBnc2FwIGZyb20gJ2dzYXAnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbnVtYmVyOiAwLFxuICAgICAgdHdlZW5lZDogMFxuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBudW1iZXIobikge1xuICAgICAgZ3NhcC50byh0aGlzLCB7IGR1cmF0aW9uOiAwLjUsIHR3ZWVuZWQ6IE51bWJlcihuKSB8fCAwIH0pXG4gICAgfVxuICB9XG59XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuXHRUeXBlIGEgbnVtYmVyOiA8aW5wdXQgdi1tb2RlbC5udW1iZXI9XCJudW1iZXJcIiAvPlxuXHQ8cCBjbGFzcz1cImJpZy1udW1iZXJcIj57eyB0d2VlbmVkLnRvRml4ZWQoMCkgfX08L3A+XG48L3RlbXBsYXRlPlxuXG48c3R5bGU+XG4uYmlnLW51bWJlciB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXNpemU6IDJlbTtcbn1cbjwvc3R5bGU+IiwiaW1wb3J0LW1hcC5qc29uIjoie1xuICBcImltcG9ydHNcIjoge1xuICAgIFwiZ3NhcFwiOiBcImh0dHBzOi8vdW5wa2cuY29tL2dzYXA/bW9kdWxlXCIsXG4gICAgXCJ2dWVcIjogXCJodHRwczovL3NmYy52dWVqcy5vcmcvdnVlLnJ1bnRpbWUuZXNtLWJyb3dzZXIuanNcIlxuICB9XG59In0=)
0 commit comments