コンテンツにスキップ

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. ステップ・バイ・ステップ解説

  1. 親(コンテナ)を用意: 要素を溜めておきたい箱(ul, div など)にIDを付けます。
  2. 挿入場所の指定: hx-swap="afterbegin" を指定します。
  3. サーバーの応答: サーバーは、新しく追加したい「一要素分のHTML(例:<li>新着</li>)」だけを返せばOKです。

比較:beforebegin vs afterbegin(内か外か)

beforebegin(外のすぐ上)

  • イメージ: レジに並んでいる人の「前」に割り込む。
  • 構造: <div> ターゲット </div> の「上」に出る。

afterbegin(内のすぐ上)

  • イメージ: 筆箱の蓋を開けて、一番「上」に鉛筆を置く。
  • 構造: <div> ここに挿入される </div>

まとめ:初心者のための「最新」の目立たせ方

afterbegin は、ユーザーに「今、何かが起きた!」という新鮮な驚きを与えるための属性です。

  • 最新こそ正義: 新しい情報を上に持ってくることは、スクロールの手間を省き、ユーザーの視線を即座に奪う賢いデザインです。
  • サーバーの応答は「パーツ」で: リスト全体を送り直す必要はありません。増えた一個分だけを送る。この「差分更新」こそがHTMXの美しさです。
  • アニメーションの魔法: 新しく挿入された要素が「スルッと現れる」ようなCSSアニメーション(087.解説予定)と組み合わせると、アプリの高級感が一気に増します。

リストの頂上を、常に最新の話題で。afterbegin を使いこなして、止まることのない、活気あるWebアプリを実現してください。次の記事では、逆にターゲットの内側の「一番最後」に付け足す「beforeend」(070. beforeend)をご紹介します。