ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
animation-direction とは
animation-direction は CSS の アニメーション プロパティ群の 1 つで、CSS アニメーションの再生方向を制御します。@keyframes で定義したキーフレーム列を、そのまま流すのか、逆向きに流すのか、往復させるのか、を 1 つのプロパティで切り替えられます。
構文
.box {
animation-name: slide;
animation-duration: 2s;
animation-iteration-count: infinite;
animation-direction: alternate; /* ← ここ */
}
ショートハンド animation でまとめて書く場合は次の通り。direction は他のプロパティ値と区別可能な値(キーワード)なので、順番は柔軟です。
.box {
animation: slide 2s infinite alternate;
}
値(プロパティの取りうる値)
| 値 | 意味 | 1ループの流れ(@keyframes が 0% → 100% の場合) |
|---|---|---|
normal | 正方向に再生(初期値) | 0% → 100%、0% → 100%、… |
reverse | 逆方向に再生 | 100% → 0%、100% → 0%、… |
alternate | 1 回ごとに方向を反転(往復) | 0% → 100% → 0% → 100% → 0% … |
alternate-reverse | 最初に逆方向で開始し、以後反転 | 100% → 0% → 100% → 0% … |
具体例: 横スライド
左右に往復するシンプルな例です。animation-iteration-count: infinite と alternate を組み合わせるのが、もっとも頻出のパターンです。
<div class="box"></div>
<style>
.box {
width: 60px;
height: 60px;
background: #4f8cff;
animation-name: slide;
animation-duration: 2s;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-timing-function: ease-in-out;
}
@keyframes slide {
from { transform: translateX(0); }
to { transform: translateX(200px); }
}
</style>
上の例で animation-direction を切り替えると、見え方は次のように変わります。
| direction | 見え方 |
|---|---|
normal | 左から右に動き、瞬間的に左に戻ってまた右へ(パッと戻る挙動) |
reverse | 右から左に動き、瞬間的に右に戻る |
alternate | 左 → 右 → 左 → 右 ... なめらかな往復 |
alternate-reverse | 右 → 左 → 右 → 左 ... 反対端からスタートの往復 |
複数アニメーションへの個別指定
1 つの要素に複数のアニメーションを設定している場合、animation-name と同じ順番にカンマ区切りで方向を並べると、それぞれ別の方向で再生できます。
.box {
animation-name: slide, fade;
animation-duration: 2s, 3s;
animation-iteration-count: infinite, infinite;
animation-direction: alternate, reverse;
}
timing-function との関係
animation-direction は進行方向のみを変えるプロパティで、animation-timing-function(イージング)は各ループ内の速度カーブを決めます。reverse の場合、ease-in は再生されるとき「終端側ほど速い」見え方になるため、往復モーションを作るときは alternate + ease-in-out がもっとも自然な動きになります。
fill-mode との関係
アニメーション開始前 / 終了後にどの状態を保持するかは animation-fill-mode で別途決まります。reverse や alternate-reverse を使うとき、停止後の見え方が直感に反することがあるので、停止状態を固定したい場合は animation-fill-mode: both も併用するのが安全です。
ブラウザ対応とベンダープレフィックス
現代の主要ブラウザ(Chrome / Edge / Firefox / Safari)は animation-direction をプレフィックス無しでサポートしています。古い Safari / iOS Safari 互換が必要な場合のみ -webkit-animation-direction を追加します。
よくある勘違い
animation-directionは@keyframes内では指定できない。あくまで「再生方向」を要素側で決めるalternateは奇数回が正方向、偶数回が逆方向。animation-iteration-countが1だと反転は起こらず正方向のみdirection(書字方向)プロパティとは無関係。プロパティ名が紛らわしいので注意
JavaScript からの動的切り替え
UI の状態に合わせて方向を切り替えたい場合は、JavaScript からインラインスタイルや CSS 変数で操作するのが定番です。
.box {
--dir: normal;
animation: slide 2s infinite var(--dir);
}const box = document.querySelector('.box');
document.getElementById('toggle').addEventListener('click', () => {
const cur = getComputedStyle(box).getPropertyValue('--dir').trim();
box.style.setProperty('--dir', cur === 'normal' ? 'reverse' : 'normal');
});
CSS 変数を切り替えるとアニメーションは再起動されないので、現在のフレーム位置からシームレスに方向が切り替わって見えます(厳密にはブラウザ実装に依存)。
prefers-reduced-motion との組み合わせ
アクセシビリティの観点から、ユーザが「動きを減らす」設定にしている場合はアニメーションを止めるのが推奨です。
@media (prefers-reduced-motion: reduce) {
.box {
animation: none;
}
}
関連
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?