069. afterbegin(先頭に挿入:ターゲットの内側の「一番上」に忍ばせる)
原理:箱を開けて、一番上に置く
リストの「先頭」に追加する技術
「afterbegin(アフター・ビギン)」は、ターゲットとなる要素(箱)の「内側」に入ってすぐ、つまり一番最初の子要素として、新しいHTMLを差し込む方法です。
前回の beforebegin が「箱の外」に置くものだったのに対し、こちらは「箱の中」に置きます。
これが最も活躍するのは、間違いなく「リストの先頭に新しい項目を追加する」シーンです。
SNSのタイムラインや、新着メール一覧など、新しいものほど上にくるデザインを作るとき、これ以上ないほど心強い武器になります。
実践:タイムラインをリアルタイムに盛り上げる
1. チャットや投稿の「最新順」表示
投稿ボタンを押したあと、リストの末尾ではなく一番上にサッと表示させる例です。
<!--
hx-target: #message-list (ul要素)
hx-swap: afterbegin (ulの「中」の「一番上」に足す)
-->
<form hx-post="/api/post-message"
hx-target="#message-list"
hx-swap="afterbegin">
<input type="text" name="msg">
<button type="submit">投稿</button>
</form>
<ul id="message-list">
<!-- 新しい投稿はここ(内側の先頭)にどんどん積み重なります -->
<li>[12:05] こんにちは!</li>
<li>[12:00] 最初の投稿です。</li>
</ul>
2. コンテナの「中」という安心感
afterbegin はターゲットの内側に配置されるため、親要素に設定されたスタイル(背景色、フォント、枠線など)を自動的に引き継ぎます。デザインが崩れにくく、非常に扱いやすいのが特徴です。
3. ステップ・バイ・ステップ解説
- 親(コンテナ)を用意: 要素を溜めておきたい箱(
ul,divなど)にIDを付けます。 - 挿入場所の指定:
hx-swap="afterbegin"を指定します。 - サーバーの応答: サーバーは、新しく追加したい「一要素分のHTML(例:
<li>新着</li>)」だけを返せばOKです。
比較:beforebegin vs afterbegin(内か外か)
beforebegin(外のすぐ上)
- イメージ: レジに並んでいる人の「前」に割り込む。
- 構造:
<div>ターゲット</div>の「上」に出る。
afterbegin(内のすぐ上)
- イメージ: 筆箱の蓋を開けて、一番「上」に鉛筆を置く。
- 構造:
<div>ここに挿入される</div>
まとめ:初心者のための「最新」の目立たせ方
afterbegin は、ユーザーに「今、何かが起きた!」という新鮮な驚きを与えるための属性です。
- 最新こそ正義: 新しい情報を上に持ってくることは、スクロールの手間を省き、ユーザーの視線を即座に奪う賢いデザインです。
- サーバーの応答は「パーツ」で: リスト全体を送り直す必要はありません。増えた一個分だけを送る。この「差分更新」こそがHTMXの美しさです。
- アニメーションの魔法: 新しく挿入された要素が「スルッと現れる」ようなCSSアニメーション(087.解説予定)と組み合わせると、アプリの高級感が一気に増します。
リストの頂上を、常に最新の話題で。afterbegin を使いこなして、止まることのない、活気あるWebアプリを実現してください。次の記事では、逆にターゲットの内側の「一番最後」に付け足す「beforeend」(070. beforeend)をご紹介します。