html - 除非 html 元素发生更改,否则 nth-of-type 不起作用

标签 html css css-selectors

我被这个问题逼疯了。我试图通过使用 nth-of-type 来定位具有特定类的 div 的所有其他实例。当 HTMl 元素发生变化时,我已经让 nth-of-type 可以工作,但当它只是 div 时,就不行了。一定是我没有理解正确的东西,所以我感谢您的帮助!

这是一个例子,接近我需要的(除了内部部分标签应该是div):

.employee-group {
    border: 1px solid green;
}

.employee-group:nth-of-type(odd) {
        background-color: blue;
}

<div class="employee-group">
    <p class="employee">Odd</p>
    <p class="employee">Div</p>
</div>
<section>
    <p>Section</p>
</section>
<div class="employee-group">
    <p class="employee">Even .employee-group</p>
    <p class="employee">Works as expected, no background color</p>
</div>
<section>
    <p>Section</p>
</section>
<div class="employee-group">
    <p class="employee">Odd</p>
    <p class="employee">Div</p>
</div>
<section>
    <p>Section</p>
</section>

http://codepen.io/usern4me/pen/BLZjJj

这是我需要工作但我一生都做不到的场景:

.employee-group {
    border: 1px solid green;
}

.employee-group:nth-of-type(odd) {
        background-color: blue;
}

<div class="employee-group">
    <p class="employee">Odd</p>
    <p class="employee">Div</p>
</div>
<div>
    <p>Even</p>
    <p>Div</p>
</div>
<div class="employee-group">
    <p class="employee">Odd div</p>
    <p class="employee">But even .employee-group (shouldn't have bg color!!!)</p>
</div>
<div>
    <p>Even</p>
    <p>Div</p>
</div>
<div class="employee-group">
    <p class="employee">Odd</p>
    <p class="employee">Div</p>
</div>
<div>
    <p>Even</p>
    <p>Div</p>
</div>

http://codepen.io/usern4me/pen/YGbwEb

看起来第 n 个类型的选择器与类匹配,并且它是 div 总数中的一个奇怪的 div。我希望它只查看类(class)的计数。

感谢您的帮助!

最佳答案

对于偶数 .employee-group 问题,将 .employee-group:nth-of-type(odd) 更改为

.employee-group:nth-of-type(4n+1)

说明:您的要求希望跳过奇数序列中的所有其他元素,即属性应命中 (1,5,9,13....),而不是 (1,3,5,7,9,11....)。 ...) 等等。为此,我们为参数提供了一个计算公式,因此 css 所做的是将索引 (0,1,2,3) 作为每个 .employee-group 元素的 n 并计算应用位置基于公式结果的属性如下

(4n+1) = 目标数

(4x0+1)= 1

(4x1+1)= 5

(4x2+1)= 9

(4x3+1)= 13

...等等。

我相信这应该可以解决您的问题。

希望这有帮助。

关于html - 除非 html 元素发生更改,否则 nth-of-type 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40290818/

相关文章:

css - 如何让 CSS 伪元素看起来跨浏览器相同?

javascript - jQuery @变量?

HTML 电子邮件 : How do I remove spacing between 2 tables? Gmail 特别

html - IE 7 拆分和删除 SPAN 元素

html - 从 URL 根之上扩展的相对路径提供 CSS?

函数外的 JavaScript 变量不保留值

jquery - 添加的类仅在单击链接两次后保留

Javascript函数.toggle开始隐藏?

html - 如何在 Angular 组件中使用嵌套的 flexbox?

css - 使用 nth-child 选择连续的组?