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

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

CSS

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

Q&A

解決済

1回答

5463閲覧

ドロップダウンメニューで下の階層があることを示す目印を付けたい

ponyski

総合スコア17

HTML

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

CSS

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

0グッド

2クリップ

投稿2018/09/11 04:46

0

2

現在CSSのみでドロップダウンメニューを作成しておりまして、第三階層まで作ることになりました。
サンプルとしてこちらのサイトを参考にさせていただいています。
上記サンプルの完成ページ

現在私が作成中のドロップダウンメニューも第三階層が存在するのは一部なのですが、
「一番上のメニューにマウスオーバーした時に」、第三階層があることを示す矢印を、
第二階層の右横に表示したいと考えています。
現在は見本ページのように第三階層がある項目の末尾に「>>」をテキスト入力していますが、
これは止めてCSSで判断して矢印を表示したいと思います。

HTML

1<ul class="ddmenu"> 2 <li><a href="#">HOME</a></li> 3 <li><a href="#">ニュース</a> 4 <ul> 5 <li><a href="#">新製品 &raquo;</a> 6 <ul> 7 <li><a href="#">ハードウェア</a></li> 8 <li><a href="#">ソフトウェア</a></li> 9 </ul> 10 </li> 11 <li><a href="#">新サービス</a></li> 12 <li><a href="#">弊社について</a></li> 13 </ul> 14 </li> 15 <li><a href="#">製品・技術</a> 16 <ul> 17 <li><a href="#">ハードウェア &raquo;</a> 18 <ul> 19 <li><a href="#">法人向け</a></li> 20 <li><a href="#">個人向け</a></li> 21 </ul> 22 </li> 23 <li><a href="#">ソフトウェア &raquo;</a> 24 <ul> 25 <li><a href="#">for Windows</a></li> 26 <li><a href="#">for Mac</a></li> 27 <li><a href="#">for Android</a></li> 28 <li><a href="#">for iOS</a></li> 29 <li><a href="#">その他</a></li> 30 </ul> 31 </li> 32 <li><a href="#">ウェブサービス</a></li> 33 </ul> 34 </li> 35 <li><a href="#">会社情報</a> 36 <ul> 37 <li><a href="#">会社概要 &raquo;</a> 38 <ul> 39 <li><a href="#">グループ概要</a></li> 40 <li><a href="#">本社概要</a></li> 41 </ul> 42 </li> 43 <li><a href="#">社長挨拶</a></li> 44 <li><a href="#">沿革</a></li> 45 <li><a href="#">所在地 &raquo;</a> 46 <ul> 47 <li><a href="#">本社</a></li> 48 <li><a href="#">支社</a></li> 49 </ul> 50 </li> 51 </ul> 52 </li> 53 <li><a href="#">お問い合わせ</a> 54 <ul class="sub"> 55 <li><a href="#">よくあるご質問 &raquo;</a> 56 <ul> 57 <li><a href="#">サービスに関して</a></li> 58 <li><a href="#">弊社に関して</a></li> 59 <li><a href="#">その他</a></li> 60 </ul> 61 </li> 62 <li> 63 <a href="#">お問い合わせ先 &raquo;</a> 64 <ul> 65 <li><a href="#">大阪本社</a></li> 66 <li><a href="#">支社 &raquo;</a> 67 <ul> 68 <li><a href="#">神戸支社</a></li> 69 <li><a href="#">京都営業所</a></li> 70 <li><a href="#">奈良営業所</a></li> 71 </ul> 72 </li> 73 </ul> 74 </li> 75 </ul> 76 </li> 77 </ul>

CSS

1 /* -------------------- */ 2 /* ▼メニューバーの装飾 */ 3 /* -------------------- */ 4 ul.ddmenu { 5 margin: 0px; /* メニューバー外側の余白(ゼロ) */ 6 padding: 0px 0px 0px 15px; /* メニューバー内側の余白(左に15px) */ 7 background-color: #cc0000; /* バーの背景色(濃い赤色) */ 8 } 9 10 /* -------------------------- */ 11 /* ▼メインメニュー項目の装飾 */ 12 /* -------------------------- */ 13 ul.ddmenu li { 14 width: 125px; /* メニュー項目の横幅(125px) */ 15 display: inline-block; /* ★横並びに配置する */ 16 list-style-type: none; /* ★リストの先頭記号を消す */ 17 position: relative; /* ★サブメニュー表示の基準位置にする */ 18 } 19 ul.ddmenu a { 20 background-color: #cc0000; /* メニュー項目の背景色(濃い赤色) */ 21 color: white; /* メニュー項目の文字色(白色) */ 22 line-height: 40px; /* メニュー項目のリンクの高さ(40px) */ 23 text-align: center; /* メインメニューの文字列の配置(中央寄せ) */ 24 text-decoration: none; /* メニュー項目の装飾(下線を消す) */ 25 font-weight: bold; /* 太字にする */ 26 display: block; /* ★項目内全域をリンク可能にする */ 27 } 28 ul.ddmenu a:hover { 29 background-color: #ffdddd; /* メニュー項目にマウスが載ったときの背景色(淡いピンク) */ 30 color: #dd0000; /* メニュー項目にマウスが載ったときの文字色(濃い赤色) */ 31 } 32 33 /* ---------------------------------- */ 34 /* ▼サブメニューがある場合に開く処理 */ /* ※サブメニューが2階層以上ある場合の記述 */ 35 /* ---------------------------------- */ 36 ul.ddmenu li:hover > ul { 37 display: block; /* ★マウスポインタが載っている項目の内部にあるリストを表示する */ 38 } 39 40 /* -------------------- */ 41 /* ▼サブメニューの装飾 */ 42 /* -------------------- */ 43 ul.ddmenu ul { 44 margin: 0px; /* ★サブメニュー外側の余白(ゼロ) */ 45 padding: 0px; /* ★サブメニュー内側の余白(ゼロ) */ 46 display: none; /* ★標準では非表示にする */ 47 position: absolute; /* ★絶対配置にする */ 48 } 49 50 /* ------------------------ */ 51 /* ▼サブメニュー項目の装飾 */ 52 /* ------------------------ */ 53 ul.ddmenu ul li { 54 width: 135px; /* サブメニュー1項目の横幅(135px) */ 55 border-top: 1px solid pink; /* 項目上側の枠線(ピンク色で1pxの実線) */ 56 } 57 ul.ddmenu ul li a { 58 line-height: 35px; /* サブメニュー1項目の高さ(35px) */ 59 text-align: left; /* 文字列の配置(左寄せ) */ 60 padding-left: 5px; /* 文字列前方の余白(5px) */ 61 font-weight: normal; /* 太字にはしない */ 62 } 63 ul.ddmenu ul li a:hover { 64 background-color: #ffff80; /* サブメニュー項目にマウスが載ったときの背景色(淡い黄色) */ 65 color: #005500; /* サブメニュー項目にマウスが載ったときの文字色(濃い緑色) */ 66 } 67 68 /* -------------------------------------------------------- */ 69 /* ▼サブメニューの内側にあるサブメニュー(孫メニュー)の装飾 */ /* ※サブメニューの中のサブメニューは「下」ではなく「横(右)」に表示します。 */ 70 /* -------------------------------------------------------- */ 71 ul.ddmenu ul ul { 72 margin: 0px; /* ★サブメニュー外側の余白(ゼロ) */ 73 padding: 0px; /* ★サブメニュー内側の余白(ゼロ) */ 74 display: none; /* ★標準では非表示にする */ 75 position: absolute; /* ★絶対配置にする */ 76 top: -1px; /* 1pxだけ上方向にずらす(※上に1pxの枠線を引いている場合) */ 77 left: 100%; /* ★基準位置からの距離を親ボックスの幅100%にする */ 78 border-left: 1px solid pink; /* 左側に引く枠線(ピンク色で1pxの実線) */ 79 } 80 81ul.ddmenu li:last-child ul li ul { 82 left: -100%; 83} 84 85ul.ddmenu li ul li ul:before { 86 position: absolute; 87 content: ""; 88 top: 16px; 89 left: -20px; 90 width: 0; 91 height: 0; 92 border: 5px solid transparent; 93 border-left-color: #000000; 94} 95 96ul.ddmenu li ul li:hover ul:before { 97 border-left-color: #000000; 98} 99 100ul.ddmenu li:last-child ul li ul:before { 101 position: absolute; 102 content: ""; 103 top: 16px; 104 left: 100%; 105 margin-left: -20px; 106 border: 5px solid transparent; 107 border-right-color: #000000; 108} 109 110ul.ddmenu ul li:last-child ul li:hover ul:before { 111 border-right-color: #000000; 112}

自分なりに調べて試してみたのですが、第二階層にマウスオーバーすると矢印は表示されますが、
その上の第一階層にマウスオーバーした時に、第二階層に矢印を表示する、という目的に
達することができません。

第二階層にマウスオーバーした時に矢印が表示されるのはこのままでOK

第一階層にマウスオーバーした時にも、第二階層に矢印を表示したい

色々試してみたのですがCSSの知識が足りず実現できなくて焦っております。
何か有用なアドバイスがありましたらどうか頂けないでしょうか。
どうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

黒矢印はul.ddmenu li ul li ul:beforeで定義されていて、要は最下層のメニューにくっついています。
この部分を1つ親に移動すればある程度は何とかなりそうに思います。(beforeはafterに変えたほうがいいですね。)
ただ「このメニュー矢印をつける」という区別が必要なので別途クラスを振ってやる必要があると思います。

例えばこんな感じ。
※hoverをある程度調整する必要はありそう

html

1<li class="drop"><a href="#">新製品</a> 2 <ul> 3 <li><a href="#">ハードウェア</a></li> 4 <li><a href="#">ソフトウェア</a></li> 5 </ul> 6</li>

css

1ul.ddmenu li ul li.drop:after { 2 position: absolute; 3 content: ""; 4 top: 12px; 5 right: 10px; 6 width: 0; 7 height: 0; 8 border: 5px solid transparent; 9 border-left-color: #000000; 10}

第1階層hover
イメージ説明

第2階層hover
イメージ説明

投稿2018/09/11 05:21

編集2018/09/11 05:26
m.ts10806

総合スコア80888

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

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

ponyski

2018/09/11 08:17

矢印表示用に別途クラスを設定する必要ありとのことで、お教えいただいたCSSを追加し、 第三階層を持つ親要素に矢印表示用のクラスを設定しました。 適用してみたところ、第一階層にマウスオーバーした時にも矢印が表示されました。 大変助かりました! 早速のアドバイス本当にありがとうございます。
m.ts10806

2018/09/11 08:20

解決したようで何よりです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問