我想做的(显然不是在IE中)是:

p:not(.list):last-child + :text {
  margin-bottom: 10px;
}

这将给文本节点一个边距。(这可能吗?)我如何获得与CSS文本节点?


文本节点不能应用页边距或任何其他样式,因此必须在元素中应用样式。例如,如果您希望元素中的某些文本具有不同的样式,可以将其包装在span或div中。


使用CSS不能针对文本节点。我支持你;我希望你能……但是你不能:(

如果你不像@Jacob建议的那样将文本节点包装在<span>中,你可以给周围的元素填充而不是边距:

HTML

<p id="theParagraph">The text node!</p>

CSS

p#theParagraph
{
    border: 1px solid red;
    padding-bottom: 10px;
}

现在可以使用::target-text伪元素选择器将文本节点(未包装在特定标记中)定位到非常特定的用例中。查询参数(url编码;例如,空格必须编码为%20),匹配字符串的文本可以这样设计:

::target-text { /* color, background color, etc */ }

就像其他突出显示伪元素一样,只支持某些样式属性,如下所示。

有一个演示(父链接在MDN页面::target-text)。将'text'的查询参数字符串更改为不同的字符串,以查看不同的文本如何成为样式。

target-text伪元素选择器的一个限制是只能对第一个匹配的文本字符串设置样式。此外,截至2022年1月,浏览器的支持率为67.8%。