CSSアニメーション終了時に最初の状態に戻らないようにする - CSS
CSSアニメーション終了時に最初の状態に戻らないようにする方法を紹介します。
概要
CSSアニメーション終了時に最初の状態に戻らないようにするためには、CSSのanimation-fill-modeプロパティに
forwards
を設定します。
書式
animation-fill-mode: forwards;
プログラム例1:translateコマンドの例
コード
下記HTMLファイルとCSSファイルを作成します。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link rel="stylesheet" href="AnimationFillMode01.css" />
<script type="text/javascript">
function onButtonClick() {
var elem = document.getElementById('char01');
elem.classList.add("charmove");
}
</script>
</head>
<body>
<div class="Field">
<img id="char01" class="charimg" src="char.svg" />
</div>
<button onclick="onButtonClick();">Start</button>
</body>
</html>
body {
background-color: #F0F0F0;
}
.Field {
background-color: #FFFFFF;
border: 1px solid #808080;
width: 760px;
height: 320px;
margin: 2rem 2rem 2rem 2rem;
}
.charimg {
width: 120px;
}
.charimg.charmove {
animation: moveframe 2s linear;
animation-fill-mode:forwards;
}
@keyframes moveframe {
0% {
transform: translateX(0px);
}
100% {
transform: translateX(640px);
}
}
解説
コードの大部分は
こちらの記事で紹介している要素を右に移動させるアニメーションです。
.charimg.charmove
クラスに
animation-fill-mode:forwards;
が指定されているため、アニメーション終了後にアニメーション前の状態には戻らない動作になります。
表示結果
上記のHTMLファイルをWebブラウザで表示します。下図のページが表示されます。
[Start]ボタンをクリックします。画像が右側に移動するアニメーションが開始します。
右側まで移動しアニメーションが終了します。アニメーションが終了すると、最後の状態の表示となります。
プログラム例2:rotateコマンドの例
コード
下記HTMLファイルとCSSファイルを作成します。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link rel="stylesheet" href="AnimationFillMode02.css" />
<script type="text/javascript">
function onButtonClick() {
var elem = document.getElementById('char01');
elem.classList.add("charmove");
}
</script>
</head>
<body>
<div class="Field">
<img id="char01" class="charimg" src="char.svg" />
</div>
<button onclick="onButtonClick();">Start</button>
</body>
</html>
body {
background-color:#F0F0F0;
}
.Field {
background-color:#FFFFFF;
border: 1px solid #808080;
width:600px;
height:280px;
margin: 2rem 2rem 2rem 2rem;
}
.charimg {
width:120px;
}
.charimg.charmove {
animation: moveframe 2s linear;
animation-fill-mode: forwards;
}
@keyframes moveframe {
0% {
transform: rotateZ(0deg);
}
100% {
transform: rotateZ(180deg);
}
}
解説
コードの大部分は
こちらの記事で紹介している要素を右に移動させるアニメーションです。
.charimg.charmove
クラスに
animation-fill-mode:forwards;
が指定されているため、アニメーション終了後にアニメーション前の状態には戻らない動作になります。
表示結果
上記のHTMLファイルをWebブラウザで表示します。下図のページが表示されます。
[Start]ボタンをクリックします。画像が回転し始めます。
180度回転するとアニメーションが終了します。画面の表示はアニメーション終了時点のままとなります。
プログラム例3:scaleコマンドの例
コード
下記HTMLファイルとCSSファイルを作成します。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link rel="stylesheet" href="AnimationFillMode03.css" />
<script type="text/javascript">
function onButtonClick() {
var elem = document.getElementById('char01');
elem.classList.add("charmove");
}
</script>
</head>
<body>
<div class="Field">
<img id="char01" class="charimg" src="char.svg" />
</div>
<button onclick="onButtonClick();">Start</button>
</body>
</html>
body {
background-color:#F0F0F0;
}
.Field {
background-color:#FFFFFF;
border: 1px solid #808080;
width:600px;
height:280px;
margin: 2rem 2rem 2rem 2rem;
}
.charimg {
width:240px;
}
.charimg.charmove {
animation: moveframe 2s linear;
animation-fill-mode: forwards;
}
@keyframes moveframe {
0% {
transform: scale(100%);
}
100% {
transform: scale(10%);
}
}
解説
コードの大部分は
こちらの記事で紹介している要素を右に移動させるアニメーションです。
.charimg.charmove
クラスに
animation-fill-mode:forwards;
が指定されているため、
アニメーション終了後にアニメーション前の状態には戻らない動作になります。
表示結果
上記のHTMLファイルをWebブラウザで表示します。下図のページが表示されます。
[Start]ボタンをクリックすると縮小アニメーションが始まります。
アニメーションが止まると、縮小された表示の状態のままとなります。
animation-fill-mode:forwards;
により、アニメーション終了時に最初の状態に戻らない設定にできました。
著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。