株式会社グローバルゲート公式ブログ
こんにちは。グローバルゲート制作部のモーリーです。
9月いっぱいで主要な都道府県の緊急事態宣言が解除となりました。
…と言っても当社の事業は幸いにして緊急事態宣言時でも特に影響がなく、10月以降も何か変わることはありません。
Zoomなどによるオンライン相談は引き続き行っていきますので、当社へのご用命はメール・電話・ご訪問・ご来訪などご希望の方法をお選びください。
さて、今回はCSSアニメーションでイージングを指定するanimation-timing-function、transition-timing-functionの中で使える指定「steps」を使ったコマ送り風アニメーションの作成についてご紹介したいと思います。
このプロパティはCSSアニメーションのイージングを指定するものです。
「ease」「linear」といったキーワードによる指定のほか、「cubic-bezier」でベジエ曲線の計算式を指定することで自由なイージングを指定することができます。
animation-timing-function: ease-in;
animation-timing-function: linear;
animation-timing-function: cubic-bezier(0.1, 0.7, 1.0, 0.1);
イージングについては過去の記事もご覧ください。
このプロパティは「steps」という指定を行うことができ、通常は連続したなめらかな動きとなるCSSアニメーションを段階的なコマ送りのアニメーションとすることができます。
以下のように、animation-timing-function、transition-timing-functionにstepsという関数を指定します。
引数として分割数です。オプションは必要がなければ指定しなくてもかまいません。
animation-timing-function: steps(分割数,オプション);
MDNの説明だと次のようになっていますが、オプションは開始点・終了点を含めるかどうかを指定するということになります。
遷移に沿った n 個の停止点に沿ってアニメーションを表示し、それぞれの停止点を同じ時間の長さで表示します。例えば、 n が 5 の場合、5つの段階があります。アニメーションが停止する点は、以下の jumpterm によって、アメーションに沿って 0%, 20%, 40%, 60%, 80% となるか、 20%, 40%, 60%, 80%, 100% となるか、アニメーションの 0% と 100% の間で5つの停止点を設定するか、 0% と 100% を含む5つの停止点を設定するか (すなわち 0%, 25%, 50%, 75%, 100%)、の何れかを使用します。
説明だけ読んでも理解しにくいと思いますので、実際に動くものをつくって見ていきましょう。
実際のコードや動きはGithubのレポジトリをご覧ください。
1枚の画像をtransform: scaleX(1)とscaleX(-1)を繰り返すことでコミカルなアニメーションを実現します。
stepsを使わないで書いた場合、scaleX(1)とscaleX(-1)はなめらかに遷移しますので、画像が回転しているように見えます(それはそれで使うこともある効果です)
.dance {
animation: dance 0.6s steps(1) infinite;
}
@keyframes dance {
0% {
transform: scaleX(1);
}
50% {
transform: scaleX(-1);
}
100% {
transform: scaleX(1);
}
}
アニメーションをbackground-positionに適用し、なめらかな遷移でなくstepsを使うことで1枚の画像でコマ送りのようなアニメーションを実現することができます。
背景画像を1枚にまとめて位置をずらして用いる方法はCSSスプライトと呼ばれますが、このCSSスプライトのアニメーション版のようなものです。
.splice {
width: 200px;
height: 400px;
animation: splice 2s steps(1) infinite;
background: url(img/splice.jpg) no-repeat 0 0;
background-size: 600px auto;
}
@keyframes splice {
0% {
background-position: 0 0;
}
33.33% {
background-position: -200px 0;
}
66.66% {
background-position: -400px 0;
}
}
CSSアニメーションはインパクトのあるWebサイトづくりには欠かせないものですが、ときにわずらわしさやうっとうしさを感じることもあります。アプリケーションやデバイスによってはアニメーションを無効にするオプションがあったりしますが、そのアニメーション無効オプションをstepsによって実現します。
アニメーションを無効にするということはつまり中間地点を飛ばしてアニメーション完了時点に飛ばすことと同じです。
つまりキング・クリムゾン
ということは、steps(1)でアニメーションを実行し、transition-delay、animation-dealyを0sとすればタイムラグなしでアニメーション完了時にたどり着きます。
$('.btn-showcat').on('click', function () {
var $img = $('.catimg')
$img.removeClass('showcat');
setTimeout(function () {
$img.addClass('showcat');
}, 100)
return false;
})
$('#useAnimation').on('change', function () {
var $img = $('.catimg');
if ($(this).is(':checked')) {
$img.css({
'transition-timing-function': 'steps(1)',
'transition-delay': '0s'
})
} else {
$img.css({
'transition-timing-function': '',
'transition-delay': ''
})
}
})
ということで、今回はCSSアニメーションの中でもstepsを使用した表現を紹介しました。
当社では様々な表現技法を駆使したWebサイトの制作から自社開発のCMS「WebChanger」の組み込みからサーバー・ドメインの管理まで、Webサイトに必要なものすべてを一貫してご提供しています。
緊急事態宣言解除後のビジネスチャンスや業態変更に備えて、ぜひWebサイトの見直しもご検討ください。
【関連記事】
カテゴリー
月別アーカイブ
ブログ内検索
執筆メンバーについて
モーリー
Webデザイナー。
当サイトのデザインと管理も担当しています。
ナミー
Webディレクター。
本社制作部の紅一点。お客様に寄り添った提案を心かげています。
タカ
サーバーエンジニア。
Webサイトにとってサーバーは命、ネットワークは血液です。Webサイトの安定稼働のために日夜注力しています。
たっくん
ITアドバイザー
Webサイトの活用方法からオフィスのネットワーク整備まで、多角的にITの活用方法をご案内させていただきます。
ノーさん
制作部ディレクター。
業種を問わず多くのお客様を担当させていただきました。Webサイトのお悩み、活用方法などぜひご相談ください。
カン
制作部デザイナー。
制作部最年少の若手ですが、だからこそ生まれるアイデア・発想にご期待ください。
当社サービスについてのお問い合わせは下記までご連絡下さい。
06-6121-7581 / 03-6415-8161