css-selectors - 堆叠 CSS3 结构伪类

标签 css-selectors css

在练习 CSS3 伪类和选择器可能派上用场的不同场景时,我遇到了一些我无法弄清楚的事情!

情况是这样的。我想修改一段文本的第一个非空段落的 :first-of-type::first-letter。我不确定伪类是否可以堆叠。这是我想出的(当然行不通)

.article-body > p:not(:empty):first-of-type::first-letter { ... }

给定以下标记:

<div class="article-body">
    <p></p>
    <p>The "T" in this paragraph should be the one affected.</p>
</div>

我能想到的唯一猜测是伪类(即:not() 和 :first-of-type)不能相互叠加。这很奇怪,因为您可以将伪元素和其他伪类堆叠在一起...

关于如何实现这一点有什么想法吗?

最佳答案

:first-of-type 选择第一个 p,顾名思义,而不是你可能会选择的第一个非空 p想要。

它们堆叠得很好,但是 :first-of-type 纯粹在 tag(即类型)上运行,而不是在前面的复杂选择器上运行。所以你最终只是寻找第一个 p,而且第一段也不应该是空的。那是不存在的。

假设空段落可能出现在整个文本中,并且您只希望第一个非空段落受到影响,我认为仅使用一个选择器是不可能做到这一点的。这是我能想到的最好的:

p:first-of-type::first-letter,
p:empty + p::first-letter { text-transform: uppercase; /* ... */ }

p:not(:empty) ~ p::first-letter { text-transform: inherit; /* reset */ }

这将仅将 CSS 应用于第一个非空段落(好吧,也应用于第一个空段落,但无论如何它都不会做任何事情)。

关于css-selectors - 堆叠 CSS3 结构伪类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1829174/

相关文章:

CSS:#id .class VS .class 性能。哪个更好?

html - 删除标题和页面之间的空间

jquery - 我可以通过像在 CSS 中那样对它们进行分组来将相同的样式应用于 jQuery 中的两个元素吗?

css - 不将配置应用于css中一个 block 中的多个类的某个类

java - 自动完成文本框第一个选项选择

select - 如何使用 selectAll 选择多个选择器?

javascript - querySelector 在 Polymer 2 的 Shadow DOM 中不起作用

css - Google 的新 CSS 主题

css - 下拉菜单悬停时没有延迟。 "bootstrap4"

Jquery循环,在滚动图像的顶部放置一个div