zoukankan      html  css  js  c++  java
  • html标签的嵌套规则

      我突然发现我学习了这么长时间的html,竟然在今天才发现这个规则,只恨自己太不认真了。事实上因为我在做jquery的:hover的练习的事后发现的,因为我发现p标签在嵌套的时候出现了和诡异的情形,我昨晚请教了做了php一年的室友,结果这个问题困扰了我们很长时间,给我俩气的直接睡觉去了。可见做了web一年的程序员都没有知道这个规则,这个规则是有被人多么的不重视,但是我感觉还是有必要学习的。下面就是这个规则:

    1.  块元素可以包含内联元素或某些块元素,但内联元素却不能包含块元素,它只能包含其它的内联元素:

      <div><h1></h1><p></p></div> —— 对

      <a href=”#”><span></span></a> —— 对

      <span><div></div></span> —— 错

      虽然最后一行代码是错误的,但是在html的文档结构中并没有出错。使用$('span:has(div)')也是没有问题的,最后的html文档也是没有问题的。但是有时候会出现bug。目前不知是什么bug。(有待完善)

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

      <p><div></div></p>;

      <p><p></p></p>

      这些都是错误的,因为最后html的文档会是这样的<p></p><div></div><p></p>和<p></p><p></p><p></p>。我在之前就遇到过这样的情况,可见这条规则值得注意的。

    3.  有几个特殊的块级元素只能包含内嵌元素,不能再包含块级元素,这几个特殊的标签是:

      h1、h2、h3、h4、h5、h6、p、dt。

      在这样的情况下,我试了一下这样的代码:

      <h2><div>123</div></h2>

      结果是html文档最终依旧是这个,使用$('h2:has(div)')也是没有错误的。但是,但是,但是.......当出现这样的代码的时候:

      <h2><h2></h2></h2>

      浏览器最后的html文档是:<h2></h2><h2></h2>,原本是嵌套的属于父子关系的标签成为了兄弟级别的了。与p标签不同的是h标签会出现2个兄弟元素,而同样的情况下p标签会演变成3个兄弟标签。是不是很怪?接下来,继续:<h2><h3></h3></h2>,结果是<h2></h2><h3></h3>,又变成了兄弟元素。最后放大招:<h2><p></p></h2>,结果是什么?没错,这个在html文档最终是不变的.....那么<p><h2></h2><p>,结果是什么呢?没错这个结果是<p></p><h2></h2><p></p>。

      那么,我们就需要总结一下了:

      p标签内部不能嵌套任何块级元素,h标签不能嵌套自身(即便是h2嵌套h3也不行),dt不能嵌套自身。有时候内联元素嵌套块级元素会出现bug

  • 相关阅读:
    ZMQ和MessagePack的简单使用(转)
    easyui datagrid列中使用tooltip
    在bat中执行sql,并配置windows计划任务,并隐藏命令窗口 (转)
    前端基于jquery的UI框架
    菜鸟学步之 爆破AspriseOCR 4.0
    C# 图片识别(支持21种语言) (转)
    IIS Web服务扩展中没有Asp.net 2.0
    遭遇sql server 2005 启动包未能正确加载需要重新安装错误,重装.NET FRAMEWORK经历分析
    利用Aspose.Cells完成easyUI中DataGrid数据的Excel导出功能
    JS Replace() 高级用法(转)
  • 原文地址:https://www.cnblogs.com/jyybeam/p/5775317.html
Copyright © 2011-2022 走看看