seilog-ger
[ URL:seilog.org ] Writtern by Seiji Nakamura

2020/11/12 (更新日:2021/5/13)

ナビを階層にして、cssとhoverを使って必要なナビを表示する

階層ナビ

 沢山の項目を的確に参照できるナビメニューを作りたい時はありませんか?

 ここでは、多くのメニューを分類して階層化して、必要な時に必要なメニューを参照できる構造のナビメニューの作り方を説明します。
 3つの大分類、3つの中分類、2つ以上の小分類のナビメニューの構成を課題とします。
 色々な場面でご活用ください。

  ■もくじ
   1. cssでナビの階層を決める
   2.ナビの大分類メニューをhoverすると小中分類メニューがcssで表示される
   3.ナビの全部のメニューをcss・hoverで表示する 
   4.ナビをhoverした時にナビメニューをドロップダウンにより表示する【参考】 
   5.まとめ

ナビを階層にして、cssとhoverを使って必要なナビを表示する

by geralt pixabay

1. cssでナビの階層を決める

 (1) cssで作るナビの階層

 沢山のナビメニュー(案内機能)を設定するには、内容に応じて分類し階層化する方法が考えられます。
 ここでは、大分類メニューから中分類メニューにそして最終的には小分類メニューで目的のナビ:aタグを選択出来る階層を検討します。
 大分類メニュー:3項目 ⇒ 中分類メニュー:3項目/大分類
 ⇒ 小分類メニュー:(通常のaタグ数件、:重要なaタグ1件)/中分類

 大分類:「Menu-ko1」のナビメニューを表示します。
 複雑なので、分類の領域が解りやすいように、色を付けて表示します。
 最終的に、小分類メニュー:Childko1~Childko6のaタグを選択すると求めている情報を参照できるナビです。

    *HTML,CSS,Result,1×,0.5×で表示が変わります.

See the Pen accordion_display1 by Seiji Nakamura (@sjnkmr_777) on CodePen.

 (2)ナビの階層を作る注目ポイント

  ●中分類階層のナビの位置を決めるcss

 .konav li { position : relative ; }     :大分類を基準にします。
 #box1 {  }
 #box2 { position : absolute ; top : 2rem ; left : 100% ; }
 #box3 { position : absolute ; top : 2rem ; left : 200% }


 :基準に対して中分類の位置を決めています。

  ●小分類階層のナビのフォーマットを作るcss

 .boxa { padding : 0.5rem ; }
 .boxb { padding : 0.5rem ; }
 .boxc { padding : 0.5rem ; }
 .boxb li a { text-align : left ; }
 .boxc li a { text-align : left ; }


 :小分類は、classを使って、共通のフォーマットになる様に決めています。

2. ナビの大分類メニューをhoverすると小中分類メニューがcssで表示される

 (1)ナビをhoverして表示する方法

 初期状態では、ナビメニューは大分類メニューのみが表示されています。
 大分類メニューの上にポインターを移動すると、対応している中分類メニューと小分類メニューが表示されます。
 表示されている間に、小分類メニューのaタグを選択すると目的の案内を見ることが出来ます。
 一方、ポインターを全メニューの上から外すと、表示されていた中分類メニュー・小分類メニューは消えてしまいます。

 【Menu-ko1】の場合 *Menu-ko1をhoverしてください

See the Pen accordion_display3 by Seiji Nakamura (@sjnkmr_777) on CodePen.

 (2)ナビをhoverして表示する時の注目ポイント

  ●ナビメニューの階層の初期状態

 #box1 { display : none ; }
 #box2 { display : none ; }
 #box3 { display : none ; }


:中分類・小分類は表示しません。

  ●ナビメニューの大分類階層上にポインターを移動した時

$(function() {
  //マウスを乗せたら発動
 /* id="menu1"を設定して Menu-ko1のみで動作する様にした。 */
  
  $('#menu1').hover(function() {
    $('#box1').css('display', 'block');
    $('#box2').css('display', 'block');
    $('#box3').css('display', 'block');

  //ここにはマウスを離したときの動作を記述
  }, function() {
    $('#box1').css('display', 'none');
    $('#box2').css('display', 'none');
    $('#box3').css('display', 'none');    
  });
});

 :jQueryを使って、大分類メニュー【Menu-ko1】にhoverした時に、中分類メニュー#box1,#box2,#box3を表示します。
 一方、hoverを外した時は、再度中分類メニュー#box1,#box2,#box3の表示を消します。

3.ナビの全部のメニューをcss・hoverで表示する

 (1)他のナビメニューの大分類にもhoverを適用する

 【Menu-ko1】と同様に、【Menu-ko1】【Menu-ko1】についてもhoverにより、それぞれ専用の中分類・小分類メニューを表示できるようにします。

  *Menu-ko1,Menu-ko2,Menu-ko3をhoverしてください

See the Pen accordion_display4 by Seiji Nakamura (@sjnkmr_777) on CodePen.

 (2) ナビメニューの全部のメニューをcss・hoverで表示される時の注目ポイント

 #box4 { position : absolute ; top : 2rem ; left : -100% }
 #box5 { position : absolute ; top : 2rem ;; }
 #box6 { position : absolute ; top : 2rem ; left : 100% }


 :Menu-ko2を基準に中分類の位置を決めています。

 #box7 { position : absolute ; top : 2rem ; left : -100% }
 #box8 { position : absolute ; top : 2rem ;; }
 #box9 { position : absolute ; top : 2rem ; left : 100% }


 :Menu-ko3を基準に中分類の位置を決めています。

4.ナビをhoverした時にナビメニューをドロップダウンにより表示する【参考】

 (1)Hoverの時に、cssだけでナビメニューをドロップダウン表示する例

 色々なドロップダウンの表し方がありますので、希望に合わせて修正をしてください。
 ここでは、【Menu-ko1】のドロップダウン表示を参照ください。

 *Menu-ko1をhoverしてください

See the Pen accordion_dropdown by Seiji Nakamura (@sjnkmr_777) on CodePen.

 (2)hoverの時にナビメニューをドロップダウン表示する時の注目ポイント      

  ●ナビメニューの階層の初期状態

 :中分類・小分類は表示しません。

 以前
 #box1 { display : none ; }
 #box2 { display : none ; }
 #box3 { display : none ; }

今回
#box1{ height : 0 ; overflow : hidden ; transition : 0.5s ; }
#box2{ height : 0 ; overflow : hidden ; transition : 0.5s ; }
#box3{ height : 0 ; overflow : hidden ; transition : 0.5s ; }
.boxa { height : 0 ; overflow : hidden ; transition : 0.5s ; }
.boxb { height : 0 ; overflow : hidden ; transition : 0.5s ; }

  ●ナビメニューの大分類階層上にポインターを移動した時

 :hoverした時に、上記の中分類・小分類メニューがドロップダウンして表示されます。

 ‘cssに追加
 #konav > li : hover #box1 { height : 21rem ; overflow : visible ; }
 #konav > li : hover #box2 { height : 21rem ; overflow : visible ; }
 #konav > li : hover #box3 { height : 21rem ; overflow : visible ; }
 #konav > li : hover .boxa { height : 2rem ; overflow : visible ; }
 #konav > li : hover .boxb { height : 12.5rem ; overflow : visible ; }

 ‘jsを削除
 jQueryで作成した部分は全て削除します。

5.まとめ

 階層のナビを参照しながら使える様に、少しでも実務の参考になればと説明してきました。
 皆様の業務に活用していってくださることを切に望みます。

 *最後まで読んでいただきありがとうございます。
 舌足らずで説明不足の所はお許しください。
 また、真面目に記載していますが保証はできませんことご了承ください。

 Copyright–Seiji Nakamura, 2020 All Rights Reserved.

関連記事