グローバルナビのサブメニューを左に展開する

先日 Cocoon のフォーラムにて iPad 横表示の状態で 右端に余白ができてしまう 問題が上がっていました 勉強がてら解決方法を考えてみたいと思います

スポンサーリンク

原因はサブメニュー

問題の原因は グローバルナビの右端で使用しているサブメニューっぽいです 普段は隠れているのですが 隠れていても表示幅が確保 されている様な状態です

であれば 右側に確保せず いっそ右端のサブメニューは左側に展開すれば?と思ったのが今回の記事のキッカケです

こちらはテストサイトでのカスタマイズ結果になります テストサイトですので ご覧になる時期によっては内容が変化している場合もあります ;;

カスタマイズ

check
  • カスタマイズは自己責任でお願いします。
  • wp-cocoon.comサイトのサポート対象外となります。

まずは現状把握

当サイトでは 今回の記事作成時点ではグローバルナビを使った事がありませんので まずは Cocoon GitHub でグローバルナビ周りのスタイル指定を確認します

各種変数 mixin が既に設定されているので これらを流用させていただいてカスタマイズを行います

scss

 //nth-of-type(5) は左展開
 $menu_height: 60px; 
 $sub_menu_width: 240px; 
 @mixin menu_item_has_children($unicode:''){ 
   position: relative; 
   >a{ 
     &::after{ 
       @include fontawesome($unicode); 
       position: absolute; 
       right: 3px; 
       top: 0; 
       //top: ($menu_height - $icon_height) / 2; 
     } 
   } 
 } 
 @mixin fontawesome($unicode:'/f004') { 
   font-family: FontAwesome; 
   content: $unicode; 
   padding-right: 3px; 
 } 
 .navi-in > ul { 
   .sub-menu { 
     min-width: $sub_menu_width; 
     ul{ 
       top: -$menu_height; 
       left: $sub_menu_width; 
       position: relative; 
     } 
   } 
   > li { 
     &:nth-of-type(5) { 
       .sub-menu { 
         right: 0; 
         .menu-item-has-children { 
           @include menu_item_has_children('\f104'); 
           >a{ 
             &::after{ 
               left: 3px; 
               //top: ($menu_height - $icon_height) / 2; 
             } 
           } 
           ul { 
             margin-left: -$sub_menu_width * 2; 
             margin-right: $sub_menu_width * 2; 
           } 
         } 
       } 
     } 
   } 
 } 

mixin 設定は公式サイトの内容そのままです カスタマイズと呼べるのはこの箇所です

 .navi-in > ul { 
   .sub-menu { 
     min-width: $sub_menu_width; 
     ul{ 
       top: -$menu_height; 
       left: $sub_menu_width; 
       position: relative; 
     } 
   } 
   > li { 
     &:nth-of-type(5) { 
       .sub-menu { 
         right: 0; 
         .menu-item-has-children { 
           @include menu_item_has_children('\f104'); 
           >a{ 
             &::after{ 
               left: 3px; 
               //top: ($menu_height - $icon_height) / 2; 
             } 
           } 
           ul { 
             margin-left: -$sub_menu_width * 2; 
             margin-right: $sub_menu_width * 2; 
           } 
         } 
       } 
     } 
   } 
 } 

5番目のメニューに対して fontawesome margin の変更をしています

また サブメニューを親メニューに合わせて右揃えにします

nth-of-type(5) ではなく last-of-type も考えたのですが メニューが少ない時でも右端は左展開になってしまうため 今回は5番目のメニュー限定にしています

メニューを6個以上使う方は おそらく メニューの幅など css そのものを修正すると思われるので その際に併せて nth-of-type(6) なり last-of-type に変更できればよろしいかと思われます

まとめ

先にも述べましたが 当サイトではグローバルナビを使用していません ですので このカスタマイズが サイト利用をする上でどの様な不便さをもたらすか?なども分かりません

あくまでも 左側に表示する方法もあるよ 程度の内容です

コメント