28

以下代码块之间有什么区别吗?

<iframe src="http://example.com" width=100%></iframe>
<iframe src=http://example.com width="100%"></iframe>

我都试过了,两者似乎都有效,但我问的是以防万一有什么我需要小心的?

4

6 回答 6

27

除了

  1. 如果您验证您的页面,可能需要也可能不需要引号以避免错误消息,具体取决于所使用的文档类型
  2. 如果您向浏览器提供具有 XML 内容类型的页面(这种情况很少见且很少有用),则需要引号 - 否则页面根本不会显示,只是一条错误消息
  3. 如果页面是使用 XML 工具处理的,则引号是必需的。

否则,仅当属性值包含空格、换行符、Ascii 引号 (")、Ascii 撇号 (')、重音符 (`)、等号 (=)、小于号 (<) 或大于号 (>)。这样style = width:20em会起作用(尽管它可能看起来有些晦涩),而style = width: 20em不会——由于空间的原因,你需要写style = "width: 20em".

为简单起见,许多人总是在所有属性值周围加上引号。其他人认为引号使代码有点混乱,所以他们尽可能省略它们。

完全独立于此,src="www.example.com"意味着相对 URL 引用,而不是人们期望的意思。你可能的意思是src="http://www.example.com"

于 2012-10-24T21:49:25.217 回答
11

根据W3C,有四种类型的属性语法:

  1. 空属性语法
  2. 不带引号的属性值语法
  3. 单引号属性值语法
  4. 双引号属性值语法

这些确实适用于 HTML5,但是当提到 < HTML5 时,W3C表示根据使用的文档类型(例如,严格、过渡等)需要引号(单引号或双引号)。

于 2012-10-24T20:01:45.597 回答
10

不是。。两个是一样的。。

在 HTML 5 中,属性周围的引号是可选的。(除非值有空格或特殊字符)

但我觉得将它们括在引号中是一种更好的做法。

于 2012-10-24T19:55:55.530 回答
7

不带引号的属性值语法

属性名称,后跟零个或多个空格字符,后跟单个 U+003D 等号字符,后跟零个或多个空格字符,然后是属性值,除了上述对属性值的要求外,不得包含任何文字空格字符、任何 U+0022 引号字符 (")、U+0027 撇号字符 (')、U+003D 等号字符 (=)、U+003C 小于号字符 (<)、 U+003E GREATER-THAN SIGN 字符 (>) 或 U+0060 GRAVE ACCENT 字符 (`),并且不能是空字符串。

来源:W3 HTML5 规范 - 第 8.1.2.3 节。属性

于 2018-08-08T17:22:31.247 回答
6

这是来自谷歌 - 最佳实践 - “最小化有效负载大小” https://developers.google.com/speed/docs/best-practices/payload (我的重点)

为确保您的内容压缩良好,请执行以下操作: ... 对 HTML 标记属性使用一致的引号,即始终使用单引号、始终使用双引号尽可能不使用引号。

于 2014-03-06T13:08:37.933 回答
0

这完全是关于 HTML 标记的真正有效性。它是为 W3C(WWW 联盟)工作的。许多事情可能在 HTML 中起作用,但它们必须经过验证才能被 Web 浏览器更仔细地识别。您甚至可以省略开头和结尾的<html>and标签,但完全不推荐,没有人这样做,它被认为是“坏代码”。</html>

因此,将它们放在引号中更有效。

于 2012-10-24T19:56:08.950 回答