HTML5中的结束标记

HTML5中的结束标记,html,Html,在HTML5中,用关闭标记是否仍然合适 这显然也适用于所有其他单个标记。我意识到这实际上并不影响东西的工作方式,但这里的最佳实践是什么 txt的某些行//你是如何看到很多人这么做的 然后是一些//XHTML样式!我还应该这样做吗? 哦,我还没做完//没有人做得对吗?正确的?! 在HTML5中,/是有效且被忽略的,其中br就是其中之一,因此这完全取决于您,尽管就个人而言,我会改掉这个习惯,因为这是一件遗留的事情。(事实上它是一个void元素,正如您所说;是毫无意义的)我认为最好遵守XHTML标准,

在HTML5中,用

关闭

标记是否仍然合适

这显然也适用于所有其他单个标记。我意识到这实际上并不影响东西的工作方式,但这里的最佳实践是什么

txt的某些行
//你是如何看到很多人这么做的 然后是一些
//XHTML样式!我还应该这样做吗? 哦,我还没做完

//没有人做得对吗?正确的?!
在HTML5中,
/
是有效且被忽略的,其中
br
就是其中之一,因此这完全取决于您,尽管就个人而言,我会改掉这个习惯,因为这是一件遗留的事情。(事实上它是一个void元素,正如您所说;


是毫无意义的)

我认为最好遵守XHTML标准,甚至关闭@Alex提到的所谓的
void
元素。如果您的代码也是有效的XML,那么您可能会发现更好的工具支持来管理您的代码

<br>  // not valid XML without a closing tag

<br /> // valid XML and I prefer this

<br></br>  // valid XML but unnecessary clutter

如果您是为HTML5编码的,那么客户端/浏览器应该支持严格的标准。更重要的是,您要保持一致性,如果您使用
,那么解析器将为您处理无效或自动关闭的标记

决定一种方法并坚持下去,我们决定使用xhtml风格的语法,但实际上我们并不使用xhtml。即使解析器对其他需要理解标记的人更加宽容,因此如果您有一个标准,并且每个人都接受这个标准,那么每个人都在唱同一首赞美诗

为什么我们需要公约?因为以下各项均有效:

<META CHARSET=UTF-8>        
<META CHARSET=UTF-8 />      
<META CHARSET="UTF-8">      
<META CHARSET="UTF-8" />        
<meta charset=utf-8>        
<meta charset=utf-8 />      
<meta charset="utf-8">      
<meta charset="utf-8" />        
<MeTa CHARset=utF-8>

另一件需要考虑的事情是html5属性,我们决定在一组属性的末尾使用布尔样式属性,并且在其他属性周围始终使用引号,例如:

<video id=“vid1” data-someting="my_val" controls>

这样我们就不必使用冗余语法(我认为):


仅仅因为html5让我们省去了结束标记,即使是

标记,它也不正确

我希望您决定使用xhtml“sytle”语法,以保持自己的理智

来自:

  • 以下是HTML中void元素的完整列表:

    • 区域
      基础
      br
      col
      命令
      嵌入
      人力资源
      img
      输入
      链接
      参数
      源代码>,
      跟踪
      wbr
  • Void元素只有一个开始标记;不得为空心图元指定结束标记

  • 开始标记由以下部分组成,顺序如下:

    • A
      字符
由此看来,我们可以使用


。但是,结束标记

无效,因此不要使用

在中运行以下命令也表明了这一点

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Testing void elements</title>
</head>
<body>
    some lines of txt <br>
    and then some more <br />
    I'm not done yet... <br> </br> <!-- This line generates an error -->
</body>
</html>

测试孔隙元素
txt的某些行
然后是更多的
我还没做完

因此,请使用


,只要确保一致地使用它们即可


编辑:正如Brad所指出的,

也是有效的XHTML,因此最好选择这种形式。

这会告诉你什么?在


之间其实并不重要,也就是说,在

中,你发送了一个被浏览器忽略的额外字符。那么,为什么还要使用带宽呢?这一切都说明了问题。@Greg不是真的,请看我在接受答案下面的评论。至于带宽,请使用gzip内容,如果您能看到差异,请尝试。或者你是不是碰巧在谷歌或亚马逊工作,在那里单比特的差异实际上很重要?@Brad-W3C验证程序还没有为HTML5做好准备。在验证直接输入时,选项Validate HTML fragment只有以下两个选项:HTML4.01、XHTML1.0。这可能是件好事根据您链接到的规范:“Void元素只有一个开始标记;不能为Void元素指定结束标记”,因此我猜答案是使用




是无效的HTML。如果使用
XHTML 1.0 Transitional
它将验证


。正确的说法是,在使用XHTML 1.0过渡doctype时,不使用HTML验证仍然会使用W3验证程序抛出错误。我收到消息“您可能忽略了关闭一个元素,或者您可能是想“自行关闭”一个元素,也就是说,以“/>”而不是“>”结束。我在这里遗漏了什么吗?好的,我在


之间有一个空格,无法验证。也许您应该编辑您的答案以删除本例中的空格。我根据建议删除了答案中的空格,只是好奇为什么有效的XML会是一种优势?我应该说有效的XHTML。有些人喜欢特别严格。我已将答案更新为XTML,而不是XML。@Greg,因为这样您就可以使用更严格的解析器来告诉您的标记是否有效。我无法计算由于错误的嵌套或类似的事情(XML验证器会告诉我),我被有效但逻辑上错误的HTML标记咬了多少次。我在HTML5中的最后一个项目使用HTML而不是XHTML,这将是我的最后一个项目。该死的
<video id=“vid1” controls="controls">
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Testing void elements</title>
</head>
<body>
    some lines of txt <br>
    and then some more <br />
    I'm not done yet... <br> </br> <!-- This line generates an error -->
</body>
</html>