剖析html对标准标签和自定义标签闭合与不闭合渲染问题

时间:2022-09-07 14:30:14

昨天在修改去年写的系统的时候无意中看到了当时写的一个利用标准标签未闭合在单元格内把整个单元格颜色渲染成红色的效果,如下:

剖析html对标准标签和自定义标签闭合与不闭合渲染问题当时的问题是从后台返回来的是个int整数而%是写在页面上的如图剖析html对标准标签和自定义标签闭合与不闭合渲染问题

这 时候就出现怎么把后面的%也渲染成红色的问题,当时我用的是标签label未闭合跟了一个只有闭合的自定义标签来实现的,看到这个我突然有些疑惑浏览器对 标签的闭合渲染到底是怎么的处理方式,为啥这个错误的闭合方式却没有引起布局的错乱,于是我做了一个研究实验来剖析下浏览器对标准标签和自定义标签闭合与 不闭合渲染的问题。为了使条理更清晰我整理了一下实验顺序,一步步来剖析下出现的几个问题。

第一:浏览器以什么样的方式来渲染标签

div之后span之前 紧跟span

div之外span之前span之后

代码如下:

<div style='color:green;'>div之后span之前
<span style='color:red;'>紧跟span
</div>
div之外span之前</span>span之后

差异对比效果代码如下(不好意思这里编辑器老是改变我的代码只能截图了):

IE10.

剖析html对标准标签和自定义标签闭合与不闭合渲染问题

IE9.

剖析html对标准标签和自定义标签闭合与不闭合渲染问题

<span style='color:blue;'>span之后div之前
<div style='color:green;'>div之后span之前
<span style='color:red;'>紧跟span
</span>
span闭合1之外闭合2之前</span>
span之外闭合div之前
</div>
div之外

从上面的对比可以看出浏览器应该是从外到内以开始标签为起点依次查找成对的标签做渲染, 有点绕人,可以这么理解浏览器从上到下先把标签入组,然后从最外的起始标签开始查找他的闭合标签渲染,依次执行,页面显示的总是最后渲染出来的所有最内的 总是最后渲染的最后显示的(这里ie9没有找到闭合的就放弃了渲染)。明白这个我们接下来做第二个实验.

实验二:标准标签闭合与不闭合渲染

3 label标准标签闭合里标准标签之外 分隔区分的单元格啥也没有 标准标签span之后label结束之前标准标签label结束之后,后面啥也没有了span没有闭合

代码如下:

<table style='width:100%;border:1px solid black;'>
<tr>
<td>3</td>
<td>
<label style="color: red;">label标准标签闭合里</label>标准标签之外</td>
<td>分隔区分的单元格啥也没有</td>
<td><span style="color: red;">标准标签span之后label结束之前</label>标准标签label结束之后,后面啥也没有了span没有闭合</td>
</tr>
</table>

本实验还和实验一说明的是一个问题,这里主要是和下面几个做对比的但被我现在拆开了结束会给出总体对比效果与代码。

实验三:自定义标签标签之内闭合

剖析html对标准标签和自定义标签闭合与不闭合渲染问题

代码如下:

<table style='width:100%;border:1px solid black;'>
<tr>
<td>2</td>
<td>
<label style="color: red;">label标准标签带闭合之内</label>标准标签闭合之外</td>
<td>分隔区分的单元格啥也没有</td>
<td>
<la style="color: red;">自定义标签la之内</la>
</td>
</tr>
</table>

由上可以看出自定义标签闭合浏览器像标准标签一样渲染

实验三:不同的自定义标签开始和结束组合以及不同浏览器的渲染方式

IE10效果如下

剖析html对标准标签和自定义标签闭合与不闭合渲染问题

IE9和谷歌火狐效果如下

剖析html对标准标签和自定义标签闭合与不闭合渲染问题

为啥没有提到ie78因为他们对自定义的不渲染忽略他们不做研究,代码如下:

 <table style='width:100%;border:1px solid black;'>
<tr>
<td>4</td>
<td>
<label style="color: red;">标准标签label闭合之内</label>闭合之外</td>
<td>分隔区分的单元格啥也没有</td>
<td>
<la style="color: red;">
自定义标签la开始之后自定义标签lab结束之前</lab>lab之后没有了la没有结束fff注意这里分别在ie火狐谷歌中看效果</td>
</tr>
<tr>
<td>5</td>
<td>
<label style="color: red;">标准标签label闭合了</label>标准标签闭合之外</td>
<td>分隔区分的单元格啥也没有</td>
<td>
<la style="color: red;">自定义标签la开始之后自定义标签lab没有开始lab结束之前</lab>lab结束之后la结束之前</la>
fff注意这里分别在ie火狐谷歌中看效果</td>
</tr>
</table>

由此看出:1.IE9和谷歌和火狐浏览器对非标准标签渲染是查找对称性,如<la></la>和<la></lab></la>这是一组相同的渲染

2.IE10查找自定义标签两两成对不要求对称(这里没有提到里面插入标准标签在自定义标签里面下面实验将涉及)

实验四:自定义标签和标准标签组合

IE10效果如下:

剖析html对标准标签和自定义标签闭合与不闭合渲染问题

IE9和谷歌火狐效果如下:

剖析html对标准标签和自定义标签闭合与不闭合渲染问题

代码如下:

<table style='width:100%;border:1px solid black;'>
<tr>
<td>1</td>
<td>
<label style="color: red;">label标准标签带闭合里</label>标准标签之外</td>
<td>分隔区分的单元格啥也没有</td>
<td>
<la style="color: red;">la自定义标签la和标准标签label结束之前</label>标准标签结束之后自定义标签lab之前</lab>自定义标签lab之后最后自定义标签la闭合</la>
fff注意这里分别在ie火狐谷歌中看效果</td>
</tr>
</table>

结合上一个实验看出浏览器对自定义标签和标准标签渲染方式:1.IE9和谷歌和火狐浏览器对非标准标签渲染是查找对称性,如<la></la>和<la></lab></la>这是一组相同的渲染

2.ie10
对标准标签和非标准标签是分开渲染,非标准标签渲染方式是查找不认识的对子进行渲染,如:<la></la>
和<la></lab>和<la></label></lab>这三个就是相同的一组渲染

总效果图:

IE10如下:

剖析html对标准标签和自定义标签闭合与不闭合渲染问题

IE9效果如下:

剖析html对标准标签和自定义标签闭合与不闭合渲染问题

谷歌火狐效果如下:

剖析html对标准标签和自定义标签闭合与不闭合渲染问题

总结:

1.浏览器从外到内以开始标签为起点依次查找成对的标签做渲染

2.IE9和谷歌和火狐浏览器对非标准标签渲染是查找对称性,如<la></la>和<la></lab></la>这是一组相同的渲染

3.ie10
对标准标签和非标准标签是分开渲染,非标准标签渲染方式是查找不认识的对子进行渲染,如:<la></la>
和<la></lab>和<la></label></lab>这三个就是相同的一组渲染

以上纯属个人拙见,如有错误欢迎指正,谢谢。

剖析html对标准标签和自定义标签闭合与不闭合渲染问题的更多相关文章

  1. &lbrack;原创&rsqb;java WEB学习笔记42:带标签体的自定义标签,带父标签的自定义标签,el中自定义函数,自定义标签的小结

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  2. Django框架(七)—— 模板层:变量、过滤器、标签、自定义标签和过滤器

    目录 模板层:变量.过滤器.标签.自定义标签和过滤器 一.模板层变量 1.语法 2.使用 二.模板层之过滤器 1.语法 2.常用过滤器 3.其他过滤器 三.模板值标签 1.for标签 2.if标签 3 ...

  3. 从零开始学spring源码之xml解析&lpar;二&rpar;:默认标签和自定义标签解析

    默认标签: 上一篇说到spring的默认标签和自定义标签,发现这里面东西还蛮多的.决定还是拆开来写.今天就来好好聊聊这两块是怎么玩的,首先我们先看看默认标签: private void parseDe ...

  4. JSP标签:jsp内置标签、jstl标签、自定义标签

     一.jsp标签的分类: 1)内置标签(动作标签): 不需要在jsp页面导入标签 2)jstl标签: 需要在jsp页面中导入标签 3)自定义标签 : 开发者自行定义,需要在jsp页面导入标签    1 ...

  5. Jsp开发自定义标签,自定义标签将字符串转成指定的时间格式显示

    本例以将 字符串格式的时间转成指定的时间格式显示. 第一步.定义一个标签处理程序类,需要集成javax.servlet.jsp.tagext.TagSupport,代码如下: import java. ...

  6. 一、JSP标签介绍&comma;自定义标签

    一.JSP标签介绍 1. 标签库有什么作用 自定义标签库是一种优秀的表现层技术,之前介绍的MVC模式,我们使用jsp作为表现层,但是jsp语法嵌套在html页面,美工还是很难直接参与开发,并且jsp脚 ...

  7. Django框架(六)--模板层:变量、过滤器、标签、自定义标签和过滤器

    将页面的设计和Python的代码分离开会更干净简洁更容易维护. 我们可以使用 Django的 模板系统 (Template System)来实现这种模式 # django模板修改的视图函数 def c ...

  8. Django框架之第五篇(模板层) --变量、过滤器、标签、自定义标签、过滤器,模板的继承、模板的注入、静态文件

    模板层 模板层就是html页面,Django系统中的(template) 一.视图层给模板传值的两种方法 方式一:通过键值对的形式传参,指名道姓的传参 n = 'xxx'f = 'yyy'return ...

  9. (三十)JSP标签之自定义标签

    创建一个类,引入外部jsp-api.jar包(在tomcat 下lib包里有),这个类继承SimpleTagSupport 重写doTag()方法. jspprojec包下的helloTag类: 1 ...

随机推荐

  1. OpenERP 使用与开发笔记(一)

    一直关注OpenERP,但一直未真正使用.最近一些数据想规范管理,免得使和EXCEL与WORD等到处找,所以想到OpenERP的自定义功能比较好,就再次找来相关资料重新拾掇起来.在这过程中,发现了许多 ...

  2. Shortest Word Distance

    Given a list of words and two words word1 and word2, return the shortest distance between these two ...

  3. au3 制作自动安装wps 特别是:控件下的edit 要修改路径

    #RequireAdmin#Region ;**** 由 AccAu3Wrapper_GUI 创建指令 ****#AccAu3Wrapper_Icon=bitbug_favicon (2).ico#A ...

  4. U3D C&num;脚本的生命周期

    MonoBehaviour是每个脚本的基类. 每个Javascript脚本自动继承MonoBehaviour,使用C#或Boo时,需要显式继承MonoBehaviour. 一开始实例化,直到结束实例被 ...

  5. 能分析压缩的日志,且基于文件输入的PYTHON代码实现

    确实感觉长见识了. 希望能坚持,并有多的时间用来分析这些思路和模式. #!/usr/bin/python import sys import gzip import bz2 from optparse ...

  6. Java Spring MVC

    Spring MVC的实现包括 实现Controller类和基于注解的Controller RequstMapping方式 依赖: <!-- https://mvnrepository.com/ ...

  7. Effective STL 为包含指针的关联容器指定比较类型

    // 为包含指针的关联容器指定比较类型.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <set> #incl ...

  8. V2019 Super DSP3 Odometer Correction Vehicle List

    Comparing v2017 Super DSP3 mileage programmer, the newest V2019 Super DSP III adds newer vehicles, i ...

  9. ReactDom

    今天工作中使用了这个,感觉很好用啊! 首先: 这个ReactDom是干嘛用的? 答:   react-dom 包提供了 DOM 特定的方法,可以在你的应用程序的顶层使用,如果你需要的话,也可以作为 R ...

  10. Activity启动模式(lauchMode)

    Activity启动模式(lauchMode) 本来想针对Activity中的启动模式写篇文章的,后来网上发现有人已经总结的相当好了,在此直接引用过来,并加上自己的一些理解,在此感谢原作者. 文章地址 ...