如何选择没有前导或尾随文本节点的元素? 我实验过使用:独生子< /Cord>伪类,但不幸的是,这似乎不考虑文本节点: <style type="text/css"> div span:only-child { color: red; } </style> <div> Test <span>This still becomes red :(</span> </div> <div> <span>This becomes red, as it should!</span> </div> <div> <span>This does not become red - great!</span> <span>This does not become red - great!</span> </div> 分区范围:独生子女{ 颜色:红色; } 试验 这仍然变为红色:( 这会变成红色,这是应该的! 这不会变成红色-太棒了! 这不会变成红色-太棒了!

如何选择没有前导或尾随文本节点的元素? 我实验过使用:独生子< /Cord>伪类,但不幸的是,这似乎不考虑文本节点: <style type="text/css"> div span:only-child { color: red; } </style> <div> Test <span>This still becomes red :(</span> </div> <div> <span>This becomes red, as it should!</span> </div> <div> <span>This does not become red - great!</span> <span>This does not become red - great!</span> </div> 分区范围:独生子女{ 颜色:红色; } 试验 这仍然变为红色:( 这会变成红色,这是应该的! 这不会变成红色-太棒了! 这不会变成红色-太棒了!,css,Css,我试图找到一种方法,在无法引入新类的情况下,检测特定元素在其容器元素中是否完全独立 有没有办法用CSS实现这一点 div:nth-child(2) span { color: red; } 有没有办法用CSS实现这一点 div:nth-child(2) span { color: red; } 不幸的是,没有 CSS工作组的一份“错误”清单中缺少了这样一个想法: 没有裸露的文本与元素混合。所有原始文本都应该有一个可寻址的、可设置样式的元素包裹它,必要时由CSS创建 文本节点不是元素,CS

我试图找到一种方法,在无法引入新类的情况下,检测特定元素在其容器元素中是否完全独立

有没有办法用CSS实现这一点

div:nth-child(2) span {
color: red;
}

有没有办法用CSS实现这一点

div:nth-child(2) span {
color: red;
}
不幸的是,没有

CSS工作组的一份“错误”清单中缺少了这样一个想法:

没有裸露的文本与元素混合。所有原始文本都应该有一个可寻址的、可设置样式的元素包裹它,必要时由CSS创建

文本节点不是元素,CSS不能选择(或忽略)不存在的元素


因此,在将文本合并到页面中时始终使用文本元素可能是最佳做法……您永远不知道何时可能需要对其进行样式设置。

好问题,但我认为您必须修改html才能做到这一点。坦率地说,您需要使用js来实现这一点,即使是W3Group也承认,不要求所有文本都在适当的格式中ext元素是一个错误。这可以避免所有这些问题。是的…这里需要JS。CSS不能选择(或忽略)不存在的元素。如果检查DOM节点(在javascript中)对于第二个div,由于换行符和缩进,您将有一个文本节点、一个Span元素和另一个文本节点。因此,使用javascript时,您需要只使用空格字符过滤文本节点,或者不使用缩进/新行。您的所有div不是都有文本节点围绕着您的Span吗?对于许多情况,元素之间的空白被忽略用于HTML,但仍被视为DOM中的文本节点。