2009-09-08 24 views
0

我有一些遺留的CSS我想清理。寫這個的人不能諮詢。下面的規則不會驗證(CSS 2.1):在CSS中做引號

html[lang=en] q: before, : lang(en) q: before { 
    content: "「"; 
} 

難道是安全的假設,筆者指的是以下(此驗證):

html[lang=en] q:before, q:lang(en):before { 
    content: "「"; 
} 

而且,從第一選擇不同第二個以任何方式?每個特定於某個瀏覽器?

謝謝。

回答

2

這個選擇不會出現在Firefox的工作:

: lang(en) q: before 

它可能應該是

:lang(en) q:before 

這是不一樣的

q:lang(en):before 

你可以看到這在以下測試用例中起作用:

:lang(en) q:before { 
    content: "a"; 
} 
q:lang(en):before { 
    content: "b"; 
} 

<div lang="en"> 
<q lang="zh">Hello zh</q> <q lang="en">Hello EN</q> <q>Hello Plain</q> 
</div> 

這給

a"Hello zh" b"Hello EN" b"Hello Plain" 

基本上:lang(en) q:before規則說,而q:lang(en):before「任何Q是在英語面前」說「英語語言中的任何元素內部的任何Q之前」。

此外,使用的兩個選擇器(html[lang=en] q:before:lang(en) q:before)並不完全等效,但如果瀏覽器遇到其中一個選擇器,大多數情況下都會達到相同的效果。 :lang(en)是標識語言的較新的選擇器,而html [lang = en]是僅僅標識一些稱爲lang的屬性的屬性選擇器。

+0

太好了,謝謝! – montrealist 2009-09-08 20:14:34

0

這肯定是錯誤的:

before, : lang(en) 

, :不能這樣使用,逗號表示新的「規則」,結腸一個pseudp屬性(如在a:link)。

P.S.在IE中工作contentbefore

+0

優秀的問題!他們不。我甚至不知道爲什麼包含該規則,因爲標籤目前並未在網站的任何地方使用。可能在將來使用的情況下。 – montrealist 2009-09-08 19:50:09

+0

更正:他們實際上在IE8中工作。不在IE6/7中。 – montrealist 2009-09-08 19:54:16