Css 使用元素+元素将多个以下元素作为目标

Css 使用元素+元素将多个以下元素作为目标,css,css-selectors,Css,Css Selectors,我要做的是使用以下代码针对多个: h1+p { margin-left: 20px; } h2+p { margin-left: 27px; } h3+p { margin-left: 35px; } 以下是我试图达到的效果: 问题是,当有一个新的元素时,文本块显然会恢复到正常位置,没有边距,不再与标题对齐 像这样 有没有更好的方法来解决这个问题?或者一个适用于该问题的选项您可以通过使用通用同级选择器~而不是相邻同级选择器+,在某种程度上实现这一点: 但是要小心,特

我要做的是使用以下代码针对多个:

h1+p
{
    margin-left: 20px;
}

h2+p
{
    margin-left: 27px;
}

h3+p
{
    margin-left: 35px;
}
以下是我试图达到的效果:

问题是,当有一个新的元素时,文本块显然会恢复到正常位置,没有边距,不再与标题对齐

像这样

有没有更好的方法来解决这个问题?或者一个适用于该问题的选项

您可以通过使用通用同级选择器~而不是相邻同级选择器+,在某种程度上实现这一点:

但是要小心,特别是如果您的h1、h2、h3和p元素都共享同一个父元素。由于样式层叠的方式以及同级选择器的工作方式,最后一个h3元素后面的所有p元素都将获得35像素的边距,即使容器中的最后一个标题是h1或h2

例如,如果您有此降价:

# Heading 1 Paragraph Paragraph ## Heading 2 Paragraph Paragraph ### Heading 3 Paragraph Paragraph ## Heading 2 Paragraph Paragraph 最后四段将有35像素的边距,包括最后一个h2后面的两个,因为h3~p规则是级联顺序中的最后一个,并且所有元素共享同一父元素。这可能是你想要达到的效果,也可能不是,我猜不是

恐怕没有一个纯粹的CSS解决方案;您必须使用JavaScript对呈现的标记进行后期处理,以便根据标题将类等添加到段落中。

您可以使用常规同级选择器~而不是相邻的同级选择器+:

但是要小心,特别是如果您的h1、h2、h3和p元素都共享同一个父元素。由于样式层叠的方式以及同级选择器的工作方式,最后一个h3元素后面的所有p元素都将获得35像素的边距,即使容器中的最后一个标题是h1或h2

例如,如果您有此降价:

# Heading 1 Paragraph Paragraph ## Heading 2 Paragraph Paragraph ### Heading 3 Paragraph Paragraph ## Heading 2 Paragraph Paragraph 最后四段将有35像素的边距,包括最后一个h2后面的两个,因为h3~p规则是级联顺序中的最后一个,并且所有元素共享同一父元素。这可能是你想要达到的效果,也可能不是,我猜不是


恐怕没有一个纯粹的CSS解决方案;您必须使用JavaScript对呈现的标记进行后期处理,以便根据标题将类等添加到段落中。

这就是您想要实现的目标吗

这就是你想要实现的目标吗

这确实发生在我身上,但是层叠的问题使它不可用,它们需要与x标题内联,直到下一个标题,因为有嵌套的标题。但是谢谢你的想法。在这种情况下,你将无法用纯CSS实现这一点。这是不幸的。我希望保持这个干净和纯粹的CSS。无论如何,谢谢你的帮助。我确实想到了这一点,但是级联的问题使它不可用,它们需要与x标题内联,直到下一个标题,因为有嵌套的标题。但是谢谢你的想法。在这种情况下,你将无法用纯CSS实现这一点。这是不幸的。我希望保持这个干净和纯粹的CSS。无论如何,谢谢你的帮助。是的,这就是我正在尝试做的概念。谢谢你。是的,这就是我想要做的。谢谢你。