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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

CSS

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

Q&A

解決済

2回答

1755閲覧

スマホ版メガドロップダウンメニューのCSS設定

yamada875

総合スコア21

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

CSS

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

1グッド

0クリップ

投稿2019/02/06 00:47

レスポンシブ表示の時に、
ロゴ メール 電話 メニュー
という4つの均等割付けした画面上部に固定されるバーを作り、
一番右のメニューを押した時にだけ
画面の幅で下に広がるメガドロップダウンにしたいです。
(本当はページ下部に固定して上に広げたいけど難しそうなので諦めました)

ですが、現状のコードでは、メニューにカーソルを合わせても
ul.child2の細い幅に合わせてしか下に広がってくれません。
画面幅に合わせて広げるにはどうすれば良いでしょうか?

html

1<div id="sp_nav" class="sp_only"> 2 <ul id="menu2"> 3 <li>ロゴ</li> 4 <li>メール</li> 5 <li>電話</li> 6 <li>メニュー 7 <ul class="child2"> 8 <li><a href="#">メニュー1</a></li> 9 <li><a href="#">メニュー2</a></li> 10 <li><a href="#">メニュー3</a></li> 11 <li><a href="#">メニュー4</a></li> 12 <li><a href="#">メニュー5</a></li> 13 <li><a href="#">メニュー6</a></li> 14 </ul> 15 </li> 16 </ul> 17</div>

css

1#sp_nav{ 2 position:fixed; 3 top:0; 4 left:0; 5 margin:0; 6 width:100%; 7} 8 9#sp_nav ul#menu2{ 10 display:flex; 11 justify-content:space-between; 12 background-color:#000; 13 height:70px; 14} 15 16#sp_nav ul#menu2 li{ 17 position: relative; 18 display: block; 19} 20#sp_nav ul#menu2 li ul.child2{ 21 display:none; 22 position:absolute; 23 top:60px; 24 left:0; 25 width:100%; 26 margin:0 auto; 27} 28#sp_nav ul#menu2 li ul.child2 li{ 29 background: #000; 30 width:1000px; 31 height:30px; 32 text-align:center; 33} 34#sp_nav ul#menu2 li ul.child2{ 35 width:100%; 36} 37#sp_nav ul#menu2 li ul.child2 li a{ 38 width:100%; 39 padding: 5px 10px; 40 display: block; 41 color: #fff; 42} 43 44#sp_nav ul#menu2 li:hover ul.child2 { 45 top: 70px; 46 visibility: visible; 47 opacity: 1; 48} 49 50#sp_nav ul#menu2 li ul.child2 > li { 51 width:100%; 52} 53

javascript

1<script> 2$(function(){ 3 $('#menu2 li').hover(function(){ 4 $("ul:not(:animated)", this).slideDown(); 5 }, function(){ 6 $("ul.child2",this).slideUp(); 7 }); 8}); 9</script>
dotnetuseryamag👍を押しています

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

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

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

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

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

m.ts10806

2019/02/06 01:16

何か参考にしたページはありますか?
m.ts10806

2019/02/06 01:37

ザッとみた印象ですがいずれもドロップダウンにしか対応していないので、 結構改修が必要そうに思います。display:none;を解除して調整は試みていますが、「子要素」という時点で結構縛りがあって、一筋縄ではいかないというか。 幅がきいてるのはwidth:100%だとかpostion:absolute;なんですけど。
guest

回答2

0

Yousuck様のご回答通りに入力すると、
PCで検証するとマウスをulに載せてないとメニューが一瞬で閉じてしまい頭を抱えましたが、
スマホで見たら普通にメニューが開け、瞬時に閉じることもなく、押すことが出来ました!!
Yousuck様にベストアンサーをしたのですが、
最初に諦めようと思ってこの「自己解決の回答」に「諦めます」と入力してしまったためこの回答欄がありますが
もし見る方がいらっしゃったらそのままベストアンサーを見てください。

投稿2019/02/06 04:22

編集2019/02/06 05:52
yamada875

総合スコア21

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

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

m.ts10806

2019/02/06 04:31

申し訳ないですが、本質問内容に対してこの回答内容は「不適切」と言えます。 「やり直しました」という割りに具体的な解決方法が何も書かれていません。 「無理だった」というのは質問者さんの技術の範囲では難しかったというだけで実は近いところまで来ていたかもしれませんよ(少なくとも私にはそういう印象です) 毎回コピペで使えるコードばかり追い求めていたらいずれやりたいことが何も実現できなくなります。 ご注意ください。
m.ts10806

2019/02/06 04:32

なお、質問も回答も編集できます。 きちんと解決方法を追記された方が良いでしょう(このままでいくのでしたら低評価つけたままにしておきます。誰のためにもならないので)
yamada875

2019/02/06 05:47 編集

ごめんなさい、今やり直したらできました。 最後まで追求する様に励ましてくれてありがとうございます。
m.ts10806

2019/02/06 05:47

私も質問をしたことがないので正しいやり方は知らないですが、 「取り消す」か何かできるようです。 つまり ベストアンサー取り消す→解決済みが受付中となる→対象の回答をベストアンサーに という流れかなと。
yamada875

2019/02/06 05:48

出来ました!なんでもかんでも質問して申し訳ないです。ありがとうございます。
m.ts10806

2019/02/06 05:48

> できました、ベストアンサーをやり直したいです。 回答をこのように編集するのはあまり良くないです。 運営への削除依頼が受け入れられそうな内容でもないですし、 「他を参考にした」のならそのURLを記載だけしておき、 ベストアンサーを取り消されてはいかがでしょうか。
yamada875

2019/02/06 05:53

自分の回答の消せないので、書き換えました。
guest

0

ベストアンサー

CSSを修正してみました。
※追加・削除した箇所にコメント

■再現環境
JSFiddel
jQuery3.3.1

CSS

1#sp_nav{ 2 position:fixed; 3 top:0; 4 left:0; 5 margin:0; 6 width:100%; 7} 8 9#sp_nav ul#menu2{ 10 display:flex; 11 justify-content:space-between; 12 background-color:#000; 13 height:70px; 14 padding:0;/* 追加 */ 15} 16 17#sp_nav ul#menu2 li{ 18 /*position: relative; 削除 */ 19 display: block; 20 color:#fff; 21} 22#sp_nav ul#menu2 li ul.child2{ 23 display:none; 24 position:absolute; 25 top:60px; 26 left:0; 27 width:100%; 28 margin:0 auto; 29 padding:0;/* 追加 */ 30} 31#sp_nav ul#menu2 li ul.child2 li{ 32 background: #000; 33 width:1000px; 34 height:30px; 35 text-align:center; 36} 37#sp_nav ul#menu2 li ul.child2{ 38 width:100%; 39} 40#sp_nav ul#menu2 li ul.child2 li a{ 41 width:100%; 42 padding: 5px 10px; 43 display: block; 44 color: #fff; 45} 46 47#sp_nav ul#menu2 li:hover ul.child2 { 48 top: 70px; 49 visibility: visible; 50 opacity: 1; 51} 52 53#sp_nav ul#menu2 li ul.child2 > li { 54 width:100%; 55}

投稿2019/02/06 01:36

Yousuck

総合スコア349

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

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

yamada875

2019/02/06 01:43

この通りに修正したら実現出来ました!本当にありがとうございます! paddingが邪魔していたのと、 #sp_nav ul#menu2 li ul.child2に入れているposition:absoluteの基準にするところを間違えていたということでしょうか?
Yousuck

2019/02/06 01:45

お察しの通りです! うまくいって何よりです~
yamada875

2019/02/06 01:47

ごめんなさい、今もう一度やってみたら、 ドロップダウンにカーソルを合わせると、 クリックできずに一瞬で閉じてしまいます!! メニュー上にカーソルがないとドロップダウンが閉じてしまう仕様になっていました・・・
Yousuck

2019/02/06 01:52

jsの記述で、イベントがhoverなのでそうなるかと。。
yamada875

2019/02/06 01:57

あぁぁなるほど… 一番右(ul.child2の幅の下)カーソルが有るとき以外はメニューが閉じてしまいます… これこのjsでは実現できないってことですかね、、(;;)
Yousuck

2019/02/06 02:22

クリックとかの話ですか?
m.ts10806

2019/02/06 04:21 編集

スマホ(というかタッチデバイス)に[hover]って概念ないですしね。
yamada875

2019/02/06 04:22

そうなんですね。すいません、もうこれでは無理そうなので1からやり直すことにします・・・! 考えてくださってありがとうございます。
m.ts10806

2019/02/06 04:23

試してないですが、トリガーをclickに切り替えて調整すればできそうには思います。
yamada875

2019/02/06 05:44

申し訳ないです。 PCで検証するとマウスを載せてないとメニューが開きませんでしたが、 特にjavascriptなどを書き換えずとも、 スマホで見たらちゃんとメニューが開け、瞬時に閉じることもなく、押すことが出来ました!!
Yousuck

2019/02/06 08:38

スマホの場合、jsのイベントを修正(touchstartなどに)しないといけません。 コメントにございます、 > スマホで見たらちゃんとメニューが開け、瞬時に閉じることもなく、押すことが出来ました!! は、スマホ(タッチデバイス)にhoverの概念がなく、タップした際にたまたま.hoverが作動し擬似要素の:animatedが付与されたままとなり、それが質問者さまのイメージする動作と合っただけだと思われます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問