質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

Q&A

解決済

1回答

7087閲覧

横並びのメニューでhover時に下にアコーディオンを表示させたい

sssooo

総合スコア17

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

0グッド

0クリップ

投稿2017/03/06 11:17

###質問
右にfloatさせているメニューバーの中の一つの項目において、hover時にその項目の下にアコーディオンを表示させたいのですが、アクティブ状態にするとそれらが高さを持ってしまいメニューバーのデザインも崩れてしまいます。どのようにすればメニューバーの配置を崩さず、特定の項目の下にアコーディオンメニューを表示させれるでしょうか?jQueryのhasClassでactiveクラスを追加/削除して動かしています。

HTML

1<div class="header-menu"> 2 <div class="logo"> 3 <h1><a href="#">LOGO</a></h1> 4 </div> 5 <div class="menu"> 6 <ul> 7 <li><a href="#">メニュー1</a></li> 8 <li><a id="accordion" href="#">メニュー2</a></li> 9 <ul class="category"> 10 <li><a href="#">アコーディオン1</a></li> 11 <li><a href="#">アコーディオン2</a></li> 12 </ul> 13 <li><a href="#">メニュー3</a></li> 14 <li><a href="#">メニュー4</a></li> 15 </ul> 16 </div> 17</div>

CSS

1.active{ 2 display: block; 3} 4 5.logo{ 6 float: left; 7} 8 9.menu{ 10 float: right; 11} 12 13.menu ul li{ 14 display: inline-block; 15 text-align: right; 16 padding: 28px 10px 0 100px; 17} 18 19.category{ 20 display: none; 21}

JavaScript

1$(function(){ 2 3 $('#accordion').hover(function(){ 4 5 if($(this).hasClass('active')){ 6 $(this).removeClass('active'); 7 $('.category').slideUp(); 8 }else{ 9 $(this).addClass('active'); 10 $('.category').slideDown(); 11 } 12 13 }); 14 15});

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

まず、「.category」の「ul」は「li」の中に入れてあげたほうが良いと思います。

<div class="header-menu"> <div class="logo"> <h1><a href="#">LOGO</a></h1> </div> <div class="menu"> <ul> <li><a href="#">メニュー1</a></li> <li> <a id="accordion" href="#">メニュー2</a> <ul class="category"> <li><a href="#">アコーディオン1</a></li> <li><a href="#">アコーディオン2</a></li> </ul> </li> <li><a href="#">メニュー3</a></li> <li><a href="#">メニュー4</a></li> </ul> </div> </div>

そして、高さを保つためには「li」に高さを持たせて「.category」を「position:absolute;」で浮かせてあげたらいいと思います。

.menu ul li{ display: inline-block; text-align: right; padding: 28px 10px 0 100px; position: relative; height: 20px; } .category{ display: none; position: absolute; top: 48px; left:0; }

投稿2017/03/06 13:58

YukiHayakawa

総合スコア53

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問