css3类型限制为类

tec*_*ant 70 css css-selectors pseudo-class css3

有没有办法将css3限制nth-of-type为一个类?我有一些动态数量的section元素,不同的类指定了它们的布局需求.我想抓住每一个第三.module,但它似乎nth-of-type查找类元素类型,然后计算类型.相反,我想将它限制为只有.modules.

谢谢!

JSFiddle演示:http://jsfiddle.net/danielredwood/e2BAq/1/

HTML:

<section class="featured video">
    <h1>VIDEO</h1>
</section>
<section class="featured module">
    <h1>NOT A VIDEO</h1>
</section>
<section class="featured module">
    <h1>NOT A VIDEO</h1>
</section>
<section class="featured module">
    <h1>NOT A VIDEO (3)</h1>
</section>
<section class="featured module">
    <h1>NOT A VIDEO</h1>
</section>
<section class="featured module">
    <h1>NOT A VIDEO</h1>
</section>
<section class="featured module">
    <h1>NOT A VIDEO (6)</h1>
</section>
Run Code Online (Sandbox Code Playgroud)

CSS:

.featured {
  width:31%;
  margin:0 0 20px 0;
  padding:0 3.5% 2em 0;
  float:left;
  background:#ccc;
}
  .featured.module:nth-of-type(3n+3) {
    padding-right:0;
    background:red;
  }
  .featured.video {
    width:auto;
    padding:0 0 2em 0;
    float:none;
  }?
Run Code Online (Sandbox Code Playgroud)

r0s*_*kar 70

不幸的是,没有办法(至少我不知道)选择nth-of-type一个类,因为nth-of-class不存在.您可能需要.module手动为每三个人添加一个新类.

  • @Dominic Watson:我认为这里的问题是大多数作者不熟悉术语"元素类型",选择器使用它来代替HTML/XML特定术语"标记名称".这在Selectator 4级中有所澄清,但并非如此. (6认同)
  • nth-of-type的行为是如此出乎意料..thing:nth-​​of-type(1)实际上是div.thing:nth-​​of-type(1)因此,如果你没有在你的选择器中包含该元素,那就太令人困惑了.如果你不认为这是意料之外的,为什么它会引起开发人员如此混淆? (3认同)
  • 没有办法选择`:类型的nth-of-type()`,因为`:nth-​​of-type()`只选择其**类型**的第n个子节点.另请参阅http://stackoverflow.com/questions/6447045/css3-selector-first-of-type-with-class-name (2认同)

Edu*_*ada 37

看起来你真正想要的是css4:nth-​​match选择器,但它在大多数浏览器中并不真正支持,所以目前,唯一的方法就是使用javascript

$(".featured.module").filter(function(index, element){
    return index % 3 == 2;
}).addClass("third");
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/w3af16dj/

  • 因为我认为这对SO读者来说是有用的参考,当我写这个答案时,我必须检查文档以记住哪个参数首先出现.我还假设有些人会修改代码. (6认同)
  • 为什么将`element`作为参数传递给函数?它没用过 (2认同)