2010-10-03 84 views

回答

3

TLDR:行情必需的,除非该值满足identifier specification for CSS2.1

CSS规范可能会说它们是可选的,但现实世界中呈现出不同的故事。在对href属性进行比较时,您需要使用引号(在我非常有限的测试中进行单项或双项工作 - FF,IE,Chrome的最新版本。)

有趣的是@Pekka引用的CSS规范链接发生在他们的href特定示例中使用引号。

它不仅仅是由于像句点或斜杠这样的非字母字符给这个独特的情况一个报价要求 - 使用部分匹配选择器〜=不起作用,如果你只是在“域”中使用“域” .com“

好吧,这里的每个答案都是错误的(包括我自己以前的答案)。CSS2规范没有说明是否需要引号在选择器部分本身,但CSS3规范确实并引用规则为一个CSS21实现:

http://www.w3.org/TR/css3-selectors/

属性值必须是CSS标识符或字符串。 [CSS21]选择器中属性名称和值的区分大小写取决于文档语言。

这里是标识符信息:

http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier

在CSS中,标识符(包括元素名,类和在选择器的ID)可以只包含字符[ a-zA-Z0-9]和ISO 10646字符U + 00A0及更高版本加上连字符( - )和下划线(_);他们不能以数字,两个连字符或连字符后跟数字开头。标识符也可以包含转义字符和任何ISO 10646字符作为数字代码(参见下一项)。例如,标识符“B & W?”可写成“B \ & W \?”或“B \ 26 W \ 3F”。

我的回答似乎是正确的,但那是因为“〜=”是一种白色空间选择比较所以它永远不会匹配一个href值内的部分字符串。然而'* ='比较器可以工作。像'域'这样的部分字符串可以用于匹配href ='www.domain.com'。但检查完整的域名将不起作用,因为它违反了标识符规则。

+0

Hrm ...很奇怪。我不知道这是为什么? – mpen 2011-09-02 20:35:13

1

不,他们不必为了避免含糊不清而引用强词,许多人使用引号,如果该值包含空格,则需要引号。

无论是单引号还是双引号都可以,并且整数将以相同方式处理(css没有区分字符串和整数)。

请参阅the spec中的示例。

+0

这个答案并不完全正确......看到这个小提琴---> https://jsfiddle.net/k6avfo7k/。使用属性和属性选择器的各种组合(^ =,$ =,| =,=,* =),您将看到CSS以例如[name $ = 1]打破,但在[name $ =“1 “] – 2017-09-12 13:22:32

-1

他们不需要被引用。

字符串/双打/整数也没有区别。 CSS isn't Turing-complete,更不用说输入了。

+0

未加引号的值必须以字母开头。 – 2014-06-29 14:33:42

+0

看到我对Pekka的答案的评论。 – 2014-06-29 17:03:59

+0

这个答案并不完全正确......看到这个小提琴---> https://jsfiddle.net/k6avfo7k/。使用属性和属性选择器的各种组合(^ =,$ =,| =,=,* =),您将看到CSS以例如[name $ = 1]打破,但在[name $ =“1 “] – 2017-09-12 13:22:55

3

根据CSS 2.1 specs中的示例,引号是可选的。

在下面的例子中,选择所有SPAN元件,其“class”属性恰好具有值“例如”匹配:

span[class=example] { color: blue; } 

在此,选择所有SPAN元件,其匹配“你好”属性正好有值“克利夫兰”和他的“再见”属性具有完全相同的价值“哥伦布”:

span[hello="Cleveland"][goodbye="Columbus"] { color: blue; } 

数字被当作字符串,即次埃可以被引用,但他们不需要。

+0

啊..正在阅读css3规范,我看到的所有示例都使用了引号。 – mpen 2010-10-03 19:04:28

+0

未加引号的值必须以字母开头。 – 2014-06-29 14:34:09

+0

@DaveSchweisguth'[引用需要]' – 2014-06-29 16:50:34