2012-03-09 98 views
-2

有一個網頁包含HTML片段:<div class="a b"></div><div class="a"></div>。如何用CSS隱藏第二個div,讓第一個可見?請注意,我不能添加任何其他類,以及第一個div更改的可見性(有時是相對的,有時是絕對的),它不依賴於我。CSS多個類別選擇

+0

你到目前爲止嘗試過什麼?我看不出爲什麼你會被卡住。 '.b {display:none}'不是你想要的嗎? – 2012-03-09 20:44:45

+0

[只有當存在2個類時纔可以使用CSS定位元素](http:// stackoverflow。com/questions/640996/can-you-target-an-element-with-css-only-if-2-classes-are-present) – 2012-03-09 20:46:50

+0

抱歉有錯誤。我想隱藏第二個。更正了這個問題 – burtek 2012-03-09 20:46:52

回答

3

可以隱藏既然後顯示,有兩類ab

.a {display: none;} 
.a.b {display: block;} 

的一個。如果加價不會改變您可以隱藏第二個div有以下幾點:

.a.b + .a {display:none;} 

此說與直接用如下兩類ab任何類a什麼應該隱藏起來。

+0

正如在對這個問題的評論中寫的,第一個div從來沒有相同的可見性 - 有時它是絕對的,有時是相對的,它不依賴於我。在css中是否有任何'不'的聲明? – burtek 2012-03-09 20:52:50

+0

@burtek:請注意SO上的問題(和答案)應該是獨立的。爲了理解其中的任何一個,不需要閱讀評論。請在問題本身中提供所有必要的信息。 – outis 2012-03-10 14:51:56

2

很簡單。剛剛嘗試這一點

.b {display:none;} 
0

只要創建B類選擇:

.b { display: none; } 

如果需要,只有擁有一流的項目一個應該被隱藏時,他們也有B類,您可以使用多個類選擇器通過連接兩個類選擇(無空白):由於第一

.a.b { display: none; } 
2
div.a.b{display:none} /*take note, no spaces between .a and .b to signify that the div has both*/ 

,或者包含b,

div.b{display:none} 
0

你是什麼意思,有時可見度是絕對的或相對的?可見度只能在div上隱藏或顯示。

以下是你需要什麼,你的更新問題

.a { display: hidden; } 
.b { display: inline !important; } 
0

CSS3定義negation pseudo-class

.a:not(.b) { 
    display: none; 
} 

但是,它只在IE 9獲得了支持,所以目前典型cross-browser solution是設置屬性(包括那些你不想匹配的屬性),然後用更多的創建另一個規則,恢復原始樣式。這在IE 6及更早版本中仍然存在問題,因爲他們僅考慮使用單個元素的multiple classes時的最後一個類。

.a { 
    display: none; 
} 
.a.b { /* IE6 will treat selector as '.b' */ 
    display: block; 
} 

注意,如果已經有與相匹配的元素,你不想碰,或者如果樣式設置inline(這應該不是一個腳本的操作之外進行更具體的選擇規則頁面),您不需要添加第二條規則,因爲.a具有如此低的特異性。