2016-06-21 6 views
1

私はちょうどHTML & CSSを学び始めており、その場で学ぶためにシンプルなウェブサイトを構築し始めました。ドロップダウンのテキストの色を変更するhtml

私は、ユーザーがリンク(コード内のdropbtn)を移動すると開くドロップダウンメニューを構築しようとしています。ドロップダウンメニューが開いているとき(ユーザーがボタンまたはドロップダウンオプションのいずれかにカーソルを置いているとき)、ボタンの背景色とテキストの色を変更したい。参考までに、http://www.cibc.caをご覧ください。それらのナビゲーションバーは茶色/赤色ですが、ユーザーがボタンの上を移動すると、ボタンの色が灰色(ドロップダウンメニューと一致するように)に変わり、テキスト色が栗色に変わります。ユーザーがドロップダウン・オプションに移動すると、色は同じに留まり、カーソルがドロップダウン・メニューから完全に離れると元の状態に戻ります。

これまでのところ、私はメニューを開いて、ボタンの背景色とテキスト色をユーザーがボタンの上に置いたときに変更するように作成しました。しかし、ユーザーがボタンからドロップダウンオプションの1つにカーソルを移動すると、ボタンのテキストの色は元のゴーストホワイトに戻り、テキストを見ることはできません。私はドロップダウンメニューが閉じられるまで、色を変更しないようにする方法を探しています。

これは私の最初の投稿ですstackoverflowので、投稿の問題については私を許してください。

編集:別の質問で見つかったこのコード行を追加しました。残念ながら、私はなぜそれが動作するのか分からないので、説明をいただければ幸いです。

#nav li:hover > a, #nav li:hover > a:link, #nav li:hover > a:visited{color:white;} 

HTML:

<div> 
<ul id = "menu"> 
    <li><a class = "active" style = "color:dodgerblue" href = "http://www.google.ca">Home</a></li> 
    <li><a href = "website1.html">Projects</a></li> 
    <li><a href = "http://www.twitter.com">Community Involvement</a></li> 

    <li class = "dropdown">  
     <a class = "dropbtn" href = "#">Social Media</a> 
     <div class = "dropdown-content"> 
      <a href = "http://www.facebook.com">Facebook</a> 
      <a href = "http://www.twitter.com">Twitter</a> 
      <a href = "http://www.instagram.com">Instagram</a></div> 
    </li> 

    <li><a href = "http://www.twitter.com">Join Our Team</a></li> 
    <li><a href = "http://www.twitter.com">FAQ</a></li> 
    <li><a href = "http://www.twitter.com">About Us</a></li> 
    <li><a href = "http://www.twitter.com">Contact Us</a></li> 
</ul> 

はCSS:

ul#menu li.dropdown .dropbtn{ 
     display:inline-block; 
     color:ghostwhite; 
     text-decoration:none; 
     text-align:center; 
     padding:14px 16px; 
    } 

ul#menu li a:hover:not(.active), .dropdown:hover .dropbtn{ 
     background-color:ghostwhite; 
     color:dodgerblue; 
     } 
     .active{ 
      background-color:ivory; 
     } 

ul#menu li.dropdown{ 
     display:inline-block; 
     } 
ul#menu .dropdown-content { 
     display: none; 
     position: absolute; 
     background-color: ghostwhite; 
     min-width: 160px; 
    } 
ul#menu .dropdown-content a{ 
     color:dodgerblue; 
     padding: 12px 16px; 
     text-decoration:none; 
     display:block; 
     text-align:left; 
    } 
ul#menu .dropdown .dropdown-content a:hover{ 
     background-color: skyblue; 

    } 
ul#menu .dropdown:hover .dropdown-content { 
     display: block; 
    } 
+0

これにはjavascriptが必要です。 –

+0

私は自分の投稿を編集し、私が望むことをした別の答えで見つけたコード行を追加しました。しかし、なぜ私はそれが動作するように誰もが私のために多くを助けてくれると説明することができないのか分かりません。 – aratna

答えて

0

.dropdown .dropbtn { 
 
    display: inline-block; 
 
    color: ghostwhite; 
 
    text-decoration: none; 
 
    text-align: center; 
 
    padding: 14px 16px; 
 
} 
 

 
.dropdown:hover .dropbtn { 
 
    background-color: ghostwhite; 
 
    color: dodgerblue; 
 
} 
 

 
.dropdown:hover .dropdown-content { 
 
    display: block; 
 
} 
 

 
.dropdown:hover .dropdown-content a { 
 
    background-color: skyblue; 
 
    background-color: ghostwhite; 
 
} 
 

 
.dropdown { 
 
    display: inline-block; 
 
} 
 

 
.dropdown-content { 
 
    display: none; 
 
    position: absolute; 
 
    background-color: ghostwhite; 
 
    min-width: 160px; 
 
} 
 

 
.dropdown-content a { 
 
    color: dodgerblue; 
 
    padding: 12px 16px; 
 
    text-decoration: none; 
 
    display: block; 
 
    text-align: left; 
 
}
<div> 
 
    <ul id="menu"> 
 
    <li><a class="active" style="color:dodgerblue" href="http://www.google.ca">Home</a> 
 
    </li> 
 
    <li><a href="website1.html">Projects</a> 
 
    </li> 
 
    <li><a href="http://www.twitter.com">Community Involvement</a> 
 
    </li> 
 

 
    <li class="dropdown"> 
 
     <a class="dropbtn" href="#">Social Media</a> 
 
     <div class="dropdown-content"> 
 
     <a href="http://www.facebook.com">Facebook</a> 
 
     <a href="http://www.twitter.com">Twitter</a> 
 
     <a href="http://www.instagram.com">Instagram</a> 
 
     </div> 
 
    </li> 
 

 
    <li><a href="http://www.twitter.com">Join Our Team</a> 
 
    </li> 
 
    <li><a href="http://www.twitter.com">FAQ</a> 
 
    </li> 
 
    <li><a href="http://www.twitter.com">About Us</a> 
 
    </li> 
 
    <li><a href="http://www.twitter.com">Contact Us</a> 
 
    </li> 
 
    </ul> 
 
</div>

キーはあなたのホバー効果が ".dropdown"に基づいている必要があります。これは同じエフェクトを適用したいすべての子供のためのコンテナです。私は少し周りのCSSを変更し、不要なセレクターの特異性のいくつかを削除しました。

0

下記のCSSブロックに!importantを追加するだけで問題を解決できます。重要な減速は、その特定のスタイルをアクティブにすると、より重視されます。あなたのスタイルが正しい順序になっている場合

ul#menu li a:hover:not(.active), .dropdown:hover .dropbtn{ 
    background-color:ghostwhite; 
    color:dodgerblue!important; /* Add !important here */ 
} 

しかし、これは必要ではないだろうとorangeh0gが述べたように、彼らは同様に正しいセレクタを持つ必要があります。 CSSはドキュメントの上から下にコンパイル/読み込みされます。つまり、スタイルシートの上部にスタイルが追加された場合は、後でそのスタイルシートを上書きすることができます。

関連する問題