CSS3でアニメーションを実装する3つの方法

CSS3でアニメーションを実装する3つの方法

これは、面接者の CSS に関する基本的な知識をテストするものです。

CSSでアニメーションを実装するには主に3つの方法があります

1つ目は、グラデーションアニメーションを実現するためのトランジションです。

2つ目は、変換遷移アニメーションです。

3つ目は、カスタムアニメーションを実装するためのアニメーションです。

以下に、3 種類のアニメーションの実装方法について詳しく説明します。

遷移グラデーションアニメーション

まず、遷移の特性を見てみましょう。

  • プロパティ: 幅、行の高さ、フォント サイズ、色など、DOM スタイルに作用するすべてのプロパティなど、変更する必要がある CSS プロパティを入力します。
  • 期間: トランジション効果を完了するのに必要な時間単位 (秒またはミリ秒)
  • タイミング関数: エフェクトの速度曲線 (線形、イーズ、イーズイン、イーズアウトなど)

タイミング関数の具体的な値は、以下の表で確認できます。

価値説明する
リニア等速(cubic-bezier(0,0,1,1)に等しい)
容易に遅い状態から速い状態へ、そして再び遅い状態へ (cubic-bezier(0.25,0.1,0.25,1))
イーズイン徐々に速くなります(cubic-bezier(0.42,0,1,1)に等しい)
イージーアウトゆっくり減速します(cubic-bezier(0,0,0.58,1)に等しい)
イージーインアウト最初は速く、その後遅くなり(cubic-bezier(0.42,0,0.58,1)に等しい)、徐々に現れて消えていきます。
キュービックベジェ( n , n , n , n ) 3次ベジェ関数で独自の値を定義します。可能な値は0〜1です。

  • delay: アニメーション効果の遅延トリガー時間 (単位: ms または s)

完全な例を見てみましょう:

<div class="base"></div>
.base {
            幅: 100ピクセル;
            高さ: 100px;
            表示: インラインブロック;
            背景色: #0EA9FF;
            境界線の幅: 5px;
            境界線のスタイル: solid;
            境界線の色: #5daf34;
            遷移プロパティ: 幅、高さ、背景色、境界線の幅;
            遷移期間: 2秒;
            遷移タイミング関数: イーズイン;
            遷移遅延: 500ms;
        /*略語*/
        /*遷移: すべて 2 秒のイーズイン 500 ミリ秒;*/
            &:ホバー{
                幅: 200ピクセル;
                高さ: 200px;
                背景色: #5daf34;
                境界線の幅: 10px;
                境界線の色: #3a8ee6;
            }
        }

操作効果:

マウスを上に動かすと、アニメーションが 0.5 秒の遅延で開始され、transition プロパティで border-color が設定されていないため、グラデーション アニメーションがないことがわかります。

変換アニメーション

transform プロパティは 2D または 3D 変換を適用します。この属性を使用すると、要素を回転、拡大縮小、傾斜、移動できます。通常は、transition 属性と組み合わせて使用​​されます。

  1. none: 変換を定義しません。通常は変換を登録するために使用されます。
  2. transform-functions: 変換する型関数を定義します。主なものは次のとおりです。

2.1 回転:主に 2D 回転と 3D 回転に分けられます。 rotate(angle)、2D 回転、パラメータは角度 (45deg など)。rotate(x,y,z,angle)、3D 回転、元の位置から (x,y,z) までの線の周りの 3D 回転。rotateX(angle)、X 軸に沿った 3D 回転。rotateY(angle)、rotateZ(angle)。

2.2 スケール:一般的に、要素のサイズを設定するために使用されます。主なタイプは上記と同じで、scale(x, y)、scale3d(x, y, z)、scaleX(x)、scaleY(y)、scaleZ(z) などがあります。ここで、x、y、z は収縮率です。

2.3 傾斜:主に要素のスタイルを傾けるために使用されます。 skew(x-angle, y-angle)、x軸とy軸に沿った2D skew変換、skewX(angle)、x軸に沿った2D skew変換、skew(angle)、y軸に沿った2D skew変換。

2.4 移動:主に要素を移動するために使用されます。 translate(x, y) は、x 軸と y 軸に沿って移動するピクセル ポイントを定義します。translate(x, y, z) は、x 軸、y 軸、z 軸に沿って移動するピクセル ポイントを定義します。translateX(x)、translateY(y)、translateZ(z)。

<h5>トランジションはトランスフォームと一緒に使用されます</h5>
<div class="base base2"></div>
.base2{
          変換:なし;
          遷移プロパティ: transform;
          &:ホバー{
              変換:スケール(0.8, 1.5)、回転(35度)、傾斜(5度)、移動(15px, 25px);
          }
      }

操作効果:

ボックスが回転、傾斜、移動、拡大されていることがわかります。

アニメーションカスタムアニメーション

より柔軟なアニメーション効果を実現するために、CSS3 ではカスタム アニメーション機能も提供されています。

(1)名前:セレクターにバインドする必要があるキーフレーム名。

(2)継続時間:アニメーションを完了するのに必要な時間(秒またはミリ秒単位)。

(3)タイミング関数:遷移線形と同じ。

(4)遅延:アニメーションが開始するまでの遅延を設定します。

(5)反復回数:アニメーションの実行回数を設定します。無限ループを意味します。

(6)方向:アニメーションを逆方向にポーリングするかどうか。 normal はデフォルト値で、アニメーションは通常どおり再生されます。alternative はアニメーションを逆の順序で再生します。

<h5 class="title">カスタムアニメーションをアニメーション化する</h5>
<div class="base base3"></div>
.base3 {
          境界線の半径: 50%;
          変換:なし;
          位置: 相対的;
          幅: 100ピクセル;
          高さ: 100px;
          背景: 線形グラデーション(
                  35度、
                  #ccffff、
                  #ffcccc
          );
          &:ホバー{
              アニメーション名: バウンス;
              アニメーション期間: 3秒;
              アニメーションの反復回数: 無限;
          }
      }
      @keyframes バウンス{
          0% {
              上: 0px;
          }
          50% {
              上: 249px;
              幅: 130ピクセル;
              高さ: 70px;
          }
          100% {
              上: 0px;
          }
      }

操作効果:

ご覧のとおり、カスタム アニメーションでは、第 1 アニメーションと第 2 アニメーションのすべての機能を含む、より柔軟なアニメーション効果を実現でき、プロパティもより包括的です。

オンライン制作

上記のコードはオンラインで体験できます: 住所

ソースコードアドレス

以上がCSS3でアニメーションを実装する3つの方法の詳細です。CSS3でアニメーションを実装する方法の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

<<:  優れたユーザー エクスペリエンス デザイナーが行うべき 5 つのこと (画像とテキスト)

>>:  Vue でのルーティングガードの具体的な使用法

推薦する

k8sとDockerの関係についての簡単な説明

最近、プロジェクトでは kubernetes (以下、k8s と表記、k と s の間には 8 つの...

Mysql5.7 のルートパスワードを忘れた場合の対処法 (シンプルで効果的な方法)

前回の記事では、MySQL 5.7でルートパスワードを忘れた場合と、MySQL 5.7でルートパスワ...

ウェブデザイン実践者必読のキャリアプラン

原文記事、転載の際は著者と出典を明記してください! Web デザインは間違いなくテクノロジーであり、...

MySQL パーティション フィールド列に別のインデックスを作成する必要がありますか?

序文パーティション フィールドは主キーの一部でなければならないことは誰もが知っています。では、複合主...

React+Ant Design開発環境をセットアップするための実装手順

基礎1. スキャフォールディングを使用してプロジェクトを作成し、開始する1.1 足場を設置する: n...

MySQLがフルテーブルスキャンを実行するいくつかの状況

目次ケース1:ケース2:ケース3:簡単にまとめると:過去 2 日間で、完全なテーブル スキャンを引き...

Vue-cliはプロジェクトを作成し、プロジェクト構造を分析します

目次1. ディレクトリを入力してプロジェクトを作成する2. 必要な設定項目を選択します2.1 Vue...

JavaScript 配列の Reduce() メソッドの構文と例の分析

序文Reduce() メソッドは関数を累積器として受け取り、配列内の各値 (左から右へ) が単一の値...

選択ドロップダウンメニューのテキストを左右にスクロールするように設定する

marquee タグを使用してフォントのスクロールを設定したいです。コードは次のように記述しましたが...

シリアルポート使用時のvue-electronの問題解決

エラーは次のとおりです:キャッチされない TypeError: 未定義のプロパティ 'mod...

Vue プロジェクトを使用して複数のプロキシを構成する際の注意事項

Vue プロジェクトの開発プロセスでは、ローカル デバッグの利便性のため、通常、vue.config...

MySQL テーブルを削除するときに外部キー制約を無視するシンプルな実装

テーブルを削除することはあまり一般的ではありませんが、特に外部キーの関連付けがあるテーブルの場合は、...

nginx の 2 つのモジュールの proxy_pass の違い

1. 1.ngx_stream_proxy_moduleモジュールのproxy_passディレクティ...

CSS で text-align と margin: 0 auto を使用して中央に配置する例コード

CSSでtext-align、margin: 0 autoを使用して中央揃えにするtext-alig...

Vueパンくずコンポーネントのカプセル化方法

Vueはパンくずコンポーネントをカプセル化して参照します。具体的な内容は次のとおりです。効果を達成す...