2012-03-09 93 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具有如此低的特异性。