CSS-第一级psuedo级<;p>;在另一个标签之后

CSS-第一级psuedo级<;p>;在另一个标签之后,css,Css,psuedo类是否有一个等价物,第一个类型,但适用于前面有一个的,而不仅仅适用于第一个子标记 例如,我希望类型的第一个应用于前面的两段,而不仅仅是第一段: <head> <style> p{text-indent:1%;} p:first-of-type{text-indent:0%;} </style> <title>Mara's Tale</title> </head> <body>

psuedo类是否有一个等价物,第一个类型,但适用于前面有一个
的,而不仅仅适用于第一个子标记

例如,我希望类型的第一个应用于前面的两段,而不仅仅是第一段:

<head>
  <style>
    p{text-indent:1%;}
    p:first-of-type{text-indent:0%;}
  </style>
  <title>Mara's Tale</title>
</head>
<body>
  <h1>Chapter 1</h1>
  <p>This is a first-of-type.</p>
  <p>But this isn't (good!).</p>

  <h1>Chapter 2</h1>
  <p>This is not first-of-type, but I'd like it to be.</p>
  <p>This is not first-of-type (good!).</p>
</body>
</html>
为此:

h1 + p{
  text-indent: 0%;
}

p.dinkus {
  text-align: center;
  text-indent: 0%;
  font-size: 125%;
  margin-top: 6%;
  margin-bottom: 4%;
  white-space: pre;
}

p.dinkus + p{
  text-indent: 0%;
}
我想澄清一下,我的总体结构是:

<h1>Chapter 3</h1>
<p>Opening para - don't indent.</p>
<p>Non-opening para - do indent.</p>
<p class="dinkus">*                *                *</p>
<p>Para following a dinkus - don't indent.</p>
<p>Non-opening para, not following a dinkus - do indent.</p>
第三章
开头段落-不要缩进

非开头段落-缩进

***

在丁库后面的段落-不要缩进

非开头段落,不遵循丁库斯-杜缩进


*似乎是索尼的bug-Sigle和Calibre没有问题

你可以使用
x+y
选择器。它选择紧跟在x元素之后的所有y元素

p{文本缩进:1%;颜色:红色;}
h1+p{文本缩进:0%;颜色:蓝色;}
第1章
这是第一种类型

但这不是(好!)

第二章 这不是第一种类型,但我希望是


这不是第一种类型(很好!)。

您可以始终使用
CSS元素+元素选择器
,在这种情况下,h1+p应该针对前面有
h1
标记的所有
标记

h1+p{
文本缩进:1%;
颜色:红色
}
Mara的故事
第一章
这是第一种类型

但这不是(好!)

第二章 这不是第一种类型,但我希望是


这不是第一种类型(很好!)。

您可以使用
+
选择器,它基本上是指后面的一种

因此,在您的情况下,这意味着您可以简单地使用:

h1 + p
这将使您在h1之后以p为目标

如果您想要将h1之后的所有p元素作为目标,只需将
+
更改为
~

然后,您可以将CSS规则正常应用于此:)


顺便说一句,这是一张图表,可以帮助解释这一点:


不能使用CSS遍历DOM树。只有向下。从父项到子项。如果段落前面始终有标题,则为“是”。H1+PDO可以回答你的问题吗?
h1 + p