2014-04-29 43 views
10

我之前曾詢問舊版Chrome的similar question。然而,我再次難以獲得CSS變量的工作,這次是在Windows 7上的Chrome 34(版本34.0.1847.131米)上。(沒有嘗試在其他操作系統上。)無法獲取可在Chrome中使用的CSS變量34

我看到語法有被更改(舊的,看上面鏈接的問題)和新的一個是什麼是目前在CSS Variables spec.

:root { 
    --main-color: #06c; 
    --accent-color: #006; 
} 

/* The rest of the CSS file */ 
h1#foo { 
    color: var(--main-color); 
} 

同樣重要的是要注意的,我確實有啓用實驗性網絡平臺功能標誌啓用。然而,如果你看看this fiddle我不能得到舊的語法,也沒有新的語法在Chrome 34中工作。

谷歌搜索它沒有出現任何已知的Chrome錯誤。我很好奇,如果有什麼新的東西需要我去做才能使它工作?我做錯什麼了嗎?有其他人遇到過嗎?

+0

這個問題似乎是關於某個特定的應用程序/軟件,而不是對一般的編碼。移植太老,但爲了將來參考,應在[SuperUser.SE](http://superuser.com/help/on-topic)上詢問這樣的問題。 – chharvey

+0

當你考慮最終答案的背景時,我想我同意你的觀點。但是,我不同意這個問題是否涉及編碼問題。在提問時,如何使用css變量語法(Chrome當時是唯一支持的瀏覽器......)。鑑於規範和瀏覽器的更新,我不知道我的語法是否正確。 我沒有看到任何根本問題在這裏作爲根據[問題的主題](http://stackoverflow.com/help/on-topic)與該上下文根本不正確。 –

+0

我想這取決於觀點。如果您一般詢問CSS語法,那麼我會說在這個網站上沒問題。但是如果您在Chrome 34的環境中詢問特定的CSS語法,那麼我會認爲這是一個關於軟件的問題。 – chharvey

回答

19

CSS變量現在是supported in all modern browsers

除了IE11它沒有意圖實施

有問題的語法是正確的,以下內容可能仍然是有價值的歷史的目的。請參閱本fiddle for a working example


原來的答覆:

我做了一些挖掘,一定要查個水落石出。 Chrome已暫時刪除了CSS變量實現。 (請參閱comment 5 on the Chrome ticket I reported進行驗證。)但是,儘管我得到了答案,但仍然存在爲什麼 - 所以我做了更多的挖掘。

我聽說的WebKit(Safari瀏覽器)拋棄它的CSS變量實現,這是用下面的兩個職位email/pagewebkit.bugs.org feature removed CSS Variables證實 - 這是由於惡​​劣的初始執行/代碼以及CSS的變量WebKit的開發人員更注重Google的Blink表現。

Chrome 33刪除了CSS變量的供應商前綴。 看來,Blink繼承了糟糕的CSS變量實現,最近的補丁刪除了WebKit繼承的代碼。以下是從Chrome ticket on the matter牽頭開發的講話(2014年2月)

刪除CSS變量

這個補丁刪除當前的CSS變量實現繼承 從WebKit的。

我們的CSS變量實現在當前狀態下需要重寫 才能發貨。我們的Bison CSS Parser將被重新編寫爲 ,這將導致另一個重寫 變量的實現。在 時間應該刪除CSS變量是爲了防止咬傷。

在同一瀏覽器票也有人認爲,開發商要改寫CSS變量之前,以提高閃爍的表現:

如果我們出貨CSS變量與我們目前的解析器,我們會看到一點性能通過使用JavaScript框架來實現相同的目的,這樣做有益。 今年Blink的重點是移動性能,在我們解決性能缺陷後,CSS變量將會重新審視。

有一個bug tracking the new implementation。與此同時,如果你想玩弄CSS變量,Firefox有一個工作實現 - 它在Firefox 31中默認發貨,對於Firefox 29,你必須激活layout.css.variables.enabledabout:config(在地址欄中輸入)。