返回顶部
首页 > 资讯 > 前端开发 > node.js >html标签是闭合还是不闭合
  • 626
分享到

html标签是闭合还是不闭合

2024-04-02 19:04:59 626人浏览 薄情痞子
摘要

这篇文章主要介绍“html标签是闭合还是不闭合”,在日常操作中,相信很多人在html标签是闭合还是不闭合问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”html标签是闭合还是不

这篇文章主要介绍“html标签是闭合还是不闭合”,在日常操作中,相信很多人在html标签是闭合还是不闭合问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”html标签是闭合还是不闭合”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

无内容元素(Void elements)

无内容元素是一种不能包含任何内容的特殊元素。而其他元素,比如 <div>,则既可以不包含任何内容,又可以包含另一个元素或者文字。

比较常见的无内容元素有:

<br> <hr> <img> <input> <link> <meta>

不太常见的无内容元素有:

<area> <base> <col> <command> <embed> <keygen> <param> <source> <track> <wbr>

现存所有的无内容元素就是以上这些了。

<br></br> 这样的写法是不合法的 HTML 写法,因为它暗示 br 可以包含内容(但 <br>你好!</br> 是完全没有意义的)。而 <br> 和 <br /> 这两种写法都很常见。

尽管我们都知道 XHTML 强制你必须写成 <br />,但 HTML 里却没有明文规定。

追溯历史

为了完全地了解无内容元素,我们有必要了解一下它的历史。

HTML、XML 和 XHTML 都是基于 SGML 的,SGML 的全称是“标准通用标记语言”,起草于1986年。
HTML 和 XML 都派生自 SGML,其中 XML 是 SGML 的约束性子集,而 XHTML 是基于 XML 的。

XHTML 基本上和 HTML 一样,但是是基于 XML 的。

知道这层关系后,接下来进入本文最有意思的部分。

SGML 有一个特性叫做“无尾标签(NET,Null End Tag)”。当标签内只有简单的文字的时候,使用无尾标签就可以无须再闭合这个标签了。比如你可以把 <quote>Quoted text</quote> 写成 <quote/Quoted text/。(你没有看错,这个标签中不含 >。)

那么,不包含任何内容的标签就可以写成 <quote// 了,其中 quote 是标签名,***个 / 用于启用无尾标签,第二个 / 表示无尾标签结束。

如果按照这个逻辑,<br// 中的前半部分 <br/ 会被解析为 <br>,那么 <br/> 岂不是要被解析为 <br>> 了吗?如果你和我想得一样,你肯定也会觉得这种语法很蠢。

不幸的是 HTML4 规范的制定者们不这么认为,并且把它写进规范里了。不过显然当时的浏览器厂商对这种语法也不以为然,支持的程度不大。(在这一点上,说不定浏览器厂商们做了一件好事。)

XML (也适用于 XHTML)规范的制定者意识到这种语法不怎么好,就直接没有包含无尾标签这种特性,
同时为无内容标签提供了一种比较好理解的语法。这种语法的名字叫做“无元素标签”,它看起来是这样的:<br />。这种语法看起来非常自然,因此当时的大多数开发者都认为这才是正确的写法。

幸运地是 HTML 一直在改进,W3C 的成员一直在从他们过去作出的错误中学习经验教训。因此 HTML5 相比之前的版本才有这么大的进步。

在介绍 HTML5 的新语法时, W3C 说:

HTML5 的语法完全兼容 HTML4 和 XHTML1,但是不兼容 SGML 中那些晦涩的 HTML4 特性。比如无尾标签(<em/content/)。

HTML5 好样的!

(我觉得他们应该保留“短标签”特性,比如 <strong>不错喲</>,我觉得这个特性很酷。不过,至少现在的 HTML 已经不再是那么杂乱无章了。)

合法性

好吧,我们回到文章开头关于合法性的问题,目前的 HTML5 规范中关于非内容标签的解释是这样的:

此类标签应由下列部分组成,顺序须与下表保持一致:

  • 一个 “<” 字符。

  • 标签名。

  • 此项可选,一个或多个属性,每一个属性的前面必须有一个或多个空格。

  • 此项可选,一个或多个空格。

  • 此项可选,一个 “/” 字符,此项只能在无内容元素中出现。

  • 一个 “>” 字符。

倒数第二部分的 “/” 字符是可选的,而且没有任何实际含义。所以 <br> 和 <br /> 其实没有实质区别。

正确性

喜欢 XML 和 XHTML 的开发者可能会说,“对呀,虽然 / 是可选的,但是 <br /> 的写法&lsquo;更正确&rsquo;一些。”

我必须告诉你你错了。事实上,有观点认为无内容标签里的 / 其实是一个被容忍的语法错误。这种容忍是基于兼容性考虑的,它使得所有浏览器和解析器都把 <br> 和 <br /> 同等对待。

关于这一点,Google 代码风格指南 也明确规定了不要关闭无内容标签。

缺点

当然,不关闭无内容标签也有弊端,不过我认为这掩盖不了它的优点:使你的代码干净简洁。

***个缺点就是开发者必须知道哪些标签的无内容标签。假设你不知道 <img> 是不是无内容标签,那么当你找不到它的闭合标签时,你就会疑惑到底应不应该关闭这个标签。不过无内容标签总共也只有那么几个,而且一般一眼就能看出来某个标签是不是无内容标签。

第二个缺点是编辑器可能对没有闭合的无内容标签处理不好。编辑器的开发者们必须了解无内容标签,提供恰当的语法高亮和代码补全。当你在编辑器里写了一个 <input>,编辑器必须要知道它后面永远不会接一个 </input>。

但是这些功能实现起来很简单,我所知道的编辑器对这方面支持得都还挺好,所以这算不上一个真正的缺点。

我对无内容标签的看法

我觉得无内容标签这个概念其实是可以从 HTML 中剔除的,我们完全可以给这些标签添加内容,来代替它的某些属性。

以 <img> 标签为例,它有一个强制的 alt 属性,这个属性的存在是为了让那些看不到图片的用户(可能是因为生理缺陷,也可能是因为他们使用的设备不支持图片)知道这个图片的内容是什么(如果图片只是处于美观考虑,你其实不应该添加 alt 属性)。

我的问题来了:为什么不用 <img> 的内容代替 alt 属性?我认为这样写更直观:

<img src="doge.png">Image of doge</img>。

<meta> 标签甚至还有一个叫 content 的属性!为什么不直接把 content 的值写在标签的内容里呢?<input value="Value content"> 应该写成 <input> Value content</input> ,就像 <textarea> 那样。其他标签不一而足。

所以真正应该保留的无内容标签只有少数几个,只不过 W3C 必须考虑向后兼容性,所以要改变现状还是很困难的。

***的想法:<script> 标签

这个标签真的很困扰我,因为它的含义很简单,写法却很罗嗦。<script src="my-script.js"></script> 这种写法看起来似乎是错的,因为 <script> 的内容与 my-script.js 并没有逻辑关联。(HTML 规范允许你同时给它添加内容和 src 属性)

问题在于 <script> 标签不是一个无内容标签,你可以把 javascript 写在它里面。所以这里并没有可选的 / 闭合标记(译注:这就是为什么<script src="script.js" />的写法是错的)。

使用 <link> 标签来代替 <script> 就***了,因为它已经被用于导入外部文件,而且提供了所有必需的属性。当然,WEB 平台总是需要考虑向后兼容,不然所有不支持这种语法的旧式浏览器全都无法解析你的页面了。

到此,关于“html标签是闭合还是不闭合”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: html标签是闭合还是不闭合

本文链接: https://lsjlt.com/news/86371.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • html标签是闭合还是不闭合
    这篇文章主要介绍“html标签是闭合还是不闭合”,在日常操作中,相信很多人在html标签是闭合还是不闭合问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”html标签是闭合还是不...
    99+
    2024-04-02
  • php中闭合标签和不闭合标签的区别是什么
    这篇文章主要讲解了“php中闭合标签和不闭合标签的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php中闭合标签和不闭合标签的区别是什么”吧!php >要不要的区别:1、要闭...
    99+
    2023-06-21
  • html标签哪些不需要闭合
    有 14 个 html 标签不需要闭合:无内容标签:<br>、 <hr>、<img alt="html标签哪些不需要闭合" >...
    99+
    2024-04-22
  • web开发中为什么一定要闭合HTML标签
    这篇文章给大家分享的是有关web开发中为什么一定要闭合HTML标签的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一定要闭合HTML标签在以往的页面源代码里,经常看到这样的语句:<li>Some&nbs...
    99+
    2023-06-27
  • html中mate是不是单标签
    这篇文章主要介绍html中mate是不是单标签,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!html中mate是单标签,它没有结束标签,不包含任何内容,例“”。“”标签永远位于head元素内部,提供有关页面的元信息,...
    99+
    2023-06-06
  • HTML组合标签怎么用
    小编给大家分享一下HTML组合标签怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!   组合标签实际上都叫列表标签   ...
    99+
    2024-04-02
  • html不常用的标签是什么
    这篇文章主要介绍“html不常用的标签是什么”,在日常操作中,相信很多人在html不常用的标签是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”html不常用的标签是什么”...
    99+
    2024-04-02
  • html标签是什么
    这篇文章将为大家详细讲解有关html标签是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。   1. html是由 李爵士 发明的   2. html由 <!...
    99+
    2024-04-02
  • 针对不同关键词选择合适的 HTML 标题标签
    HTML 标题标签是您网站上最重要的 SEO 元素之一。它告诉搜索引擎和用户您的网页的主题,并对其内容进行排名。选择合适的标题标签可以帮助您的网站在搜索结果中获得更高的排名,并吸引更多流量。 HTML 标题标签应简洁明了,长度应在 50...
    99+
    2024-02-13
    文章HTML 标题标签 SEO 关键字 内容 排名。
  • HTML+CSS如何合理运用div标签
    这篇文章主要为大家展示了“HTML+CSS如何合理运用div标签”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HTML+CSS如何合理运用div标签”这篇文章吧...
    99+
    2024-04-02
  • JavaScript 与 HTML 模板标签的完美契合
    JavaScript、HTML 模板标签、模板字面量、动态 Web 应用程序 模板字面量:动态 HTML 模板字面量是 JavaScript 引入的一项令人兴奋的功能,允许您使用特殊语法编写动态 HTML 字符串。使用反引号 (`) 而不...
    99+
    2024-02-28
    JavaScript HTML 模板标签
  • HTML 音频标签与 CSS 样式的结合
    HTML 音频标签 () 提供了在网页中嵌入和播放音频文件的功能。通过与 CSS 样式结合,开发者可以自定义音频播放器的外观和行为,增强用户体验。 控制音频播放 autoplay 属性:指定音频文件是否自动播放。 controls 属性...
    99+
    2024-03-15
    音频标签
  • jquery的validate是不是标签
    这篇文章主要介绍“jquery的validate是不是标签”,在日常操作中,相信很多人在jquery的validate是不是标签问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
  • output是不是HTML5的标签
    这篇文章主要介绍“output是不是HTML5的标签”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“output是不是HTML5的标签”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • video是不是HTML5的标签
    小编给大家分享一下video是不是HTML5的标签,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! video是HTML5的新标签,该标签用于定义视频,比如电影片...
    99+
    2024-04-02
  • footer是不是html5的标签
    今天小编给大家分享一下footer是不是html5的标签的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来...
    99+
    2024-04-02
  • script是不是css的标签
    这篇“script是不是css的标签”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“script是不是css的标签”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来就让我们...
    99+
    2023-06-06
  • HTML注释标签是什么
    这篇文章主要介绍“HTML注释标签是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“HTML注释标签是什么”文章能帮助大家解决问题。    ...
    99+
    2024-04-02
  • html换行标签是什么
    这篇文章主要介绍“html换行标签是什么”,在日常操作中,相信很多人在html换行标签是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”html换行标签是什么”的疑惑有所帮...
    99+
    2024-04-02
  • HTML图像标签是什么
    这篇文章主要介绍“HTML图像标签是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“HTML图像标签是什么”文章能帮助大家解决问题。   在HTML中,图像由&...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作