2010-10-03 62 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