DigiPress

Highly Flexible WordPress Theme

メニュー

背景画像に変色するグラデーション背景を重ね合わせるサンプル

 2018/08/18
背景画像に変色するグラデーション背景を重ね合わせるサンプル

今回のTipsでは、Webページの背景(background)にアニメーションしながら色が変化していく「グラデーション背景」とフルサイズの「背景画像」を重ね合わせて表示するサンプルを作ってみたいと思います。CSSのみでできて、とってもシンプルです。

まずは完成イメージをご覧ください!

See the Pen Gradient animation background with full size image by digistate (@digistate) on CodePen.

CSS3では、1つのbackgroundプロパティのみで、複数の背景要素(画像,カラー)の重ね合わせができるのですが、今回のサンプルではアニメーション(変色)するグラデーション背景と、静止画像の背景を重ね合わせるため、それぞれの背景は異なる要素に指定しています。

具体的には、以下の背景レイヤー構成です。

背景レイヤー構成

capture 2016-05-27 14.35.48
body タグには backgroundプロパティで背景画像を指定し、その直後の配下に .wrapper セレクタを付けたラッパー要素(div)にアニメーションで変色するグラデーション背景を指定しています。

<body>
  <div class="wrapper">
       :
  </div>
</body>

背景レイヤーのCSS

body は単純に背景画像を指定するだけとなっています。

body {
  background: url(画像のURL) fixed 50%; /* url, attachment, position の順で指定 */
  background-size: cover; /* アスペクト比を保持して表示サイズにフィット */
}

グラデーション背景は.wrapper セレクタの要素(div)に指定しています。

.wrapper {
  background: linear-gradient(120deg, rgba(19, 178, 102, 0.72), rgba(38, 184, 208, 0.72), rgba(50, 107, 185, 0.72), rgba(193, 71, 183, 0.72), rgba(206, 61, 104, 0.72)) fixed;
    background-size: 800%;
}

グラデーションは、HEX値(#333333 などのカラーコード)で指定すると下のレイヤー(body)に指定した背景画像が見えなくなってしまうため、アルファ値(rgba)で72%(0.72)の不透明度を指定しています。

アニメーション用の指定は、キーフレーム(keyframes)を利用して自作したものをセットしています。

  -webkit-animation: bg-gradient 15s ease infinite;
  -moz-animation: bg-gradient 15s ease infinite;
  -o-animation: bg-gradient 15s ease infinite;
  animation: bg-gradient 15s ease infinite;
  @-webkit-keyframes bg-gradient {
    0% {
      background-position: 14% 0;
    }
    50% {
      background-position: 87% 100%;
    }
    100% {
      background-position: 14% 0;
    }
  }
  @-moz-keyframes bg-gradient {
    0% {
      background-position: 14% 0;
    }
    50% {
      background-position: 87% 100%;
    }
    100% {
      background-position: 14% 0;
    }
  }
  @-o-keyframes bg-gradient {
    0% {
      background-position: 14% 0;
    }
    50% {
      background-position: 87% 100%;
    }
    100% {
      background-position: 14% 0;
    }
  }
  @keyframes bg-gradient {
    0% {
      background-position: 14% 0;
    }
    50% {
      background-position: 87% 100%;
    }
    100% {
      background-position: 14% 0;
    }
  }

アニメーションとキーフレームは、各ブラウザエンジンごとにベンダープリフィクス付きで指定しているため定義が多くなっていますが、基本は15秒間隔(15s)キーフレーム(bg-gradient)に指定したアニメーションを繰り返し(infinite)実行する、というものです。

Share / Subscribe
Facebook Likes
Tweets
Hatena Bookmarks
Pinterest
Pocket
Feedly