ナビゲーションの種類
「ナビゲーション」と聞いて思い浮かべるナビゲーションのデザインは、いくつあるでしょうか。
-
アコーディオンメニュー
ホバーでぱらぱらっと展開します
-
ハンバーガーメニュー
三本線を押すと脇から出てきます
-
タブメニュー
タブを押すと切り替わります
-
カルーセルメニュー
横方向に並んだバナーを繰れます
-
ドロップダウンメニュー
クリックするとドロッと出てきます
-
メガドロップダウンメニュー
何行にもわたる大きな領域が現れます
-
ポップアップメニュー
画面手前にモーダルが現れます
...と、ほかにもいろいろあります。これからもきっと新たに発明されます。
さて、これからいくつかナビゲーションの作り方をご紹介したいのですが、メニューの基本となる考え方をまずご紹介します。
基本は「表示」と「非表示」の切り替え
メニューの多くは、どこかをクリックしたりホバーしたりした後に、どこからともなく現れます。これをどうやって作るかといえば、
<div> <span>スイッチ</span> </div> <nav> <span>アイテム</span> <span>アイテム</span> <span>アイテム</span> </nav>
というHTMLに対して、次のCSSを当てます。
nav { display: none; }
そうなのです。実は、メニューをあらかじめHTMLに書いたら、それをCSSで隠しておくのです。そして、スイッチを押したら、
nav { display: flex; }
などと、隠しておいたメニューが現れるようにします。(もちろん、displayの値はflexに限りません。)
では、どうやって隠しておいたものをクリックやホバーで現れるようにするか。
クリックの場合は、JavaScriptを使います。jQueryで書くとこうなります。
$('div').click(function(){ $('nav').toggle(); })
スイッチであるdivをクリックすると、そのたびにnavが現れては隠れる(トグル)。これを繰り返します。
ホバーの場合はCSSだけで済みます。
nav { display: none; } div:hover + nav { display: flex; }
スイッチであるdivにホバーしたとき、divの兄弟要素であるnavが現れるようにできます。
基本的にはこれだけです。
レイアウト・アニメーション・アイテム
ナビゲーションのデザインで考えることは、配置や向き、現れ方と隠れ方、項目の整理。大きくはこの3つです。
このうち特に難しいのは、項目の整理だと思います。ナビゲーションによってどのように誘導させたいか決まります。項目が完全に整理されたナビゲーションを作るマニュアルは存在しません。これからもそうでしょう。
配置や向きは、ナビゲーションやその項目の縦や横の並べ方です。画面の右上だったり、ヘッダーのすぐ下だったり、画面最下部だったりを決めることです。
現れ方や隠れ方は、スライド、フェードが多いですが、ちょっとしたエフェクトやアニメーションを付けたナビゲーションもあります。
この3つが異なるために、いろいろな名前のナビゲーションが存在していると私は思います。
「このようなナビゲーションが作りたいけど、作り方がわからない」というアイデアがございましたら、私までぜひご相談ください。
「これしかない」ではなく、「何でも自由に考えていいんだ、何でも自由に作っていいんだ」と思っていただければ、本ページを作った甲斐があります。