目次
Vue のトランジション コンポーネント
移行デモ
クラスの命名規則
アニメーションの使用
# まず問題を見てみましょう。アニメーションが 2 つの要素間で切り替わるときに問題が発生します。この問題を再現するコードは次のとおりです。次のように:
appear属性
animate.css库的使用
使用动画序列
使用自定义过渡class
写在最后
ホームページ ウェブフロントエンド Vue.js Vue3でトランジションアニメーションを実装するにはどうすればよいですか?コンポーネントおよびアニメーション ライブラリのメソッド分析

Vue3でトランジションアニメーションを実装するにはどうすればよいですか?コンポーネントおよびアニメーション ライブラリのメソッド分析

Feb 15, 2022 pm 07:21 PM
vue3 トランジションアニメーション

Vue でトランジション アニメーションを実装するにはどうすればよいですか?以下の記事では、Vue3 でトランジションアニメーションを実装する 2 つの方法 (トランジションコンポーネントとアニメーションライブラリ) を紹介します。

Vue3でトランジションアニメーションを実装するにはどうすればよいですか?コンポーネントおよびアニメーション ライブラリのメソッド分析

実際の開発では、ユーザーエクスペリエンスを高めるためにトランジションアニメーションがよく使われ、CSSではtransitionを介してトランジションアニメーションが使用されます。 animation が実装されています。 Vue には、トランジション アニメーション効果を簡単に実装できる組み込みコンポーネントと API がいくつかあります。次にそれらについて学びましょう。

Vue のトランジション コンポーネント

Vue は、次のいずれかの状況で要素となる transition コンポーネントを提供します。トランジション効果:

  • 使用 v-if条件付きレンダリング
  • 使用 v-show条件付き表示
  • 動的コンポーネント
  • コンポーネントルートノード

使用方法も比較的簡単で、アニメーション表示が必要なコンポーネントや要素を使用するだけです<transition></transition>ラップするだけコンポーネントを作成し、class のセットを定義します。 [関連する推奨事項: vue.js ビデオ チュートリアル ]

移行デモ

次のコードは <transition></transition> を示しています。コンポーネントの基本的な使用法:

<template>
  <button class="btn btn-primary" @click="helloWorldShow = !helloWorldShow">
    显示与隐藏
  </button>
  <br />
  <img src="/static/imghw/default1.png"  data-src="./assets/logo.png"  class="lazy"  alt="Vue logo"  />
  <transition>
    <hello-world v-if="helloWorldShow" msg="【一碗周】过渡动画演示demo" />
  </transition>
</template>

<script setup>
import { ref } from &#39;vue&#39;
import HelloWorld from &#39;./components/HelloWorld.vue&#39;
const helloWorldShow = ref(true)
</script>

<style>
#app {
  /* more css */
}
/* 进入之前和离开后的样式 */
.v-enter-from,
.v-leave-to {
  opacity: 0;
}
/* 离开和进入过程中的样式 */
.v-enter-active,
.v-leave-active {
  /* 添加过渡动画 */
  transition: opacity 0.5s ease;
}
/* 进入之后和离开之前的样式 */
.v-enter-to,
.v-leave-from {
  opacity: 1;
}
</style>
ログイン後にコピー

コードの実行結果は以下のとおりです:

Vue3でトランジションアニメーションを実装するにはどうすればよいですか?コンポーネントおよびアニメーション ライブラリのメソッド分析

##Some

class 上で使用した、その意味は次のとおりです。

  • v-enter-from: エントリ遷移の開始状態を定義します。これは要素が挿入される前に有効になり、要素が挿入された後の次のフレームで削除されます。
  • v-enter-active: エントリ遷移が有効になるときの状態を定義します。トランジション全体に適用され、要素が挿入される前に有効になり、トランジション/アニメーションの完了後に削除されます。このクラスは、遷移を入力するための処理時間、遅延、および曲線関数を定義するために使用できます。
  • v-enter-to: エントリ遷移の終了状態を定義します。要素が挿入された後の次のフレームで有効になり (同時に v-enter-from が削除されます)、トランジション/アニメーションの完了後に削除されます。
  • v-leave-from: 離脱遷移の開始状態を定義します。これは、離脱トランジションがトリガーされるとすぐに有効になり、次のフレームで削除されます。
  • v-leave-active: 離脱遷移が有効になるときの状態を定義します。終了トランジション全体に適用され、終了トランジションがトリガーされるとすぐに有効になり、トランジション/アニメーションが完了すると削除されます。このクラスを使用して、処理時間、遅延、終了遷移の曲線関数を定義できます。
  • v-leave-to: 遷移の終了状態を残します。 Leave トランジションがトリガーされた後の次のフレームで有効になり (同時に v-leave-from が削除されます)、トランジション/アニメーションの完了後に削除されます。
次の図は Vue ドキュメントからの図であり、プロセス全体を完全に説明しています

Vue3でトランジションアニメーションを実装するにはどうすればよいですか?コンポーネントおよびアニメーション ライブラリのメソッド分析

クラスの命名規則

<transition>コンポーネントの class 名には、プレフィックス v- を付ける必要はありません。実際、カスタマイズできます。 name 属性 (例: ) を追加する必要があります。そうすると、すべてのプレフィックスが ywz- になります。

アニメーションの使用

先ほどは、コンポーネントが出入りするトランジション効果を実現するために

transition 属性を使用しました。ここで ## を使用できるようになります。 #animation 属性の実装、サンプル コードは次のとおりです。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>&lt;transition&gt; &lt;hello-world v-if=&quot;helloWorldShow&quot; msg=&quot;【一碗周】过渡动画演示demo&quot; /&gt; &lt;/transition&gt;</pre><div class="contentsignin">ログイン後にコピー</div></div>

css

<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>/* 离开和进入过程中的样式 */ .v-enter-active, .v-leave-active { /* 添加过渡动画 */ transition: opacity 0.5s ease; }</pre><div class="contentsignin">ログイン後にコピー</div></div> コードの実行結果は次のとおりです。

Vue3でトランジションアニメーションを実装するにはどうすればよいですか?コンポーネントおよびアニメーション ライブラリのメソッド分析

トランジション モード

# まず問題を見てみましょう。アニメーションが 2 つの要素間で切り替わるときに問題が発生します。この問題を再現するコードは次のとおりです。次のように:

<template>
  <button class="btn btn-primary" @click="show = !show">显示与隐藏</button>
  <br />
  <transition>
    <hello-world v-if="show" msg="【一碗周】过渡动画演示demo" />
    <img src="/static/imghw/default1.png"  data-src="./assets/logo.png"  class="lazy"  v-else alt="Vue logo"  />
  </transition>
</template>

<script setup>
import { ref } from &#39;vue&#39;
import HelloWorld from &#39;./components/HelloWorld.vue&#39;
const show = ref(true)
</script>

<style>
/* 省略 */
</style>
ログイン後にコピー

実行時の効果は次のとおりです:

Vue3でトランジションアニメーションを実装するにはどうすればよいですか?コンポーネントおよびアニメーション ライブラリのメソッド分析2 つのコンポーネントが同時に同時に存在していることがわかります。このエフェクトが必要ない場合は、

<transition>

コンポーネントのトランジション モードを設定する必要があります。これは mode 属性で、次の 3 つの値が含まれます。

  • default:新元素与当前元素同时进行。
  • in-out:新元素先进行进入过渡,完成之后当前元素过渡离开。
  • out-in:当前元素先进行离开过渡,完成之后新元素过渡进入。

了解这个属性之后,我们将代码修改一下,修改后如下:

<transition mode="out-in">
  <hello-world v-if="show" msg="【一碗周】过渡动画演示demo" />
  <img src="/static/imghw/default1.png"  data-src="./assets/logo.png"  class="lazy"  v-else alt="Vue logo"  />
</transition>
ログイン後にコピー

现在的运行结果如下:

Vue3でトランジションアニメーションを実装するにはどうすればよいですか?コンポーネントおよびアニメーション ライブラリのメソッド分析

appear属性

<transition>组件的appear属性用于开启手册渲染的动画,它接受一个布尔值,示例代码如下:

<transition mode="out-in" appear>
  <img src="/static/imghw/default1.png"  data-src="./assets/logo.png"  class="lazy"  v-if="show" alt="Vue logo"  />
</transition>
ログイン後にコピー

Vue3でトランジションアニメーションを実装するにはどうすればよいですか?コンポーネントおよびアニメーション ライブラリのメソッド分析

animate.css库的使用

如果我们在实际的开发中自己去一个一个的编写这些动画序列,那么效率是比较低下的,所以我们经常会用到一些动画库,最常见的就是animate.css

现在我们就来看那一下如何在Vue中使用animate.css

  • 安装animate.css

npm i animate.css
ログイン後にコピー
  • 引入animate.css

// main.jsimport &#39;animate.css&#39;
ログイン後にコピー

使用动画序列

.v-enter-active {
  animation: fadeInDown 0.5s;
}
.v-leave-active {
  animation: fadeOutDown 0.5s;
}
ログイン後にコピー

使用自定义过渡class

<transition>组件还提供了属性来自定义过渡class,具体如下:

  • enter-from-class
  • enter-active-class
  • enter-to-class
  • leave-from-class
  • leave-active-class
  • leave-to-class

他们的优先级会高于普通的类名。

<transition
  mode="out-in"
  enter-active-class="animate__animated animate__fadeInDown"
  leave-active-class="animate__animated animate__fadeOutDown"
>
  <img src="/static/imghw/default1.png"  data-src="./assets/logo.png"  class="lazy"  v-if="show" alt="Vue logo"  />
</transition>
ログイン後にコピー

写在最后

本篇文章介绍了过渡的基本使用,掌握Vue提供的<transition></transition>组件配合animate.css可以轻松实现过渡动画。

除了单个组件的过渡外,Vue还提供了TransitionGroup组件,用于实现多个组件的过渡动画,我们以后介绍。

更多编程相关知识,请访问:编程视频!!

以上がVue3でトランジションアニメーションを実装するにはどうすればよいですか?コンポーネントおよびアニメーション ライブラリのメソッド分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

vue3+vite: src に画像を動的にインポートするために require を使用するときのエラーを解決する方法 vue3+vite: src に画像を動的にインポートするために require を使用するときのエラーを解決する方法 May 21, 2023 pm 03:16 PM

vue3+vite:src は、イメージとエラー レポートと解決策を動的にインポートするために require を使用します。vue3+vite は複数のイメージを動的にインポートします。vue3。TypeScript 開発を使用している場合、イメージを導入するために require のエラー メッセージが表示されます。requireisnotdefined は使用できません。 vue2 のような imgUrl:require(' .../assets/test.png') は、typescript が require をサポートしていないため、インポートされます。そのため、import が使用されます。解決方法は次のとおりです: awaitimport を使用します

vue3 プロジェクトで tinymce を使用する方法 vue3 プロジェクトで tinymce を使用する方法 May 19, 2023 pm 08:40 PM

tinymce はフル機能のリッチ テキスト エディター プラグインですが、tinymce を vue に導入するのは他の Vue リッチ テキスト プラグインほどスムーズではありません。tinymce 自体は Vue には適しておらず、@tinymce/tinymce-vue を導入する必要があります。外国のリッチテキストプラグインであり、中国語版を通過していないため、公式 Web サイトから翻訳パッケージをダウンロードする必要があります (ファイアウォールをバイパスする必要がある場合があります)。 1. 関連する依存関係をインストールします npminstalltinymce-Snpminstall@tinymce/tinymce-vue-S2. 中国語パッケージをダウンロードします 3. スキンと中国語パッケージを導入します. プロジェクトのパブリック フォルダーに新しい tinymce フォルダーを作成し、

Vue3 がマークダウンを解析し、コードのハイライトを実装する方法 Vue3 がマークダウンを解析し、コードのハイライトを実装する方法 May 20, 2023 pm 04:16 PM

Vue はブログ フロントエンドを実装しており、マークダウン解析を実装する必要があり、コードがある場合はコードのハイライトを実装する必要があります。 Vue には、markdown-it、vue-markdown-loader、marked、vue-markdown など、マークダウン解析ライブラリが多数あります。これらのライブラリはすべて非常に似ています。ここではMarkedが使用され、コード強調表示ライブラリとしてhighlight.jsが使用されます。 1. 依存ライブラリをインストールする vue プロジェクトの下でコマンド ウィンドウを開き、次のコマンド npminstallmarked-save//marked を入力して、マークダウンを htmlnpmins に変換します。

Vue3 でページの部分的なコンテンツを更新する方法 Vue3 でページの部分的なコンテンツを更新する方法 May 26, 2023 pm 05:31 PM

ページの部分的な更新を実現するには、ローカル コンポーネント (dom) の再レンダリングを実装するだけで済みます。 Vue でこの効果を実現する最も簡単な方法は、v-if ディレクティブを使用することです。 Vue2 では、v-if 命令を使用してローカル dom を再レンダリングすることに加えて、新しい空のコンポーネントを作成することもできます。ローカル ページを更新する必要がある場合は、この空のコンポーネント ページにジャンプしてから、再びジャンプします。 beforeRouteEnter ガードを空白のコンポーネントに配置します。元のページ。以下の図に示すように、Vue3.X の更新ボタンをクリックして赤枠内の DOM を再読み込みし、対応する読み込みステータスを表示する方法を示します。 Vue3.X の scriptsetup 構文のコンポーネントのガードには o しかないので、

Vue3 でアバターを選択してトリミングする方法 Vue3 でアバターを選択してトリミングする方法 May 29, 2023 am 10:22 AM

最終的な効果は、VueCropper コンポーネントのyarnaddvue-cropper@next をインストールすることです。上記のインストール値は Vue3 用です。Vue2 の場合、または他の方法を参照したい場合は、公式 npm アドレス: 公式チュートリアルにアクセスしてください。また、コンポーネント内で参照して使用するのも非常に簡単です。必要なのは、対応するコンポーネントとそのスタイル ファイルを導入することだけです。ここではグローバルに参照しませんが、import{userInfoByRequest}from'../js/api を導入するだけです。 ' コンポーネント ファイルにインポートします。import{VueCropper}from'vue-cropper&

vue3 プロジェクトをパッケージ化してサーバーに公開した後、アクセス ページが空白で表示される問題の解決方法 vue3 プロジェクトをパッケージ化してサーバーに公開した後、アクセス ページが空白で表示される問題の解決方法 May 17, 2023 am 08:19 AM

vue3 プロジェクトがパッケージ化され、サーバーに公開されると、アクセス ページに空白の 1 が表示されます。vue.config.js ファイル内の publicPath は次のように処理されます: const{defineConfig}=require('@vue/cli-service') module.exports=defineConfig({publicPath :process.env.NODE_ENV==='production'?'./':'/&

Vue3 の再利用可能なコンポーネントの使用方法 Vue3 の再利用可能なコンポーネントの使用方法 May 20, 2023 pm 07:25 PM

はじめに vue であれ、react であれ、複数の繰り返しコードに遭遇した場合、ファイルを冗長なコードの束で埋めるのではなく、これらのコードを再利用する方法を考えます。実際、vue と React はどちらもコンポーネントを抽出することで再利用を実現できますが、小さなコードの断片に遭遇し、別のファイルを抽出したくない場合は、それに比べて、React は同じファイル内で対応するウィジェットを宣言して使用できます。または、次のような renderfunction を通じて実装します。 constDemo:FC=({msg})=>{returndemomsgis{msg}}constApp:FC=()=>{return(

vue3+ts+axios+pinia を使用して無意味なリフレッシュを実現する方法 vue3+ts+axios+pinia を使用して無意味なリフレッシュを実現する方法 May 25, 2023 pm 03:37 PM

vue3+ts+axios+pinia で無意味なリフレッシュを実現 1. まず、プロジェクト内の aiXos と pinianpmipinia をダウンロードします--savenpminstallaxios--save2. axios リクエストをカプセル化-----ダウンロード js-cookienpmiJS-cookie-s// aixosimporttype{AxiosRequestConfig , AxiosResponse}from"axios";importaxiosfrom'axios';import{ElMess

See all articles