CSS
 Computer >> コンピューター >  >> プログラミング >> CSS

CSSのfilterプロパティをアニメーションで変化させる方法

CSSでは、filterプロパティも他のスタイルと同じように@keyframesを使ってアニメーションさせることができます。画像のコントラストやぼかし、彩度などを滑らかに変化させることで、動きのある視覚表現が可能になります。

以下は、filterプロパティにアニメーションを実装するサンプルコードです。実際にブラウザで実行して動作を確認してみてください。

サンプルコード

<!DOCTYPE html>
<html>
   <head>
      <style>
         div {
            width: 600px;
            height: 300px;
            background-image: url('https://www.tutorialspoint.com/assets/videotutorials/courses/swift_4_online_training/380_course_210_image.jpg');
            border: 2px solid blue;
            animation: myanim 3s infinite;
            position: absolute;
            column-rule: 10px inset orange;
            column-count: 4;
         }
         @keyframes myanim {
            20% {
               filter:contrast(400%);
            }
         }
      </style>
   </head>
   <body>
      <h2>filterプロパティへのアニメーション適用例</h2>
      <div></div>
   </body>
</html>

コードの解説

このコードでは、以下のポイントに注目してください。

  • animation: myanim 3s infinite; — 「myanim」という名前のキーフレームアニメーションを3秒かけて実行し、無限に繰り返します。
  • @keyframes myanim — アニメーションの途中経過(20%の時点)でfilter: contrast(400%)を指定しています。これにより、画像のコントラストが通常の状態から400%まで変化します。
  • filter: contrast(400%) — コントラストを強調するフィルターです。brightness()saturate()など、他のフィルター関数も同様にアニメーションできます。

ブラウザでこのページを開くと、画像のコントラストが周期的に強くなり、元に戻る動きが繰り返されるのが確認できます。filterはGPUアクセラレーションが効きやすいプロパティのため、比較的スムーズなアニメーションを実現できるのもメリットです。

  1. CSSアニメーションでtransformプロパティをアニメーション化する方法

    CSSを使えば、transform プロパティにも簡単にアニメーションを適用できます。transform をアニメーション化することで、要素の回転・移動・拡大縮小などを滑らかで軽量な演出として表現可能です。ここでは、@keyframes と animation プロパティを組み合わせた基本的な実装方法を解説します。 実装のポイント @keyframes:アニメーションの進行度ごとに適用するスタイル(キーフレーム)を定義します。 animation:アニメーション名や再生時間(duration)などをまとめて指定できるショートハンドプロパティです。 transform:キーフレーム内で rot

  2. CSSアニメーションでvertical-alignプロパティを動かす方法を解説

    CSSのvertical-alignプロパティは、インライン要素やテーブルセル内のコンテンツの垂直方向の位置を揃えるために使われます。実は、このプロパティもCSSアニメーション(@keyframes)と組み合わせることで、滑らかにアニメーションさせることが可能です。以下のサンプルコードでは、画像のvertical-alignの値を3秒かけて変化させるアニメーションを実装しています。アニメーションの途中(50%の時点)で値が120pxに変化するように設定しています。サンプルコード<!DOCTYPE html> <html>    <head>