是否需要引用CSS属性选择器值中的值?

时间:2010-10-03 18:47:20

标签: css css-selectors

e.g:

a[href="val"]

“val”是否需要在它周围加上引号?单人或双人都可以吗?整数怎么样?

4 个答案:

答案 0 :(得分:3)

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

  

在以下示例中,选择器匹配“class”属性具有“example”值的所有SPAN元素:

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

这里,选择器匹配所有SPAN元素,其“hello”属性的值恰好为“Cleveland”,其“goodbye”属性的值恰好为“Columbus”:

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

数字被视为字符串,即它们可以被引用,但它们不需要。

答案 1 :(得分:3)

TLDR:除非值符合identifier specification for CSS2.1

,否则需要引用

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

有趣的是,@ Pekka引用的css规范链接碰巧使用了特定于href的示例的引号。

并且这不仅仅是由于非字母字符,如句点或斜线,给出了这种独特的情况引用要求 - 使用部分匹配选择器〜=如果你只是使用“domain.com”中的“域名”

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

  

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&amp; W?”可以写成“B \&amp; W \?”或“B \ 26 W \ 3F”。

  

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

答案 2 :(得分:1)

不,他们不必有引号,为了避免模糊不清,很多人都会使用引号,如果值包含空格则需要引号。

单引号或双引号都可以,并且整数将以相同的方式处理(css没有字符串和整数之间的区别)。

请参阅the spec中的示例。

答案 3 :(得分:-1)

他们不需要引用。

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