`

对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
分享到:
评论

相关推荐

    自定义jsp嵌套标签

    自定义jsp嵌套标签,自定义jsp嵌套标签,自定义jsp嵌套标签

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

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

    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

    html标签的嵌套规则介绍

    XHTML的标签有许多:div、ul、li、dl、dt、dd、h1~h6、p、a、addressa、span、 strong……我们在运用这些标签搭建页面结构的时候,是可以将它们无限嵌套的,但是,嵌套也需要有一定规则,不能任由自己的个人习惯胡乱...

    jsp自定义嵌套标签

    jsp自定义嵌套标签 自定义嵌套标签的定义和使用

    HTML中的块级、行级元素,特殊字符,嵌套规则

    如果介绍HTML网页基本标签的嵌套规则,首先要说的就是元素的分类。元素可以划分为块级元素和行级元素,块级元素是什么?它可以独占一行,可以设置宽高度,默认是100%;行级元素与之相反,它的内容决定它的宽高度,...

    XHTML标签嵌套规则

    strict模式下,XHTML标签的嵌套规则。

    搭建html网页结构

    web前端相关。块级标签可以嵌套所有行内标签,和部分块级标签。部分特殊块级标签只能嵌套行内标签 行内标签不可嵌套块级标签,只能签到行内标签。

    XHTML标签的嵌套规则分析

    提到 XHTML 标签的嵌套规则,我们先得知道有这么二类 XHTML 标签,一类叫做 块级元素(block),一类叫做 内嵌元素(inline,也有许多人叫它:内联、行内、线级等)。 块级元素 和 内嵌元素 的划分标准很简单,请把...

    ThinkPHP模板Volist标签嵌套循环输出多维数组的方法

    ThinkPHP 中对 volist 标签嵌套使用可实现多维数组的输出。 volist 嵌套使用 一般的二维数组,可以用 volist 标签直接循环输出。对于多维数组,则需要对其中的数组成员再次使用 volist 标签嵌套循环输出。 构建一个...

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

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

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

    懒人之家在此之前曾推出过多种tab标签效果,相信大家用的已经很熟悉了。今天再给大家推荐一个tab标签嵌套效果,不同的是此次推荐的效果支持tab标签链接为空 ,需要的童鞋可以下载使用

    HTML5标签嵌套规则详解【必看】

    本文将详细介绍html5的标签嵌套规则   分类 html5出现之前,经常把元素按照block、inline、inline-block来区分。在html5中,元素不再按照display属性来区分,而是按照内容模型来区分,分为元数据型(metadata ...

    s标签 list嵌套list

    s标签 如何将 list嵌套list 数据,然后再jsp页面去值!

    HTML开发王

    5.2.1 段落(p元素) 5.2.2 控制换行(br元素) 5.2.3 连字符 5.2.4 预格式化文本(pre元素) 5.2.5 段落的视觉呈现 5.3 标题字体(h#元素) 5.4 标记文档改变:ins和del元素 5.5 基本文字格式(tt、i、b、big、small、strike...

    Thinkphp的volist标签嵌套循环使用教程

    本文较为详细的对ThinkPHP的volist标签嵌套的用法阐述如下: 首先,在Thinkphp开发手册中,有关于标签嵌套的解释说明。如下: 标签嵌套: 模板引擎支持标签的多层嵌套功能,可以对标签库的标签指定可以嵌套。 系统...

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

    XHTML的标签有许多:div、ul、li、dl、dt、dd、h1~h6、p、a、addressa、span、 strong……我们在运用这些标签搭建页面结构的时候,是可以将它们无限嵌套的,但是,嵌套也需要有一定规则,不能任由自己的个人习惯胡乱...

    Python实现嵌套列表及字典并按某一元素去重复功能示例

    主要介绍了Python实现嵌套列表及字典并按某一元素去重复功能,涉及Python列表嵌套列表、列表嵌套字典,及按照某一元素去重复的相关操作方法,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics