2013-04-29 212 views
1

通過一些測試準備跑,有人問我,這是否會正確設置的第一個字母的顏色:在CSS中,第一個字母和第一個字母有什麼區別?

td.one::first-letter { 
    color:blue; 
} 

現在,我知道我在哪裏見過結腸翻倍式的地方,但測試的jsfiddle並不表明和

td.two:first-letter { 
    color:green; 
} 

所以之間的行爲有什麼區別,我只是好奇的區別是什麼,以及爲什麼你會用::代替:在僞類的前面?

http://jsfiddle.net/mori57/bqE7Q/

+0

在我的防守,你知道它是多麼難以得到之間有着明顯的搜索結果:和::在谷歌? :)但是,我會帶走我的腫塊,需要努力鍛鍊我的耐力!感謝您的意見! – 2013-04-29 17:23:50

回答

3

他們在這種情況下相當,但僅僅是因爲它是一個僞元素,而不是一個僞類。創建雙冒號語法是爲了防止調用單冒號僞元素「僞類」(您的問題足以奇怪地說明)引起的混淆。從spec

::符號被當前文檔以建立僞類和僞元素之間的鑑別介紹。爲了與現有樣式表兼容,用戶代理還必須接受CSS級別1和2(即,:first-line,:first-letter,:before和和:after)中引入的僞元素的前面的一個冒號符號。本規範中引入的新僞元素不允許這種兼容性。

如果您不打算支持IE < 9,最好是將所有僞元素都用雙冒號表示。如果您需要支持較舊版本的IE,則可以繼續使用單個冒號,但僅限於上述選擇器。

+0

在我問這個問題之前,我沒有想過僞元素和僞類之間的區別。非常感謝您在規範的特定部分以及附加信息中滾動。 – 2013-04-29 17:18:13

+0

因此,使用':: first-letter'會引用一個僞元素,而':hover'則表示一個僞類?剛剛發現了這兩者之間差異的有趣解釋,對於其他人感到困惑(因爲我是)關於差異:http://www.d.umn.edu/~lcarlson/csswork/selectors/pseudo_dif.html – 2013-04-29 17:22:27

+0

是的, ':hover'是少數[UI狀態僞類]之一(http://www.w3.org/TR/selectors/#UIstates) – Adrift 2013-04-29 17:23:17

4

檢查規格?

這個:: notation是由當前文檔引入的,以便 建立僞類和僞元素之間的區分。 爲了與現有樣式表兼容,用戶代理還必須接受前面的一個冒號符號,用於在CSS級別1和2中引入 的僞元素(即:first-line,:first-letter,before和 :後)。本規範中引入的新僞元素 不允許這種兼容性。

http://www.w3.org/TR/selectors/#pseudo-elements

+0

我一定是在看規格中的錯誤頁面......我在文檔上搜索::並沒有看到這個!但是,再次,我的眼睛有時看着這些,開始有點釉,所以謝謝指出相關的一點!只要SO讓我回答,就會標記你的答案。 :) – 2013-04-29 17:11:55

+0

不用擔心,但你應該接受其他人的回答,例如BoltClock's。他給出了更多的解釋,我只是與規範聯繫在一起。 – 2013-04-29 17:13:11

+0

夠公平的。你是我讀過的第一本,這段代碼很清楚,儘管它當然沒有詳細說明IE的問題。無論如何,我只是傾向於自然地認爲我需要查看caniuse.com以獲得更專業的選擇器。再次感謝! – 2013-04-29 17:14:57