質問するログイン新規登録

Q&A

0回答

1535閲覧

Mega site navigationのカスタマイズで表示がうまくいかない

A8-D

総合スコア8

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2018/05/08 14:49

編集2018/05/09 17:01

0

0

検索してもなかなか思うような結果にたどり着かなかったため質問しました。
どなたかお分かりになる方がいらっしゃいましたら教えていただけると助かります。

前提・実現したいこと

Mega site navigationをカスタマイズしています。
パソコンではマウスオーバーで、タブレット、スマホではタップでメガメニューが展開できるようにしたいです。

カスタマイズした主な内容は以下です。
・パソコンでマウスオーバーによるメガメニューの展開を行った。
・class名をjavascriptによって付与したり削除したりできるようにしている。

発生している問題・エラーメッセージ

タブレット・スマホで見た際に、親メニューからスタートせず、3番目のメニューから表示されます。

該当のソースコード

HTML

1<header class="cd-main-header"> 2 <a class="cd-logo" href="#">hogehoge</a> 3 <ul class="cd-header-buttons"> 4 <li><a class="cd-nav-trigger" href="#cd-primary-nav"><span></span></a></li> 5 </ul> <!-- cd-header-buttons --> 6 </header> 7 8 <main class="cd-main-content"> 9 <!-- your content here --> 10 </main> 11 12 <div class="cd-overlay"></div> 13 14 <nav class="cd-nav"> 15 <ul id="cd-primary-nav" class="cd-primary-nav is-fixed"> 16 <li class="has-children" id="hover01"> 17 <a href="javascript:void(0)">1階層目メニュー1</a> 18 19 <ul class="cd-secondary-nav" id="second01"> 20 <li class="go-back"><a href="#">1階層目メニュー1へ戻る</a></li> 21 <li class="has-children"> 22 <a href="#">2階層目メニュー1</a> 23 24 <ul class="is-hidden"> 25 <li class="go-back"><a href="#0">2階層目メニュー1へ戻る</a></li> 26 <li class="has-children"> 27 <a href="#0">3階層目メニュー1</a> 28 29 <ul class="is-hidden"> 30 <li class="go-back"><a href="#0">3階層目メニュー1</a></li> 31 <li><a href="#">4階層目メニュー1</a></li> 32 <li><a href="#">4階層目メニュー2</a></li> 33 <li><a href="#">4階層目メニュー3</a></li> 34 <li><a href="#">4階層目メニュー4</a></li> 35 </ul> 36 </li> 37 <li class="has-children"> 38 <a href="#0">3階層目メニュー2</a> 39 40 <ul class="is-hidden"> 41 <li class="go-back"><a href="#0">3階層目メニュー2へ戻る</a></li> 42 <li><a href="#">4階層目メニュー5</a></li> 43 <li><a href="#">4階層目メニュー6</a></li> 44 <li><a href="#">4階層目メニュー7</a></li> 45 <li><a href="#">4階層目メニュー8</a></li> 46 </ul> 47 </li> 48 <li class="has-children"> 49 <a href="#0">3階層目メニュー3</a> 50 51 <ul class="is-hidden"> 52 <li class="go-back"><a href="#0">3階層目メニュー3へ戻る</a></li> 53 <li><a href="#">4階層目メニュー9</a></li> 54 <li><a href="#">4階層目メニュー10</a></li> 55 <li><a href="#">4階層目メニュー11</a></li> 56 <li><a href="#">4階層目メニュー12</a></li> 57 </ul> 58 </li> 59 </ul> 60 </li> 61 62 <li class="has-children"> 63 <a href="#">2階層目メニュー2</a> 64 65 <ul class="is-hidden"> 66 <li class="go-back"><a href="#0">2階層目メニュー2へ戻る</a></li> 67 <li><a href="#0">3階層目メニュー4</a></li> 68 <li><a href="#0">3階層目メニュー5</a></li> 69 <li><a href="#0">3階層目メニュー6</a></li> 70 <li><a href="#0">3階層目メニュー7</a></li> 71 </ul> 72 </li> 73 74 <li class="has-children"> 75 <a href="#">2階層目メニュー3</a> 76 77 <ul class="is-hidden"> 78 <li class="go-back"><a href="#0">2階層目メニュー3へ戻る</a></li> 79 <li><a href="#0">3階層目メニュー8</a></li> 80 <li><a href="#0">3階層目メニュー9</a></li> 81 <li><a href="#0">3階層目メニュー10</a></li> 82 <li><a href="#0">3階層目メニュー11</a></li> 83 </ul> 84 </li> 85 86 <li class="has-children"> 87 <a href="#">2階層目メニュー4</a> 88 89 90 </li> 91 </ul> 92 </li> 93 94 <li class="has-children" id="hover02"> 95 <a href="javascript:void(0)">1階層目メニュー2</a> 96 97 <ul class="cd-secondary-nav" id="second02"> 98 <li class="go-back"><a href="#0">1階層目メニュー2へ戻る</a></li> 99 <li> 100 <a class="cd-nav-item item-1" href="#"> 101 2階層目メニュー5 102 </a> 103 </li> 104 105 <li> 106 <a class="cd-nav-item item-2" href="#"> 107 2階層目メニュー6 108 </a> 109 </li> 110 111 <li> 112 <a class="cd-nav-item item-3" href="#"> 113 2階層目メニュー7 114 </a> 115 </li> 116 117 <li> 118 <a class="cd-nav-item item-4" href="#"> 119 2階層目メニュー8 120 </a> 121 </li> 122 </ul> 123 </li> 124 125 <li class="has-children" id="hover03"> 126 <a href="javascript:void(0)">1階層目メニュー3</a> 127 128 <ul class="cd-secondary-nav" id="second03"> 129 <li class="go-back"><a href="#0">1階層目メニュー3へ戻る</a></li> 130 <li> 131 <a class="cd-nav-item item-1" href="#"> 132 2階層目メニュー5 133 </a> 134 </li> 135 136 <li> 137 <a class="cd-nav-item item-2" href="#"> 138 2階層目メニュー6 139 </a> 140 </li> 141 142 <li> 143 <a class="cd-nav-item item-3" href="#"> 144 2階層目メニュー7 145 </a> 146 </li> 147 148 <li> 149 <a class="cd-nav-item item-4" href="#"> 150 2階層目メニュー8 151 </a> 152 </li> 153 </ul> 154 </li> 155 156 <li><a href="#">1階層目メニュー4</a></li> 157 <li><a href="#">1階層目メニュー5</a></li> 158 </ul> <!-- primary-nav --> 159 </nav> <!-- cd-nav -->

↓追加したCSSのみ記載しています。これ以外は現在大元からダウンロードしたものをそのまま使用しています。

CSS

1@media only screen and (min-width: 1024px) { 2 #hover01.has-children > #second01, 3 #hover02.has-children > #second02, 4 #hover03.has-children > #second03 { 5 display:none !important; 6 } 7 8 #hover01.on_hover:hover > #second01, 9 #hover02.on_hover:hover > #second02, 10 #hover03.on_hover:hover > #second03 { 11 position:absolute; 12 display:block !important; 13 } 14}

↓JavascriptはテストでHTMLの</body>前に記述しています。
元のJavascriptは変更していません。

Javascript

1<script type="text/javascript"> 2$('#hover01,#hover02,#hover03').hover( 3function(){$(this).addClass('on_hover')}, 4function(){$(this).removeClass('on_hover');} 5); 6</script> 7<script> 8$(function() { 9 $('.on_hover').mouseover(function(e) { 10 $('.cd-secondary-nav').addClass("is-hidden"); 11 }) 12 $('.on_hover').mouseout(function(e) { 13 $('.cd-secondary-nav').removeClass("is-hidden"); 14 }) 15}); 16</script> 17<script> 18if(!navigator.userAgent.match(/(iPhone|iPad|Android)/)){ 19$('#hover01,#hover02,#hover03').children('a').on('click', function(event){ 20 if( !checkWindowWidth() ) event.preventDefault(); 21 var selected = $(this); 22 if( selected.next('ul').hasClass('is-hidden') ) { 23 //desktop version only 24 selected.addClass('selected').next('ul').removeClass('is-hidden').end().parent('.has-children').parent('ul').addClass('moves-out'); 25 selected.parent('.has-children').siblings('.has-children').children('ul').addClass('is-hidden').end().children('a').removeClass('selected'); 26 $('.cd-overlay').addClass('is-visible'); 27 } else { 28 selected.removeClass('selected').next('ul').addClass('is-hidden').end().parent('.has-children').parent('ul').removeClass('moves-out'); 29 $('.cd-overlay').removeClass('is-visible'); 30 } 31 toggleSearch('close'); 32 }); 33} 34</script>

試したこと

上記Javascriptのいずれを削除してみてもエラーの結果は同じでした。

最後に

あまりきれいなソースでなくてすみませんが、CSSでのエラーなのかJavascriptでのエラーなのか
判断がつきかねています。アドバイスをお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問