LoginSignup
1
0

More than 3 years have passed since last update.

ウェブサイト作成用備忘録・1号:background-image の疑似アニメーション制御その1

Last updated at Posted at 2020-07-31

日々の学習のアウトプットの為、自主学習の際に工夫した内容を記録していきます。

今回は background-image プロパティの疑似アニメーション制御について

background-image プロパティは transition プロパティや animation プロパティ等のアニメーション制御には対応していません。

そこで、自分なりに試行錯誤することで、疑似的なアニメーション制御に成功したので、その方法などを記録していきます。

方法1:JavaScript の動的制御で画面を暗転させ、background-image を変更してから setTimeout() メソッドで画面の暗転を解除する

記述例

HTML

<html>
  <body id="background" class="">
    <div id="hide_screen" class="none"></div>
    <button id="change_screen" class="" type="button">背景変更</button>
  </body>
</html>

CSS

body {
  margin: 0;
}

#hide_screen {
  min-height: 100%;
  min-width: 100%;
  background-color: #000;
  position: fixed;
  z-index: 2;
  transition: all .5s;
  -webkit-transition: all .5s;
}

#hide_screen.none {
  opacity: 0;
  pointer-events: none;
}

#background {
  background-image: url(背景画像1)
}

#background.change {
  background-image: url(背景画像2)
}

#change_screen {
  display: relative;
}

javascript

jQuery(document).ready(function(){

  $("#change_screen").click(function(){
    $("#hide_screen").removeClass("none");
    setTimeout(function(){
      $("#background").toggleClass("change");  
    },1000);
    setTimeout(function(){
      $("#hide_screen").addClass("none");
    },1000);
  });

});

解説

1・背景色を黒に設定した空の div タグで画面全体を覆い隠す。

2・予めクラス none を設定し、透過処理の初期設定を行う。

3・背景変更ボタンをクリックすると、none クラスが解除され、画面全体が暗転する。

4・次に、setTimeout() で、最初に背景変更ボタンを押してから1秒後に toggleClass メソッドで body タグの change クラスを切り替え、画面暗転後に背景画像を変更する。

5・最後に setTimeout() で最初に背景変更ボタンを押してから2秒後に再び none クラスが追加され、画面の暗転が解除される。

今回はこれで以上になります。

あくまで自分用の備忘録ですが、他の方の参考になれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0