在 CSS 中组合 :not() 选择器

发布于 2024-12-04 08:45:16 字数 429 浏览 2 评论 0原文

我试图选择 table 中的所有 tr 元素,除了第三个和第四个元素。我设法通过使用以下方法来做到这一点:

#table tr:not(:nth-child(3)):not(:nth-child(4))

我想组合这些选择器,因为我还有更多 :nth-child 条目。类似这样的东西,但它不起作用:

#table tr:not(:nth-child(3), :nth-child(4))

可以在 jQuery 中工作,但在 CSS 中不起作用。我正在使用 Chrome(我只需要它在那里工作)。

我无法找到适合这种情况的组合选择器。如何将选择器与 :not 结合起来?

I'm trying to select all tr elements inside a table, except the third and fourth. I managed to do so by using:

#table tr:not(:nth-child(3)):not(:nth-child(4))

I'd like to combine those selectors because I've some more :nth-child entries. Something like this, but it didn't work:

#table tr:not(:nth-child(3), :nth-child(4))

This does work in jQuery, but not in CSS. I'm using Chrome (and I only need it to work there).

I've not been able to find a combining selector for this case. How can I combine selectors with :not?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寄风 2024-12-11 08:45:16

选择器级别 3 只允许在其中包含一个 简单选择器一个 :not() 伪类。作为 jQuery 选择器,它之所以有效,是因为 jQuery 扩展了其 :not() 功能以允许任何选择器(如 .not() 方法) 。

但是,您的第二种语法是建议的 :not() 的增强 在选择器 4 中,其工作方式与您的第一个相同。尽管该示例(无论如何在撰写本文时显示)显示了 :not() 选择器链,但该提案表示:

否定伪类 :not(X) 是一种以选择器列表作为参数的函数符号。它表示一个未由其参数表示的元素。

这里的选择器列表只是一个以逗号分隔的选择器列表。

如果您需要否定包含组合符(>+~、空格等的选择器,例如 div p< /code>),不能在 CSS 中使用 :not();你必须使用 jQuery 解决方案。

Selectors level 3 does not allow anything more than a single simple selector within a :not() pseudo-class. As a jQuery selector, it works because jQuery extends its :not() functionality to allow any selector (like the .not() method).

However, your second syntax is one of the proposed enhancements to :not() in Selectors 4, and works equivalently to your first. Although the example (shown as of this writing anyway) shows a chain of :not() selectors, the proposal says:

The negation pseudo-class, :not(X), is a functional notation taking a selector list as an argument. It represents an element that is not represented by its argument.

Here a selector list is simply a comma-separated list of selectors.

If you need to negate selectors that contain combinators (>, +, ~, space, etc, for example div p), you can't use :not() in CSS; you'll have to go with the jQuery solution.

〆凄凉。 2024-12-11 08:45:16

虽然标记的答案是正确的,但我只是想指出,您也可以使用 css 实现您想要的效果,但只是以不同的方式。您可以选择这些并取消应用您不需要的内容,而不是使用 not。

#table tr {
    /* general case styling */
    color: blue;
}
#table tr:nth-child(3),
#table tr:nth-child(4) {
    color: black;
}

Although the marked answer is true I just want to point out that you can achieve what you want using css also but just in a different way. Instead of using not you can select those and unapply the stuff you don't want.

#table tr {
    /* general case styling */
    color: blue;
}
#table tr:nth-child(3),
#table tr:nth-child(4) {
    color: black;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文