CSSで透明度の変化するアニメーションを実装する - transitionプロパティを利用した フェードイン、フェードアウトの実装 - CSS

CSSを利用して、透明度が変化するアニメーションを実装します。
フェードイン、フェードアウトの効果が得られます。

概要

CSSで透明度が変化するアニメーションを実装するには、transition プロパティを利用します。transitionプロパティはCSS3のため、ベンダープレフィックスの記述が必要になります。Chrom, Safari用の"-webkit-transition", FireFox用の"-moz-transition", Internet Explorer用の"-ms-transition", Opera用の"-o-transition" をそれぞれ記述する必要があります。
最新のWebブラウザ(Internet Explorer 11, Microsoft Edge)であれば、ベンダープレフィックスの記述の無い"transition"プロパティで動作します。
補足
キーフレームを利用したフェードイン表示の実装はこちらの記事を参照して下さい。

書式

transition: all [変化時間];
[変化時間]にはアニメーションで変化する時間を指定します。

下記の例は3秒かけてアニメーションします。
 transition: all 3s;

プログラム

コード

下記のHTMLファイルを作成します。

fade.html

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <link rel="stylesheet" href="fade.css" />
	<meta charset="utf-8" />
    <script type="text/javascript">
        function FadeOutLinkClick() {
            var frame = document.getElementById("FadeOutDivFrame");
            frame.className = "FadeOutFrame fadeout";
        }
        function FadeInLinkClick() {
          var frame = document.getElementById("FadeInDivFrame");
          frame.className = "FadeInFrame fadein";
        }
    </script>
</head>
<body>
  <div id="FadeOutDivFrame" class="FadeOutFrame">枠です。</div>
  <a id="fadeout" href="javascript:void(0);" onclick="FadeOutLinkClick();">フェードアウト</a>
  <hr/>
  <div id="FadeInDivFrame" class="FadeInFrame">枠です。</div>
  <a id="fadeout" href="javascript:void(0);" onclick="FadeInLinkClick();">フェードイン</a>
</body>
</html>

fade.css

.FadeOutFrame {
    width: 320px;
    height: 180px;
    background-color: #abffe8;
    border: 1px solid #0067aa;
    opacity: 1;
}

.FadeOutFrame.fadeout{
  -webkit-transition: all 1.5s;
  -moz-transition: all 1.5s;
  -ms-transition: all 1.5s;
  -o-transition: all 1.5s;
  transition: all 1.5s;
  opacity: 0;
}

.FadeInFrame {
    width: 320px;
    height: 180px;
    background-color: #ffd3d3;
    border: 1px solid #b50042;
    opacity: 0;
}

.FadeInFrame.fadein{
  -webkit-transition: all 1.5s;
  -moz-transition: all 1.5s;
  -ms-transition: all 1.5s;
  -o-transition: all 1.5s;
  transition: all 1.5s;
  opacity: 1;
}

解説

[フェードアウト]のリンクがクリックされると、"FadeOutDivFrame"枠のクラスを、"FadeOutFrame"から"FadeOutFrame fadeout"に変更します。"FadeOutFrame fadeout"はtransitionプロパティと、opacity: 0;が設定されているため、transitionプロパティに設定された秒数でopacity: 0;(透明)にアニメーションします。
[フェードイン]のリンクがクリックされた場合も同様に、"FadeInDivFrame"枠のクラスを、"FadeInFrame"から"FadeInFrame fadein"に変更します。transitionプロパティに設定された秒数で、opacity: 1;(不透明)にアニメーションします。

表示結果

上記のHTMLファイルをWebブラウザで表示します。下図の画面が表示されます。


[フェードアウト]リンクをクリックすると、表示されている枠の透明度が上がり、フェードアウトします。


枠が非表示になります。


下部の[フェードイン]リンクをクリックします。枠の透明度が下がり、枠がフェードインします。


枠が表示されます。


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2020-05-31
作成日: 2016-10-13
iPentec all rights reserverd.