現在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="#">新製品 »</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="#">ハードウェア »</a> 18 <ul> 19 <li><a href="#">法人向け</a></li> 20 <li><a href="#">個人向け</a></li> 21 </ul> 22 </li> 23 <li><a href="#">ソフトウェア »</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="#">会社概要 »</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="#">所在地 »</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="#">よくあるご質問 »</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="#">お問い合わせ先 »</a> 64 <ul> 65 <li><a href="#">大阪本社</a></li> 66 <li><a href="#">支社 »</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}
自分なりに調べて試してみたのですが、第二階層にマウスオーバーすると矢印は表示されますが、
その上の第一階層にマウスオーバーした時に、第二階層に矢印を表示する、という目的に
達することができません。
色々試してみたのですがCSSの知識が足りず実現できなくて焦っております。
何か有用なアドバイスがありましたらどうか頂けないでしょうか。
どうぞよろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/11 08:17
2018/09/11 08:20