Alpine.jsでの該当箇所以外をクリックしたときの挙動。

この記事は約2分で読めます。

Alpine.jsにて、ハンバーガーメニューを作成。

メニューを開いた後、「メニュー以外の場所をクリックしたらメニューを閉じる」挙動を追加したい場合。

基本的には

@click.away

を追加すればok.

<!-- x-dataで書いたオブジェクトは子要素からアクセス可能、ここではopen状態の値を保持するやつ -->
<div x-data="{ open: false }">
    <!-- @click は onclick の代わりだよ。クリックしたら open=true を代入する(開くよ)  -->
    <button @click="open = true" x-text="open ? '開いてるよ' : 'クリックで開くよ'"></button>

    <!-- x-show は 指定した変数や式が true なら、表示するよ -->
    <span
        x-show="open"
        @click.away="open = false"
        style="border: solid black 1px; padding: 10px;"
    >
        開いたよ。この枠の外をクリックすると、閉じるよ。
    </span>
    <!-- @click.away の .away は「ここ以外を xxしたら(clickしたら)」 の修飾子だよ。 
         「画面外をクリックしたら」でよく使うよね  -->
</div>

Alpine.js 5分で説明するよ

https://qiita.com/kohashi/items/ae8b1186567ec34b2a75

コメント

タイトルとURLをコピーしました