088. CSS Transitions(CSSとの連携:名前の「付け替え」で魔法を発動させる)
原理:HTMXが舞台装置を切り替える
自分でクラスを足す必要はない
通常、JavaScriptでアニメーションさせようと思うと、「ボタンが押されたら……この要素に fade-out クラスを足して、数秒後に削除して……」といった、細かい手順をプログラムで書かなければなりません。
HTMXとCSSの連携における最大の魅力は、「HTMXが面倒なクラスの付け外しをすべて自動でやってくれる」点にあります。私たちはただ、その「決まったクラス名」に対して、あらかじめCSSでスタイルを用意しておくだけいいのです。
これは、プログラミングというよりは、「演劇の舞台に用意された照明スイッチを、HTMXが適切なタイミングでポチポチと押してくれる」ようなイメージです。
実践:新しい要素が「現れる」演出を作る
1. 到着したHTMLに命を吹き込む(htmx-added)
サーバーから届いた新しいリスト項目が、最初は透明で、配置されたあとにフワッと浮き上がってくる演出の例です。
<style>
/* 1. 届いた直後の、まだ見えない状態 */
.fade-in.htmx-added {
opacity: 0;
transform: translateY(10px);
}
/* 2. 配置(Settle)が終わったあとの、最終的な姿 */
.fade-in {
opacity: 1;
transform: translateY(0);
transition: all 0.5s ease-in-out;
}
</style>
<!-- サーバーが返すHTML -->
<div class="fade-in">
新しいニュースが届きました!
</div>
2. 複数のクラスの組み合わせ
.htmx-swapping と組み合わせれば「古い人が消えながら」、.htmx-added と組み合わせれば「新しい人が現れる」という、完璧に同期した切り替えアニメーションが、CSSだけで記述できます。
3. ステップ・バイ・ステップ解説
- CSSで「変化前」と「変化後」を書く:
htmx-addedやhtmx-settlingの状態を定義します。 - transition プロパティを指定: どれくらいの時間をかけて変化させるか(例:
0.3s)を忘れずに書きます。 - HTMXをいつも通り動かす: 属性は
hx-getやhx-targetなど、普通のままでOKです。HTMXが勝手にクラスを使い分けてくれます。
比較:CSS Transitions vs アニメーション・ライブラリ
CSS Transitions (HTMX標準)
- 手軽さ: ◎(CSSを書くだけ)。
- 軽さ: ◎(ブラウザが直接動かすのでとても速い)。
- 自由度: △(CSSでできる範囲に限られる)。
アニメーション・ライブラリ (GSAP, Framer Motionなど)
- 手軽さ: △(JSコードの記述が必要)。
- 軽さ: ○(JSの実行コストがかかる)。
- 自由度: ◎(複雑な動き、3Dなども可能)。
まとめ:初心者のための「クラス名」の活用法
HTMXとCSSの連携は、最もコストパフォーマンスの高い「UX向上」のテクニックです。
- 「htmx-added」を使い倒す: 何かを追加する機能があるなら、とりあえず
.htmx-addedに透明度のアニメーションを付けておきましょう。それだけで「手作り感」が消え、プロっぽさが出てきます。 - デバッガーで確認する: 開発者ツール(F12)で要素をじっと見ていると、一瞬だけクラスが変わる様子がわかります。それを見ながら微調整するのが上達の近道です。
- 標準を信じる: HTMXはHTMLの標準的な仕組み(DOMの変更)を極めて丁寧に扱います。そのため、一度しっかりCSSを学習すれば、それはHTMX以外でも一生使える武器になります。
CSSという古くからの友人を、HTMXという新しい相棒で活かす。クラス名の自動切り替えというシンプルな仕組みを使って、誰にとってもワクワクする、表情豊かなWebアプリをデザインしてください。次の記事では、Google Chromeなどの最新ブラウザがサポートする次世代の画面遷移「View Transitions API(089. View Transitions API)」をご紹介します。