爲什麼沒有類似於以下的語法?
#myTable (th,td) {}
很簡單,因爲沒有人費心去提出一個有用的語法......直到最近,作爲(相對於一次發佈這個反正)在2008年,作爲一個:any()
pseudo-class。這是在更深入的討論a little later。
第一個實現從Mozilla的浮出水面,雖然遲至2010年,在:-moz-any()
幌子:
#myTable :-moz-any(th, td) {}
次年,it would be suggested that WebKit follow suit,與:-webkit-any()
:
#myTable :-webkit-any(th, td) {}
但如果你是嘗試使用兩個前綴在一起,然後due to selector parsing rules你將不得不複製規則集,使您的代碼甚至更長,戰勝僞類的預期目的:
#myTable :-moz-any(th, td) {}
#myTable :-webkit-any(th, td) {}
使用前綴選擇在面向公衆的代碼幾乎毫無意義這讓。除了特定於供應商的代碼外,我無法看到它們的任何合法用途,這意味着您可能不會在同一個樣式表中使用它們。
使用的新選擇4級工作草案有一個:matches()
pseudo-class的建議,這是在原有基礎上:any()
提議,但可能會看到某些增強的草案修訂:
#myTable :matches(th, td) {}
當然,因爲它是一個新的草案,不要期待瀏覽器支持,直到很久以後。
在造型既th
和td
元素的非常具體的情況下,你可以使用*
而不是假設,沒有任何tr
元素在該表中都不會包含除電池元件別的孩子,比如script
或template
:
#myTable tr > * {}
但是,如果你是一個表現癮君子並且厭惡*
選擇器,那麼你必須堅持這麼做。
如果你想要的是語法,你可以擴展你的編輯器將自動擴大到符合標準的形式。 – 2009-04-29 07:07:25