代码之家  ›  专栏  ›  技术社区  ›  Tal Rofe

为什么块元素的<p>嵌套在<span>导程中?

  •  2
  • Tal Rofe  · 技术社区  · 7 年前

    作为 <span> 是一个内联元素,并且 <p> 是块元素,我无法理解如何嵌套 <P & GT; A中的元素 <跨度> 元素将产生一个块元素。下面是我的例子:

    div {
      background-color: cyan;
      border: solid;
    }
    
    p {
      border: solid;
    }
    <div>
      <span><p>STACK OVERFLOW</p> </span>
      <span><p>STACK OVERFLOW</p></span>
      <span><p>STACK OVERFLOW</p></span>
    </div>
    1 回复  |  直到 7 年前
        1
  •  3
  •   Tsundoku    7 年前

    你根本不能套一个 p A中的元素 span 元素。这个 span element's content model 应该是 phrasing content ,不包括以下元素 和标题元素。自从 跨度 元素的结束标记不可omissible(即它是必需的),而 元素的开始标记没有隐式关闭 跨度 元素,这样您会得到一个验证错误。然而,浏览器试图从错误中恢复,但它们仍然呈现 元素作为块元素。

    为了避免将来出现这种类型的错误,我建议使用 W3C's HTML Validator 和咨询顾问 HTML5 specification (或类似参考)关于内容模型。