这是一个有效的选择器,是的;但 adiv
不是元素的有效子p
元素。所以 CSS 是有效的,但是您应用该选择器的 HTML 是无效的。
顺便说一句,除了嵌套div
在 中之外p
,您还有一个未封闭div
的包装p
,其后是</body>
标签。所以你的 HTML 是双重无效的,因为标签必须以打开它们的相反顺序关闭。
附录,正如评论中提出的(我本来不想费心添加这个,而是计划专注于 CSS 的语法),浏览器(当然是 Chromium 24/Ubuntu 12.10)在构建时“拯救”你的 HTML DOM,所以你从这里开始:
<p>
<any>...
<div class="myclass">Select this element to set background & border
<any>Other stuff may be here</any>
</div>
</any>
</p>
对于一个看起来像这样的 DOM(同样,在 Chromium 24/Ubuntu 12.10 中):
<p>
<any>...</any>
</p>
<div class="myclass">Select this element to set background & border
<any>Other stuff may be here</any>
</div>
<p></p>
JS 小提琴演示。
因此,如果您遇到的问题以及您提出问题的原因是CSS 没有选择/设置元素样式,原因仅仅是因为您使用了无效的 HTML,并且浏览器在构建时更改了您的 HTML (有效的)DOM,这意味着选择器不再匹配您最初的目标。
这就是为什么应该遵循 HTML 有效性规则的原因,它使它更易于使用(无论是今天,还是将来您或其他人必须重新访问时)。
哦,最后,&
字符也不应该直接在 HTML 中使用,它应该以某种方式编码,例如&
,因为该&
字符是 HTML 字符实体代码中的第一个字符。所以...您创建了三重无效的 HTML。