在我的样式表中,下面哪个应该使用?
/* Example #1: */ background-image: url(image.png);
/* Example #2: */ background-image: url("image.png");
/* Example #3: */ background-image: url('image.png');
W3C规定的正确方式是什么?
在我的样式表中,下面哪个应该使用?
/* Example #1: */ background-image: url(image.png);
/* Example #2: */ background-image: url("image.png");
/* Example #3: */ background-image: url('image.png');
W3C规定的正确方式是什么?
W3C表示引号是可选的,您三种方式都是合法的。
开头和结尾的引号只需要是相同的字符。
如果您的URL中有特殊字符,您应该使用引号或转义字符(见下文)。
URI值的格式为'url(',后面跟随可选的空格,后面跟随一个可选的单引号(‘)或双引号(“)字符,然后是URI本身,最后跟随可选的单引号(‘)或双引号(“)字符,后面跟随可选的空格,最后是')'. 两个引号字符必须相同。
转义特殊字符:
一些出现在未引用URI中的字符(比如括号、空格字符、单引号(')和双引号(“))必须使用反斜杠进行转义,以便生成的URI值成为URI标记:'\(','\)'。
最好使用引号,因为它是最新标准推荐的,并且有较少的边缘情况。
根据CSS Values and Modules Level 3 (2015年12月18日)的最新编辑草案
URL是指向资源的指针,是由
<url>
表示的函数符号。<url>
的语法是:
<url> = url( <string> <url-modifier>* )
非引号版本仅出于遗留原因而被支持,并需要特殊的解析规则(用于转义序列等),因此很繁琐且不支持url-modifiers。
这意味着,url(...)
语法应该是一个函数符号,它以字符串和url-modifier作为参数。 使用引号符号(产生字符串标记)将更符合标准,并引入更少的复杂性。
url-token
类型仅针对传统特殊解析规则进行介绍,因此它与引号无关。请注意保留HTML标记。根据W3C的规定,有三种合法的方式。如果名称中有特殊字符(如空格),则应使用第二种或第三种方式。
2021年更新(大多数答案来自2015年及以前。)
引号是可选的,但某些字符(如果使用)需要转义。
来自MDN:
URL是一个相对或绝对地址,或指向要包含的网络资源或数据URI的指针,可以使用单引号或双引号。如果URL包含括号、空格或引号等这些字符,则需要使用引号,除非这些字符已经被转义,或者如果地址包含0x7e以上的控制字符。双引号不能出现在双引号内,单引号不能出现在单引号内,除非它们被转义过。以下所有内容都是有效且等效的:
<css_property>: url("https://example.com/image.png")
<css_property>: url('https://example.com/image.png')
<css_property>: url(https://example.com/image.png)
'
) 和双引号 ("
) 前使用反斜杠 (\
)。2或3的示例最佳:
来自W3C: URI值的格式为“url(”后跟可选的空格,后跟一个可选的单引号(')或双引号(")字符,后跟URI本身,后跟一个可选的单引号(')或双引号(")字符,后跟可选的空格和')。两个引号字符必须相同。
从相同的解释中注意到,如果转义适当的字符,则可以接受示例1。
我有:
a.pic{
background-image: url(images/img (1).jpg);
}
花了我一段时间才明白文件名中的右括号破坏了规则。
所以这并非强制要求,但即使老旧浏览器对引用不太理解,使用引用也可以在相当复杂的动态生成页面中避免一些麻烦。
在URI值(url())中不要使用引号。
例外情况:如果您确实需要使用@charset规则,则使用双引号——不允许使用单引号。