最近,在码代码的时候,就是下面的这段代码,我犯了一个很不起眼,但犯了就致命的BUG。

<body>
<p>
<ol>
<li>Hello</li>
</ol>
</p>
<div>How are you?</div>
</body>
<script src="jquery-3.1.1.js"></script>
<script>
var result= $("p").filter(function(index) {
console.log($("ol", this).length== 0)
return $("ol", this).length == 0;
});
</script>

因为只要你犯了,估计检查半天都找不出。我可是费了老劲,才发现是<p>和<ol>嵌套的问题。但是两个不都是块级元素,难道不能嵌套么?而且最后的结果居然是自动补全了两个</p>标签。

它涉及到了块级元素和内联元素的嵌套问题。这是一个特别容易被我们遗忘的知识点!!!现在就来让我给你们补一下课也给我自己加深一下印象~

1、块级元素(block)、内联元素(inline)和可变元素(inline-block)的定义和区别

2、各类具体包含明细

3、嵌套规则和某些特殊标签 


定义和区别

  • display:block
  1. block元素会独占一行,多个block元素会各自新起一行。默认情况下,block元素宽度自动填满其父元素宽度。
  2. block元素可以设置width,height属性。块级元素即使设置了宽度,仍然是独占一行
  3. block元素可以设置margin和padding属性。
  • display:inline
  1. inline元素不会独占一行,多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换一行,其宽度随元素的内容而变化
  2. inline元素设置width,height属性无效
  3. inline元素的margin和padding属性,水平方向的padding-left, padding-right, margin-left, margin-right都产生边距效果;但竖直方向的padding-top, padding-bottom, margin-top, margin-bottom不会产生边距效果。
  4. 可以通过display:block来将它变成为块元素之后,就可以用css其他样式应用了。
  • display:inline-block
  1. 简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现。
  2. 元素展现inline元素的属性,但是可以设置自己的宽和高了。比如我们可以给一个link(a元素)inline-block属性值,使其既具有block的宽度高度特性又具有inline的同行特性
  • 区别
  1. 块级元素一般用来搭建网站架构、布局、承载内容
  2. 内联元素一般用来在网站内容中的某些细节或者部位,用以“强调、区分样式、上标、下标、锚点”等等。

  3. 它们可以互相转换。display:inline|block

  • 注意
  1. 一般我们会用display:block,display:inline或者display:inline-block来调整元素的布局级别,其实display的参数远远不止这三种,仅仅是比较常用而已。
  2. IE(低版本IE)本来是不支持inline-block的,所以在IE中对内联元素使用display:inline-block,理论上IE是不识别的,但使用display:inline-block在IE下会触发layout,从而使内联元素拥有了display:inline-block属性的表象。

各类具体包含明细

  • 块元素(block element) HTML标签分类明细
  1. address - 地址
  2. blockquote - 块引用
  3. center - 举中对齐块
  4. dir - 目录列表
  5. div - 常用块级容易,也是css layout的主要标签
  6. dl - 定义列表
  7. fieldset - form控制组
  8. form - 交互表单 (只能用来容纳其它块元素)
  9. h1-h6 - 标题
  10. hr - 水平分隔线
  11. isindex - input prompt
  12. menu - 菜单列表
  13. noframes - frames可选内容,(对于不支持frame的浏览器显示此区块内容
  14. noscript - 可选脚本内容(对于不支持script的浏览器显示此内容)
  15. ol - 排序表单
  16. p - 段落
  17. pre - 格式化文本
  18. table - 表格
  19. ul - 非排序列表
  • 内联元素(inline element) HTML标签分类明细(黄色高光标明的是特殊的内联元素,可以设置高宽度,为可变元素)
  1. a - 锚点
  2. abbr - 缩写
  3. acronym - 首字
  4. b - 粗体(不推荐)
  5. bdo - bidi override
  6. big - 大字体
  7. br - 换行
  8. cite - 引用
  9. code - 计算机代码(在引用源码的时候需要)
  10. dfn - 定义字段
  11. em - 强调
  12. font - 字体设定(不推荐)
  13. i - 斜体
  14. img - 图片
  15. input - 输入框
  16. kbd - 定义键盘文本
  17. label - 表格标签
  18. q - 短引用
  19. s - 中划线(不推荐)
  20. samp - 定义范例计算机代码
  21. select - 项目选择
  22. small - 小字体文本
  23. span - 常用内联容器,定义文本内区块
  24. strike - 中划线
  25. strong - 粗体强调
  26. sub - 下标
  27. sup - 上标
  28. textarea - 多行文本输入框
  29. tt - 电传文本
  30. u - 下划线
  31. var - 定义变量
  • 可变元素(inline-block element) HTML标签分类明细
  1. applet - java applet  
  2. button - 按钮  
  3. del - 删除文本  
  4. iframe - inline frame  
  5. ins - 插入的文本  
  6. map - 图片区块(map)  
  7. object - object对象  
  8. script - 客户端脚本

嵌套规则和某些特殊标签 

1、块状元素可包含内联元素或某些块元素,但内联元素不可包含块元素,只能包含内联元素。

  •     <div><h1></h1><p></p></div>     正确
  •     <a href="#"><span></span></a>    正确
  •     <span><div></div></span>     错误

 

2、块级元素不能放在<p>里面

  •     <p><ol><li></li></ol></p>    错误
  •     <p><div></div></p>  错误

 

3、有几个特殊块级元素只能包含内联元素或者可变元素,不能包含块级元素。这几个特殊标签是 h1~h6、p、dt

 

4、特殊的 li 内可包含 div 标签

  •     <li><div></div></li>

 

5、块级元素与块级元素并列、内联元素与内联元素并列

  •     <div><h2></h2><p></p></div>  正确
  •     <div><a href="#"></a><span></span></div>  正确
  •     <div><h2></h2><span></span></div>  错误

【疑点】<p></p>标签为什么不能包含块级标签?还有哪些特殊的HTML标签?的更多相关文章

  1. <p></p>标签为什么不能包含块级标签?还有哪些特殊的HTML标签?

    最近,在码代码的时候,就是下面的这段代码,我犯了一个很不起眼,但犯了就致命的BUG. <body> <p> <ol> <li>Hello</li& ...

  2. a标签包含块级元素问题

    a标签包含块级元素是不符合W3c标准的,但是淘宝也有这样的布局暂且认为可以这样(有时候布局需要这样写) 当a标签包含了div这样的块级元素时a标签是要转换成块级元素的使用display:block.但 ...

  3. html标签的显示模式(块级标签,行内标签,行内块标签)(转)

    html标签的显示模式(块级标签,行内标签,行内块标签)   今天讲课的时候,讲到了html中的标签的显示模式,大致分为块级标签和行内标签.那么初学者在刚使用标签的时候会发现有些属性在一些标签上不起作 ...

  4. p标签内不能嵌套块级标签

    今天突然发现一个问题,那就是p标签内不能嵌套块级标签 例如: <p><p></p></p> 会被浏览器解析成 我又把 div 嵌套在里面,发现还是这样 ...

  5. HTML中为何P标签内不可包含块元素?

    起因:在做项目时发现原本在DW中无误的代码到了MyEclipse6.0里面却提示N多错误,甚是诧异.于是究其原因,发现块级元素P内是不能嵌套DIV的. 深究:我们先来认识in-line内联元素和blo ...

  6. css块级标签、行内标签、行内块级标签

    <html><head lang="en"> <meta charset="UTF-8"> <title>< ...

  7. HTML开发之(块级标签,行内标签,行内块标签)

    显示模式的特性: 主要分为两大类: 块级元素:独占一行,对宽高的属性值生效:如果不给宽度,块级元素就默认为浏览器的宽度,即就是100%宽: 行内元素:可以多个标签存在一行,对宽高属性值不生效,完全靠内 ...

  8. HTML基础知识(块级标签,行内标签,行内块标签)

    块级元素:独占一行,对宽高的属性值生效:如果不给宽度,块级元素就默认为浏览器的宽度,即就是100%宽: 行内元素:可以多个标签存在一行,对宽高属性值不生效,完全靠内容撑开宽高! 其中还有一种结合两种模 ...

  9. HTML入门(转义字符、行内样式和块级元素、定位、锚点、跑马灯标签、图片标签、表格标签的讲解)

    一.转义字符由特殊字符包裹的文本 会当做标签去解析 对应不换行空格 对应全角空格 em是字体排印学的计量单位,相当于当前指定的点数.其占据的宽度正好是1个中文宽度,而且基本上不受字体影响.<对应 ...

随机推荐

  1. poj 3311(状态压缩DP)

    poj  3311(状态压缩DP) 题意:一个人送披萨从原点出发,每次不超过10个地方,每个地方可以重复走,给出这些地方之间的时间,求送完披萨回到原点的最小时间. 解析:类似TSP问题,但是每个点可以 ...

  2. logback错误日志发送邮件

    logback 一.介绍 logback是由log4j的作者开发的一个开源日志组件,用以替代log4j. logback由3个部分组成: ♦ logback-core (基础模块) ♦ logback ...

  3. 怎样使用ADO中的UpdateBatch方法(200分)

    诸位: 我在使用ADO组件(ADOQuery.ADODataSet)的BatchUpdate模式时,系统竟不认识UpdateBatch.CancelBatch方法.这是怎么回事?我的运行环境是Win2 ...

  4. 如何在低速率网络中测试 Web 应用

    大家看到标题后的第一个问题可能是:“我们需要这样做吗?” 如果我们开发的是局域网 Web 应用的话,可能没有必要这样做.但如果我们的 Web 应用面向的是互联网上的成千上万的用户,这样做就很必要了.因 ...

  5. 卡特兰数Catalan——定义、公式、模型总结

    推荐:卡特兰数总结 定义: f(i)表示,从(0,0)出发,到(i,i),每次只能向上或者向右走,并且不越过红线的方案数. 这个图片的点上的数字,其实告诉我们f[i],就可以根据这个n方dp得到. 其 ...

  6. RF - selenium - 常用关键字

    1. 打开浏览器 Open Browser    htpp://www.testclass.net    chrome 2. 关闭浏览器 Close Browsers Close All Browse ...

  7. 计数排序与桶排序(bucket sort)

    Bucket Sort is a sorting method that subdivides the given data into various buckets depending on cer ...

  8. HOJ 13102 Super Shuttle (圆的反演变换)

    HOJ 13102 Super Shuttle 链接:http://49.123.82.55/online/?action=problem&type=show&id=13102 题意: ...

  9. python的reduce函数的使用方法详解以及使用案例,相加,相乘(处理一个序列,然后把序列进程合并操作)

    1.求列表的数字相加之和,还是之前的习惯,写for循环来实现 num_1=[1,2,3,4,5,6,7,8,9] a=0 for n in num_1: #a=a+n a+=n print (a) C ...

  10. Git3:Git分支

    目录 一.概念 二.创建与合并分支 1.创建分支原理分析 2.创建分支语法 三.解决冲突 四.分支管理策略 1.保留分支历史 2.分支管理原则 五. bug分支 六.推送和拉取远程分支 一.概念 分支 ...