角度回転で X に変形するメニューボタン

UI コンポーネント Medium #js #hamburger #rotate #nav

これはハンバーガーメニューの3本線が、上下の線を逆方向へ約45度回転させて X マークに変形するメニューボタンです。中央の線は左へスライドしながら消えます。状態は aria-pressed 属性で管理し、クリックのたびに true と false を切り替えます。

▶ プレビュー

解説

これはハンバーガーメニューの3本線が、上下の線を逆方向へ約45度回転させて X マークに変形するメニューボタンです。中央の線は左へスライドしながら消えます。状態は aria-pressed 属性で管理し、クリックのたびに true と false を切り替えます。CSSの transitioncubic-bezier のイージングを指定しているため、線の回転と消失がなめらかに連動します。JavaScript は属性を切り替えるだけのごく短い記述です。

使う場面

  • スマホ・タブレットのナビゲーション開閉ボタン
  • サイドメニューやドロワーのトリガー
  • 開閉状態を視覚的にはっきり示したいヘッダー

変形は [aria-pressed="true"] 状態の transform で制御しており、回転角度や移動量を変えれば挙動を調整できます。ボタンの色や角丸は .mb-rot で変更可能です。状態管理に aria-pressed を使っているのが要点で、押されているかどうかがスクリーンリーダーにも伝わります。実際にメニューを開閉する際は、対象メニューの表示切り替え処理を別途つなぐ必要があります。

使用例・適したシーン

  • お問い合わせフォームの送信ボタン
  • 資料ダウンロードの CTA
  • ヒーローセクションの主要 CTA
  • サブスク・申込ボタン

よくある質問

開閉の状態はどう管理していますか?
ボタンの aria-pressed 属性で管理しています。クリックのたびに true と false を切り替え、その値に応じて CSS が線の変形を行います。アクセシビリティ的にも状態が伝わる仕組みです。
このボタンで実際にメニューも開きますか?
このスニペットはアイコンの変形アニメーションが対象です。実際のメニュー表示・非表示は、aria-pressed の値に合わせてナビゲーション要素を開閉する処理を追加してつなぎます。
追加日:2026-05-12
← すべてのスニペットへ戻る