グローバルナビゲーション
設定方法
設定方法
グローバルナビゲーションのボタンと要素を追加します。
<button type="button" id="gnav-btn" class="js-gnavSpBtn" aria-label="サイトナビゲーションボタン" aria-controls="gnav" aria-expanded="false"></button>
<nav id="gnav"></nav>オーバーレイに必要な要素を追加します。
<div class="l-overlay js-overlay" aria-hidden="true"></div>グローバルナビゲーションのJavaScript設定をします。
new GlobalNavigation({
button: ".js-gnavSpBtn",
navigation: "#gnav",
closeOnResize: true,
focusTrap: ["#gnav-btn", ".js-gnav-end"],
});
new Overlay({
button: ".js-gnavSpBtn",
overlay: ".js-overlay",
excludeClose: ["#gnav"],
closeOnResize: true,
});オプション
| オプション | 概要 |
|---|---|
| button | トグルボタンのセレクターを指定します。 |
| navigation | グローバルナビゲーションのセレクターを指定します。 |
| closeOnResize | リサイズ時にナビゲーションを閉じるかを指定します。(省略可) |
| excludeClose | クリック無視エリアのセレクター配列を指定します。(省略可) |
| focusTrap | フォーカストラップのセレクターを指定します。(省略可) |
| closeButton | 閉じるボタンのセレクターを指定します。(省略可) |
| activeClass | アクティブ時に付与されるクラス名を指定します。(省略可) |
closeOnResize
型: boolean
デフォルト: false
ウィンドウリサイズ時にナビゲーションを自動的に閉じるかどうかを設定します。レスポンシブデザインでPC表示に切り替わった際に便利です。
new GlobalNavigation({
button: ".js-gnavSpBtn",
navigation: "#gnav",
closeOnResize: true // リサイズ時に自動クローズ
});excludeClose
型: Array
デフォルト: []
クリックイベントを無視するエリアのセレクターを配列で指定します。これらの要素をクリックしてもナビゲーションは閉じません。
new GlobalNavigation({
button: ".js-gnavSpBtn",
navigation: "#gnav",
excludeClose: [".modal", ".dropdown"] // これらをクリックしても閉じない
});focusTrap
型: [string, string]
デフォルト: undefined
フォーカストラップの最初と最後の要素のセレクターをタプルで指定します。アクセシビリティ向上のために、ナビゲーション内でのフォーカス移動を制限します。フォーカストラップオプションを使用するには、事前にフォーカストラップのコードを用意する必要があります。(参考:コンポーネント フォーカストラップ)
new GlobalNavigation({
button: ".js-gnavSpBtn",
navigation: "#gnav",
focusTrap: ["#gnav-btn", ".js-gnav-end"] // フォーカストラップの範囲
});closeButton
型: string
デフォルト: undefined
ナビゲーション内の閉じるボタンのセレクターを指定します。指定した要素をクリックするとナビゲーションが閉じられます。
new GlobalNavigation({
button: ".js-gnavSpBtn",
navigation: "#gnav",
closeButton: ".js-closeBtn" // 閉じるボタンのセレクター
});activeClass
型: string
デフォルト: 'is-active'
アクティブ時に付与されるクラス名を指定します。ボタンとナビゲーション要素の両方に適用されます。
new GlobalNavigation({
button: ".js-gnavSpBtn",
navigation: "#gnav",
activeClass: "is-open" // カスタムアクティブクラス
});完全な設定例
すべてのオプションを使用した完全な設定例:
new GlobalNavigation({
button: ".js-gnavSpBtn", // トグルボタンのセレクター
navigation: "#gnav", // ナビゲーションのセレクター
closeButton: ".js-closeBtn", // 閉じるボタンのセレクター
closeOnResize: true, // リサイズ時に自動クローズ
excludeClose: [".modal"], // クリックを無視するエリア
focusTrap: ["#gnav-btn", ".js-gnav-end"], // フォーカストラップの範囲
activeClass: "is-active" // アクティブクラス名
});dialogタグでグロナビを実装する問題点
グロナビの開閉ボタンが一緒の場合、グロナビを閉じようとした際に、ダイアログより下のレイヤーにあるボタンが押せなくなってしまう問題がある。これは、Top layer(最上位レイヤー)の仕様によるものである。
Top layerを解除したい場合、非モーダルダイアログ(.show()) を使用する必要があるが、::backdropなどの機能が使用できなくなり、dialogとしてのうまみがなくなる。