在CSS中我將如何更改懸停測試1的顏色,但不是列表1,2,3的顏色?CSS Direct Decedent李
<ul>
<li>
test 1
<ul>
<li> List 1</li>
<li> List 2</li>
<li> List 3</li>
</ul>
</li>
</ul>
在CSS中我將如何更改懸停測試1的顏色,但不是列表1,2,3的顏色?CSS Direct Decedent李
<ul>
<li>
test 1
<ul>
<li> List 1</li>
<li> List 2</li>
<li> List 3</li>
</ul>
</li>
</ul>
的一個方法是指定的「默認」顏色:
li:hover {
color:#f00;
}
li, li:hover li {
color:#000;
}
另一個(作弊?)是使用多個標記來包裝你想風格上懸停的內容:
li:hover span {
color:#f00;
}
<ul>
<li>
<span>test 1</span>
<ul>
<li> List 1</li>
<li> List 2</li>
<li> List 3</li>
</ul>
</li>
</ul>
我不認爲這是作弊,我認爲它是*理智*。 – 2012-08-07 23:17:36
我也認爲'span'方法是最好的答案,它有最清晰的代碼。 – insertusernamehere 2012-08-07 23:23:47
很多人不喜歡(ab)爲這樣的東西使用泛型標籤,我想我主要是迎合這些人(它確實會給HTML添加無意義的大量/混亂)。另一個缺點是,改變標記並不總是一種選擇。然而,在現實世界中,我可能會這樣做,但第一種選擇可能是最優雅和最不整體的代碼。問題在於你需要*知道*使用什麼顏色,並且不能繼承它。 – 2012-08-07 23:31:39
這是一條路可走:
ul > li {
color: red;
}
ul > li:hover {
color: blue;
}
ul > li:hover > ul > li {
color: red;
}
你其實不*那麼多:http://jsfiddle.net/hhauf/2/ – 2012-08-07 23:10:44
是的,你可以擺脫子選擇器,並使用更通用的descanted選擇器。但子選擇器可能比descanted選擇器更快:http://stackoverflow.com/a/1182223/1456376 – insertusernamehere 2012-08-07 23:19:02
添加test1
成div
元素,使其在一個單獨的一頁。
CSS:
div:hover {
color: blue;
}
雖然可能有辦法做到這一點不modifiying的HTML ..
給它自己的類,並在你的CSS文件中定義它。
<li class="yourclass">
或者把它標記,並定義鏈接在你的CSS
li.yourclass a:hover {
text-decoration: underline ;
}
一些線索:http://jsfiddle.net/hhauf/ – 2012-08-07 23:06:55
這其實是一個很好的問題,但魔鬼的在細節中。一般的答案會有所幫助,但爲了達到最佳效果,您必須根據您的標記是什麼*確切*您想要發生的事情來排除故障。因爲風格是繼承的,所以我沒有意識到有什麼靈丹妙藥。 (我假設這個標記和你說的目標僅僅是爲了舉例的目的) – 2012-08-07 23:14:03
請記住,由於'test 1'不在與該文本的父'li'元素中包含的'ul'分離的後代元素中,所以必須在':hover'上「返回」子元素的'color'定義。換句話說,它不是那麼幹淨。但是,你可以這樣做:http://jsfiddle.net/hhauf/3/如果這就是你想要的,那麼它會更乾淨。 – 2012-08-07 23:14:32