`

对p标签嵌套块级元素的思考

 
阅读更多

今天在准备给学弟学妹讲css的子选择器时,列了一个简单的小demo,结果却发现了问题

<p class="maindiv">
        我是父元素
        <p>
            子元素
            <p>
                孙子元素
            </p>
        </p>
   </p>

 当用p的时候

 会发生无法包裹子元素,而使用div时候却可以

    <div class="maindiv">
        我是父元素
        <div>
            子元素
            <div>
                孙子元素
            </div>
        </div>
    </div>

 

 通过上网的查询和学习,发现原来p元素内无法包裹块级元素。

因为我们使用的DTD中规定了块级元素是不能放在<p>里面的,再加上一些浏览器纵容这样的写法:

<p>这是一个段落的开始

<p>这是另一个段落的开始

当一个<p>签还没结束时,遇到下一个块元素就会把自己结束掉,其实浏览器是把它们处理成这样:

<p>这是一个段落的开始</p>

<p>这是另一个段落的开始</p>

这也就解释了,为何firebug中最后会多出2个空的<p></p>。

很多浏览器把<body>视为一级,一部分块级元素二级,而有一部分不能自由嵌套的块级元素则被视为三级

,它们包括有:标题标记 的<h1>、<h2>、<h3>、<h4>、<h5>、<h6>、<caption>; 段落标记的<p>;分隔线<hr>和一个特别的元素<dt>(它只存在于列表元素<dl>的子一级)。

三级元素就是指,只能嵌套内联元素的块级元素。p也恰好是其中之一。其实在内联元素中,还是可以再区分一下的,有几个元素 (<img>、<input>等)比较特别,它们可以定义宽高。虽然在IE 浏览器里,所有的元素都可以定义宽高,但这是IE自己的标准,并非所有浏览器都支持,W3C称它们为replaced元素,其实它们也就是我们常说的行内块,虽然这些元素属于inline,但是却具有一定的block(可以设置宽高),我们也可以赋予任何元素css属性display:inline-block。本身具有inline-block的元素应该没有!

  • 大小: 3.1 KB
  • 大小: 3.9 KB
分享到:
评论

相关推荐

    CSS文档流与块级元素(block)、内联元素(inline)

    2. **不能嵌套块级元素**:内联元素内部不能直接包含块级元素,除非通过CSS将其转换为内联元素。 3. **高度宽度设置无效**:内联元素的高度和宽度通常无法直接设置,因为它们是基于内容自动调整的。 4. **常见示例**...

    行内块级元素.txt

    4. **嵌套兼容性**:块级元素可以包含其他块级元素或行内元素,但行内元素不能包含块级元素。 常见的块级元素包括但不限于: - `&lt;address&gt;`:用于定义文档或文章的联系信息。 - `&lt;center&gt;`:虽然HTML5不推荐使用,...

    重要知识XHTML标签的嵌套规则.pdf

    2. 不应将块级元素放置在`&lt;p&gt;`标签内部。这意味着`&lt;p&gt;`不能包含`&lt;ol&gt;`, `&lt;ul&gt;`, `&lt;div&gt;`等块级元素,因为`&lt;p&gt;`通常用于定义段落,而其他块级元素应独立于段落之外。 3. 特殊的块级元素如`&lt;h1&gt;`到`&lt;h6&gt;`,`&lt;p&gt;`和`...

    XHTML标签的嵌套规则.pdf

    例如,标签可以包裹其它块级标签如和&lt;p&gt;,以及内联标签,但是在示例中也展示了错误的嵌套,如一个标签错误地包裹了一个。这些错误应该在编写时避免,并通过编辑器或者校验工具进行检查和修正。 综上所述,掌握XHTML...

    HTML5在a标签内放置块级元素示例代码

    在这个示例中,我们可以看到一个a标签成功地包裹了一个div元素,而这个div元素内部又包含了h1和p块级元素。这种方式在HTML5中是完全合法的,并且在现代浏览器中得到了很好的支持。 尽管这种做法在很多情况下都是...

    html 内联元素和html 块级元素概述及区别

    2. 内联元素内部可以包含块级元素,虽然不常见,但这样做可以改变内联元素的高度,比如在一个`&lt;a&gt;`标签中嵌套一个`&lt;div&gt;`。 了解这些基本概念后,开发者可以更有效地利用HTML和CSS来构建网页,实现所需的布局效果。...

    HTML标签嵌套规则详细归纳适合新手朋友

    `&lt;p&gt;`是段落标签,通常用于包裹一段连续的文本,因此不能在其内部嵌套其他块级元素。如`&lt;p&gt;&lt;div&gt;&lt;/div&gt;&lt;/p&gt;`这样的写法是错误的。 3. 特殊的块级元素,如`&lt;h1&gt;`至`&lt;h6&gt;`(标题标签)和`&lt;p&gt;`(段落标签),只能包含...

    c标签遍历集合嵌套的List集合

    ### c标签遍历集合嵌套的List集合 在Java Web开发中,经常需要处理复杂的集合数据结构,并将其展示到前端页面上。对于嵌套的集合(例如:List中包含List),使用`c`标签库(JSTL)进行遍历是一种常见的做法。本文将...

    XHTML标签的嵌套规则分析

    本文主要探讨XHTML标签的嵌套规则,尤其是块级元素和内嵌元素之间的关系。 首先,XHTML标签分为块级元素(block-level elements)和内嵌元素(inline elements)。块级元素如`&lt;div&gt;`、`&lt;ul&gt;`、`&lt;li&gt;`、`&lt;h1&gt;`到`...

    web前端:表单、块级元素、内联元素、iframe嵌套框架、扩展后端mvc模式

    内容偏门,适合打基础,补足基础的同志们

    html标签的嵌套规则介绍

    2. 块级元素不能被放置在`&lt;p&gt;`标签内。这是因为`&lt;p&gt;`是用于定义段落的,通常只包含文本内容,不应该包含其他块级元素。示例错误的代码包括`&lt;p&gt;&lt;div&gt;&lt;/div&gt;&lt;/p&gt;`和`&lt;p&gt;&lt;ol&gt;&lt;li&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;`。 3. 特殊的几个块级...

    JS获取元素多层嵌套思路详解

    如果一段html嵌套过多,在js中获取还是比较麻烦的,我写了几套方案,大家可以参考参考,如果你有...元素多层嵌套,JS获取问题&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;span&gt;span &lt;span&gt;span &lt;span&gt;1 &lt;spa

    jsp自定义嵌套标签

    3. **配置web.xml**:在Web应用程序的部署描述符`web.xml`中,添加对标签库的引用,确保所有使用该标签的JSP页面都能正确解析。 4. **在JSP页面中使用标签**:通过`&lt;%@ taglib %&gt;`指令引入标签库,并使用`&lt;prefix&gt;`...

    多层tab标签嵌套支持无连接分类

    在网页设计中,Tab标签是一种常见的用户界面元素,它用于组织和展示大量信息,通过切换不同的标签页,用户可以方便地浏览和访问相关内容。多层Tab标签嵌套是一种更复杂的设计模式,它允许在一个Tab内再包含其他子Tab...

    利用HTML实现一个个人信息表的网页整理.docx

    2. 块级元素可以嵌套块级元素和行内元素,行内元素则只能包含文本和其他行内元素。 3. 块级元素允许设置宽度和高度,而行内元素设置的宽度和高度通常不起作用。 在进行网页布局时,经常需要对元素进行定位。对于...

    HTML基本元素.docx

    * 块级元素:例如 div、p、h1 等,占据一整行,可以包含其他元素。 * 行级元素:例如 span、a 等,占据一部分行,不能包含其他元素。 * 空元素:例如 br、hr 等,没有内容的 HTML 内容。 HTML 元素的嵌套规则: * ...

    block 和 inline 的区别

    块级元素还可以包含其他块级元素和内联元素,但某些特定元素(如`&lt;p&gt;`)只能包含内联元素,不允许嵌套块级元素。 相比之下,内联元素(如`&lt;span&gt;`、`&lt;a&gt;`、`&lt;strong&gt;`、`&lt;em&gt;`、`&lt;label&gt;`、`&lt;input&gt;`、`&lt;select&gt;`、...

Global site tag (gtag.js) - Google Analytics