我一直认为html在他的属性中需要引号:
<div class="service_definition"> 要么 <div class='service_definition'>
但最近我注意到w3验证器不能将以下内容识别为错误:
<div class=service_definition>
如果我省略引号,那可以吗?或者有任何限制吗?
Cur*_*urt 13
始终使用引号.
我不相信没有引号的HTML属性被归类为无效HTML,但它们可能会在以后的行中引起您的问题.
默认情况下,SGML要求使用双引号(ASCII十进制34)或单引号(ASCII十进制39)分隔所有属性值.当值由双引号分隔时,单引号可以包含在属性值中,反之亦然.作者也可以使用数字字符引用来表示双引号(")和单引号(').对于双引号,作者也可以使用字符实体引用".
在某些情况下,作者可以指定没有任何引号的属性值.属性值可能只包含字母(az和AZ),数字(0-9),连字符(ASCII十进制45),句点(ASCII十进制46),下划线(ASCII十进制95)和冒号(ASCII十进制58).我们建议使用引号,即使可以消除它们.
资料来源:http://www.w3.org/TR/REC-html40/intro/sgmltut.html#h-3.2.2
我认为它们是明确定义属性值何时开始和结束的好方法.
例如class,可以具有由空格分隔的多个类的属性:
<div class="classa classb" id="123">
Run Code Online (Sandbox Code Playgroud)
这清楚地表明我的课是浏览器classa,并classb与元素ID 123.
拿掉引号,我们得到:
<div class=classa classb id=123>
Run Code Online (Sandbox Code Playgroud)
浏览器现在可以将其解释为3个类,没有id.classa,classb和id=123.
或者它甚至可以将其解释为3个属性.class="classa",classb=""和id="123"
(甚至stackoverflow的语法样式也在努力解决这个问题!)
规则取决于HTML版本.
在所有类型的XHTML中,属性值必须始终以引号出现,因为XHTML是XML.验证者自然会检查这个.在浏览器实践中,它是不同的.在真正的XML模式中,缺少的引用中止文档解释:未显示内容,仅向用户显示错误消息(可能包含源代码的提取).但是当XHTML作为HTML提供时,这是正常的方式(特别是由于旧版IE的XHTML文盲)浏览器通过HTML规则来处理它.
否则,在HTML中,正式规则因规范而异,但浏览器接受没有引号的属性值.HTML5草稿反映了这种自由态度:仅当值包含空格,换行符,严重(`),等号(=),小于符号(<),大于符号(>)时,才需要引号,Ascii引用("),或Ascii撇号(').
你在实践中所做的事情很大程度上取决于惯例,它应该取决于同事或其他可能在你的代码上工作的人的意见,而不是公众舆论.许多人认为XHTML的限制性语法很酷.其他人可能会认为不必要的引用会扰乱代码甚至会产生一些风险:每当你需要成对使用某些字符时,总会有机会忘记关闭组件或错误输入组件.
如果值仅包含以下字符,则可以省略属性值中的引号(参见名称的技术概念):
letters of the English alphabet (A to Z, a to z)
digits (0 to 9)
periods .
hyphens -
Run Code Online (Sandbox Code Playgroud)
因此,WIDTH = 80和ALIGN = CENTER是WIDTH ="80"和ALIGN ="CENTER"的合法缩写.可以接受对类似HREF = foo.html的URL的引用,但通常在属性中使用时必须引用URL,例如HREF ="http://www.hut.fi/". - 有些浏览器更宽松.有些浏览器甚至可能接受带有起始引用但没有任何结束引用的元素.这样的使用是非常糟糕的做法.
参考http://www.cs.tut.fi/~jkorpela/HTML3.2/3.4.html