Skip to content

Commit da1fce5

Browse files
authored
Merge pull request #307 from Katakuranatsumi/guide/transitions-enterleave
Guide > Enter & Leave Transitions の翻訳を追従
2 parents 2a11096 + 88c405d commit da1fce5

File tree

1 file changed

+42
-31
lines changed

1 file changed

+42
-31
lines changed

src/guide/transitions-enterleave.md

Lines changed: 42 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Vue は、DOM からアイテムが追加、更新、削除されたときにト
77
- トランジションフックが実行されている間、JavaScript を使って直接 DOM 操作を行います。
88
- サードパーティの JavaScript アニメーションライブラリと連携します。
99

10-
このページでは、entering/leaving とリストのトランジションについてのみ取り扱いますが、次の章では、[状態のトランジション](transitions-state.html) について扱います。
10+
このページでは、entering/leaving のトランジションについてのみ取り扱いますが、次の章では、[リストのトランジション](transitions-list.html)[状態のトランジション](transitions-state.html) について扱います。
1111

1212
## 単一要素/コンポーネントのトランジション
1313

@@ -70,12 +70,17 @@ Vue.createApp(Demo).mount('#demo')
7070

7171
以下は、enter/leave トランジションのために適用される 6 つのクラスです。
7272

73-
1. `v-enter-from `: enter の開始状態。要素が挿入される前に適用され、要素が挿入された 1 フレーム後に削除されます。
74-
2. `v-enter-active`: enter の活性状態。トランジションに入るフェーズ中に適用されます。要素が挿入される前に追加され、トランジション/アニメーションが終了すると削除されます。このクラスは、トランジションの開始に対して、期間、遅延、およびイージングカーブを定義するために使用できます。
75-
3. `v-enter-to`: **バージョン 2.1.8 以降でのみ利用可能です。** enter の終了状態。要素が挿入された 1 フレーム後に追加され (同時に `v-enter` が削除されます)、トランジション/アニメーションが終了すると削除されます。
73+
1. `v-enter-from `: enter の開始状態。その要素が挿入される前に適用され、その要素が挿入された 1 フレーム後に削除されます。
74+
75+
2. `v-enter-active`: enter の活性状態。トランジションに入るフェーズ中に適用されます。その要素が挿入される前に追加され、そのトランジション/アニメーションが終了すると削除されます。このクラスは、トランジションの開始に対して、期間、遅延、およびイージングカーブを定義するために使用できます。
76+
77+
3. `v-enter-to`: enter の終了状態。その要素が挿入された 1 フレーム後に追加され (同時に `v-enter-from` が削除されます)、そのトランジション/アニメーションが終了すると削除されます。
78+
7679
4. `v-leave-from`: leave の開始状態。トランジションの終了がトリガされるとき、直ちに追加され、1フレーム後に削除されます。
80+
7781
5. `v-leave-active`: leave の活性状態。トランジションが終わるフェーズ中に適用されます。leave トランジションがトリガされるとき、直ちに追加され、トランジション/アニメーションが終了すると削除されます。このクラスは、トランジションの終了に対して、期間、遅延、およびイージングカーブを定義するために使用できます。
78-
6. `v-leave-to`: **バージョン 2.1.8 以降でのみ利用可能です。** leave の終了状態。leave トランジションがトリガされた 1 フレーム後に追加され (同時に `v-leave` が削除されます)、トランジション/アニメーションが終了すると削除されます。
82+
83+
6. `v-leave-to`: leave の終了状態。leave トランジションがトリガされた 1 フレーム後に追加され (同時に `v-leave-from` が削除されます)、トランジション/アニメーションが終了すると削除されます。
7984

8085
![Transition Diagram](/images/transitions.svg)
8186

@@ -138,7 +143,7 @@ CSS アニメーションは、CSS トランジションと同じように適用
138143
これは簡潔にするために CSS ルールの接頭辞を除いた例です。
139144

140145
```html
141-
<div id="example-2">
146+
<div id="demo">
142147
<button @click="show = !show">Toggle show</button>
143148
<transition name="bounce">
144149
<p v-if="show">
@@ -174,7 +179,7 @@ Vue.createApp(Demo).mount('#demo')
174179
transform: scale(0);
175180
}
176181
50% {
177-
transform: scale(1.5);
182+
transform: scale(1.25);
178183
}
179184
100% {
180185
transform: scale(1);
@@ -190,10 +195,10 @@ Vue.createApp(Demo).mount('#demo')
190195

191196
- `enter-from-class`
192197
- `enter-active-class`
193-
- `enter-to-class` (2.1.8+)
198+
- `enter-to-class`
194199
- `leave-from-class`
195200
- `leave-active-class`
196-
- `leave-to-class` (2.1.8+)
201+
- `leave-to-class`
197202

198203
これらは、クラス名の規約を上書きします。これは、Vue のトランジションシステムと [Animate.css](https://daneden.github.io/animate.css/) のような既存の CSS アニメーションライブラリを組み合わせたいときに特に便利です。
199204

@@ -241,9 +246,7 @@ Vue はトランジションが終了したことを把握するためのイベ
241246

242247
### 明示的なトランジション期間の設定
243248

244-
TODO: validate and provide an example
245-
246-
> 2.2.0 から新規追加
249+
<!-- TODO: validate and provide an example -->
247250

248251
ほとんどの場合、 Vue は、自動的にトランジションが終了したことを見つけ出すことは可能です。デフォルトでは、 Vue はルート要素の初めの `transitionend` もしくは `animationend` イベントを待ちます。しかし、これが常に望む形とは限りません。例えば、幾つかの入れ子となっている内部要素にてトランジションの遅延がある場合や、ルートのトランジション要素よりも非常に長いトランジション期間を設けている場合の、一連のトランジションのまとまりなどです。
249252

@@ -289,7 +292,8 @@ methods: {
289292
beforeEnter(el) {
290293
// ...
291294
},
292-
// CSS と組み合わせて使う時、done コールバックはオプションです
295+
// CSS と組み合わせて使う時、
296+
// done コールバックはオプションです
293297
enter(el, done) {
294298
// ...
295299
done()
@@ -308,7 +312,8 @@ methods: {
308312
beforeLeave(el) {
309313
// ...
310314
},
311-
// CSS と組み合わせて使う時、done コールバックはオプションです
315+
// CSS と組み合わせて使う時、
316+
// done コールバックはオプションです
312317
leave(el, done) {
313318
// ...
314319
done()
@@ -325,7 +330,7 @@ methods: {
325330

326331
これらのフックは、CSS トランジション/アニメーション、または別の何かと組み合わせて使うことができます。
327332

328-
JavaScript のみを利用したトランジションの場合は、**`done` コールバックを `enter``leave` フックで呼ぶ必要があります**。呼ばない場合は、フックは同期的に呼ばれ、トランジションはただちに終了します。また、 `:css="false"` を追加することで、CSS の検出をスキップすることを Vue に伝えられます。これによってわずかにパフォーマンスが改善するほか、CSS のルールの誤ったトランジションへの干渉を防ぐことができます。
333+
JavaScript のみを利用したトランジションの場合は、**`done` コールバックを `enter``leave` フックで呼ぶ必要があります**。呼ばない場合は、フックは同期的に呼ばれ、トランジションはただちに終了します。また、 `:css="false"` を追加することで、CSS の検出をスキップすることも Vue に伝えられます。これによってわずかにパフォーマンスが改善するほか、CSS のルールの誤ったトランジションへの干渉を防ぐことができます。
329334

330335
今から例をみていきましょう。これは [GreenSock](https://greensock.com/) を使ったシンプルな JavaScript トランジションの例です:
331336

@@ -421,19 +426,19 @@ Vue.createApp(Demo).mount('#demo')
421426
</transition>
422427
```
423428

424-
`v-if` を複数使ったり、ひとつの要素に対して動的プロパティでバインディングを行ういずれの場合でも、複数個の要素を対象にトランジションすることが可能です。例:
429+
`v-if`/`v-else-if`/`v-else` を使ったり、ひとつの要素に対して動的プロパティでバインディングを行ういずれの場合でも、複数個の要素を対象にトランジションすることが可能です。例:
425430

426-
TODO: rewrite example and put in codepen example
431+
<!-- TODO: rewrite example and put in codepen example -->
427432

428433
```html
429434
<transition>
430435
<button v-if="docState === 'saved'" key="saved">
431436
Edit
432437
</button>
433-
<button v-if="docState === 'edited'" key="edited">
438+
<button v-else-if="docState === 'edited'" key="edited">
434439
Save
435440
</button>
436-
<button v-if="docState === 'editing'" key="editing">
441+
<button v-else-if="docState === 'editing'" key="editing">
437442
Cancel
438443
</button>
439444
</transition>
@@ -503,19 +508,22 @@ computed: {
503508

504509
コンポーネント間のトランジションは、 `key` 属性が必要ではないのでさらに単純です。代わりに、ただ [動的コンポーネント](components.html#動的コンポーネント) でラップするだけです:
505510

506-
TODO: update to Vue 3
507-
508511
```html
509-
<transition name="component-fade" mode="out-in">
510-
<component :is="view"></component>
511-
</transition>
512+
<div id="demo">
513+
<input v-model="view" type="radio" value="v-a" id="a"><label for="a">A</label>
514+
<input v-model="view" type="radio" value="v-b" id="b"><label for="b">B</label>
515+
<transition name="component-fade" mode="out-in">
516+
<component :is="view"></component>
517+
</transition>
518+
</div>
512519
```
513520

514521
```js
515-
new Vue({
516-
el: '#transition-components-demo',
517-
data: {
518-
view: 'v-a'
522+
const Demo = {
523+
data() {
524+
return {
525+
view: 'v-a'
526+
}
519527
},
520528
components: {
521529
'v-a': {
@@ -525,16 +533,19 @@ new Vue({
525533
template: '<div>Component B</div>'
526534
}
527535
}
528-
})
536+
}
537+
538+
Vue.createApp(Demo).mount('#demo')
529539
```
530540

531541
```css
532542
.component-fade-enter-active,
533543
.component-fade-leave-active {
534544
transition: opacity 0.3s ease;
535545
}
536-
.component-fade-enter, .component-fade-leave-to
537-
/* .component-fade-leave-active below version 2.1.8 */ {
546+
547+
.component-fade-enter-from,
548+
.component-fade-leave-to {
538549
opacity: 0;
539550
}
540551
```

0 commit comments

Comments
 (0)