2014-04-29 14 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(在地址栏中输入)。