2012-08-09 106 views
1

我该如何选择不是.slideshow班的孩子的.media班?如何选择此课程?

<article> 
    <div class="entry"></div> 
    <figure class="media"></figure> 
</article> 

<article> 
    <div class="slideshow"> 
     <div class="entry"></div> 
     <figure class="media"></figure> 
    </div> 
</article> 

很显然,我可以做.slideshow .media为目标的第二个,但我将如何定位,首先一个?

注意:这些块中的每一个都有多个,因此只需执行类似article:first-chlid来选择第一个实例就行不通。

多块的例子...

<article> 
    <div class="entry"></div> 
    <figure class="media"></figure> 
</article> 

<article> 
    <div class="entry"></div> 
    <figure class="media"></figure> 
</article> 

<article> 
    <div class="entry"></div> 
    <figure class="media"></figure> 
</article> 

<article> 
    <div class="slideshow"> 
     <div class="entry"></div> 
     <figure class="media"></figure> 
    </div> 
</article> 

<article> 
    <div class="entry"></div> 
    <figure class="media"></figure> 
</article> 

<article> 
    <div class="slideshow"> 
     <div class="entry"></div> 
     <figure class="media"></figure> 
    </div> 
</article> 
+0

你能说明这些块的倍数是多少? – BoltClock 2012-08-09 19:02:35

回答

4

他们并不意味着同样的事情,所以我会添加第二个一流的class=media一部分,所以你可以分别针对这

<article> 
    <div class="entry"></div> 
    <figure class="media"></figure> 
</article> 

<article> 
    <div class="slideshow"> 
     <div class="entry"></div> 
     <figure class="media another-class"></figure> 
    </div> 
</article> 

CSS

.media.another-class {...} 

你也可以使用直接子选择器

article > .media 
+0

'article> .media'做了窍门 – Shpigford 2012-08-09 19:48:54

6

你可以只使用两个班...

.media{ 
    /* styles here */ 
    padding:10px; 
} 
.slideshow .media{ 
    /* styles here */ 
    padding:20px; 
} 
+0

我觉得我比我的回答更喜欢这个,也许... – 2012-08-09 19:03:49

+0

这取决于如何添加html,如果您使用CMS或为您构建结构的东西,这更容易...否则我喜欢你的方法 – Trey 2012-08-09 19:04:24

+0

这是我想要做的事情的倒退。就像我说的,我知道我可以通过'.slideshow .media'来选择第二个,但我需要选择第一个。 – Shpigford 2012-08-09 19:44:01

1

试试这个:

:not(.slideshow)>.media{ 
    //code here 
} 

例如:
http://jsfiddle.net/kLyDF/

信息:
http://www.w3schools.com/cssref/sel_not.asp

+0

希望我能喜欢这个两次,我完全忘了它... IE最终支持它,在过去我无法使用它,因为IE [兼容性](http: //www.quirksmode.org/css/contents.html) – Trey 2012-08-09 19:16:40

+0

如果你不关心 2012-08-09 19:18:41

+0

除了浏览器支持的问题之外,使用':not()'排除父母是非常脆弱的;见http://stackoverflow.com/questions/7084112/css-negation-pseudo-class-not-for-parent-ancestor-elements鉴于标记,可以肯定的是'文章'是唯一的其他父母可以是':不是(.slideshow)'。 – BoltClock 2012-08-10 06:45:28