結果を一目で見るハート効果材料: ハートアイコン 2 つ。私のようなアイコン コンポーネントがない場合は、代わりに png 画像を使用します。 <transition :name=" isLike ? 'zoom' : '' " mode="out-in"> <!-- ハートアイコン--> <icon data="@icon/like.svg" color="#FF0000" v-if="isLike" key="like"></icon> <icon data="@icon/unlike.svg" color="#333333" v-else key="unlike"></icon> </トランジション> ボタンに「いいね!」するとアニメーションが表示され、「いいね!」ボタンをキャンセルするとアニメーションが表示されないため、 transition の name 属性は isLike 変数に応じて変更する必要があります。 2 つのスイッチング コンポーネントの名前が同じ場合は、2 つのコンポーネントを区別するために key 属性を追加する必要があることに注意してください。そうしないと、アニメーションが有効になりません。 次にCSSを記述します /** 進行中のアニメーションのクラス **/ .zoom-enter-active、.zoom-leave-active { 遷移: すべて 0.15 秒 cubic-bezier(0.42, 0, 0.34, 1.55); } /** エントリ開始状態と終了終了状態を設定します。両方とも 0 にスケールされます **/ .zoom-enter、.zoom-leave-to { 変換: スケール(0); } /** エントリ終了ステータスと終了開始ステータスを設定します。どちらも 1 にスケールされます **/ .zoom-enter-to、.zoom-leave { 変換: スケール(1); } 公式ドキュメントによると、アニメーション中のアイコンコンポーネントのクラスには .name-enter-active と .name-leave-active が設定されるので、ここでアニメーションのプロパティ、遷移の時間と曲線を設定します。 ズームイン時に画像 Chromeのデバッグパネルを開き、DOMを見つけてtransition-timing-function: easy;を設定し、easeの横にある小さな曲線アイコンをクリックします。 プルバーをドラッグしてカーブを調整します アニメーションの最後に、曲線を終点を超えて延長するだけです。 次に、曲線パネルの下の値 アニメーションの時間曲線については、インターネット上に関連情報がたくさんあるので、ここでは詳しく説明しません。 ズーム部分に関しては、上記の CSS 設定と
いいねをキャンセルすると、 デジタルスクロールアニメーション数字の変更だけなので、遷移に必要な div は 1 つだけです。データの変更を示すために、div のキーを設定することに注意します。 <div class="like-num-wrapper"> <transition :name="item.is_like ? 'plus' : 'minus'"> <div クラス="like-num" :style="{color: item['is_like'] ? 'red': '#333'}" :key="item['like_num']" > {{item['like_num']}} </div> </トランジション> </div> .like-num-wrapper { 位置: 相対的; 左マージン: 16px; テキスト配置: 終了; フォントサイズ: 13px; 高さ: 17px; オーバーフロー-y: 非表示; .like-num { 上: 0; 左: 0; 位置: 相対的; 行の高さ: 17px; } } 上下のスクロール距離を計算するには、数字の高さを // いいね数 +1 animation.plus-enter-active, .plus-leave-active { 遷移: すべて .3 秒のイーズイン。 } .plus-enter、.plus-leave { 変換: translateY(0); } .plus-enter-to、.plus-leave-to { 変換: translateY(-17px); } // 番号 -1 のように animation.minus-enter-active, .minus-leave-active { 遷移: すべて .3 秒のイーズイン。 } .マイナスエンター{ 変換: translateY(-34px); } .マイナス入力 { 変換: translateY(-17px); } .minus-leave { 変換: translateY(0); } .minus-leave-to { 変換: translateY(17px); } アニメーションのようにいいねアニメーションは非常にシンプルです。いいねボタンをクリックすると、古いデジタル div の下に新しいデジタル div が生成されます。この時点で、すべてを 17 ピクセル上に移動します。 いいねを取り消すと数字が上から下にスクロールするため、数字 1 の初期位置は 2 より上である必要があります。 1番のアニメーションの初期位置を設定するには、次のコードを記述します。 .マイナスエンター{ 変換: translateY(-34px); } なぜ -34px なのでしょうか?デジタル div の高さは 17 ピクセルなので、17 ピクセル上に移動すると 2 と重なり、数字 1 がさらに 17 ピクセル上に移動すると 2 の上に表示されます。 次に、 2 番の終了アニメーションははるかに単純です。0 から 17 ピクセルまでロールアウトするだけです。 この時点で、全体的な同様の効果が完成します 上記は、Vue トランジションを使用して同様のアニメーション効果を実現する例の詳細です。Vue トランジションを使用して同様の効果を実現する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: MySQLのROUND関数の丸め演算における落とし穴の分析
目次1. インストール2. はじめに3. 使用4. 必要に応じてEChartsチャートとコンポーネン...
目次1. 公式ドキュメント2. Vue CLIプロジェクトを作成する1. Vue CLIをインストー...
境界プロパティの概要borderプロパティは要素の境界を設定します。境界線の3要素は、太さ、線の種類...
目次一般的な圧縮形式: gz .bz2 .xz .zip一般的に使用されるアーカイブは圧縮を必要とす...
以前にも同じような記事を書いたことがありますが、js スクリプトを使用しており、ファイルパスを表示で...
WindowsでMySQLデータベースのマスターとスレーブを構成する詳細なプロセスは次のとおりです。...
【序文】 Vue と React の CSS モジュール ソリューションはどちらも、実装にローダーに...
何人かの学生は、マスターとスレーブの間の不一致の問題に遭遇したと述べました。一般的な状況としては、m...
最近、要素テーブルを使用すると、並べ替えの問題によく遭遇します。単純な並べ替えであれば、要素の公式が...
1. OpenSSL公式サイト公式ダウンロードアドレス: https://www.openssl....
この文の目的は何ですか?コードをコピーコードは次のとおりです。 <link rel="...
最近、仕事で問題に遭遇しました。グローバル変数 red_heart があります。これは多くの場所で使...
Mongodb には db.serverStatus() コマンドがあり、これを使用して Mongo...
個人的な実装のスクリーンショット:インストール: npm インストール vue-esign --sa...