CSS 后代选择器

标签 css

对于这种选择器,“p span”将选择 p 的所有后代元素。

但是下面的代码为什么不起作用呢?

p span { font-weight:bold;color:blue }

<p>
    <p>
        <span>TEXT 1</span>
    </p>
    <p>
        <span>TEXT 2</span>
    </p>
    <span>TEXT 3</span>
    <span>TEXT 4</span>
    <span>TEXT 5</span>
</p>

TEXT 3 - 5 是第一级元素 p 的后代。但是他们为什么不以粗体和蓝色显示呢? (文本 1 - 2 确实显示了正确的样式)

最佳答案

<p>是 HTML 中的特例标记。您不能将段落嵌入到另一个段落中,打开两个 P 标签会隐式关闭前一个标签。您的代码实际上被解释为:

<p></p>   <---closed by having opened the next <p>
<p><span>TEXT1</span></p>
<p><span>TEXT2</span></p>
<span>3</span>
etc...

因此 3、4、5 跨度实际上不在 <p> 内完全没有。

关于CSS 后代选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9756031/

相关文章:

html - 使用网格布局在列之间留出空间

html - 我试图仅在一个部分上获得居中的背景图像

javascript - 内容可编辑不使用 localStorage 保存

CSS , GWT 和读取组合类名

html - 如何修改此 SQL 查询中的 XML 代码以突出显示表的特定行?

html - 图像在打印预览中调整大小

html - 奇怪的位置绝对 chrome 错误

html - Bootstrap 3 - 列不会居中对齐

javascript - 将工具提示添加到具有 css text-overflow :ellipses 的元素

html - 如何用BEM建立一个完全静态的多页面网站?