html - 一般兄弟选择器 - 奇怪的行为

标签 html css css-selectors

据我了解,CSS 中的通用兄弟选择器选择元素的降序兄弟。

考虑以下代码:

<head>
<style>
h3 ~ div {
    color: #FF00FF;
}
</style>
</head>
<body>
    <h3>Header 3</h3>
    <div>Sibling divivion</div>
    <p>
        <p>Nested paragraph</p>
        <div>Nested division</div>
    </p>
</body>

我希望通用兄弟选择器将 h3 的所有下降 sibling 作为 div 元素。

有人可以解释为什么选择“嵌套划分”吗?我不认为它是 h3 的 sibling ?

最佳答案

div 实际上是 h3 元素的兄弟元素。 p 元素中不能有 p 元素和 div 元素:

"The P element represents a paragraph. It cannot contain block-level elements (including P itself)."

引用:9.3.1 Paragraphs: the P element

当浏览器遇到第二段时,它会结束第一段,因此第二段和 div 元素在第一段之后结束:

<h3>Header 3</h3>
<div>Sibling divivion</div>
<p></p>
<p>Nested paragraph</p>
<div>Nested division</div>
<p></p>

段落的结束标记是可选的,因此段落以结束标记结束,或者在下一个 block 元素开始的地方结束。第一段的预期结束标记缺少起始标记,并作为单独的段落结束。

关于html - 一般兄弟选择器 - 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27433284/

相关文章:

jquery - 响应式数据表(createdRow)

javascript - 对页面上的其中一张图像产生淡入淡出效果。

python - lxml: cssselect(): AttributeError: 'lxml.etree._Element' 对象没有属性 'cssselect'

CSS3 不是最后一个 child 的选择器

html - SVG 元素似乎具有任意高度

php - 我怎样才能提取某些 HTML 标签,例如<ul> 在 PHP 中将正则表达式与 preg_match_all 结合使用?

javascript - Onclick CSS 替代方案

javascript - 以编程方式在下拉列表中选择一个选项 <select>

css - CSS 选择器中的 OR 语句

css - 任何人都可以在 css 文件中提供有关 "-webkit"的一些信息吗?