如何让GWT CSSResource解析not()选择器

jhe*_*cks 7 gwt css3 cssresource

我意识到GWT使用的CSS解析器只会处理CSS2,但我的目标是iPhone Safari,所以我希望能够使用一些CSS3的东西.对于属性,我一直很好地使用literalGWT提供的功能,但我遇到了CSS3选择器的问题 - 尤其是not()伪类.

我有一点像这样的CSS:

.iMore:not (.__lod ):active {
    color: #fff
}
Run Code Online (Sandbox Code Playgroud)

当GWT将此文件作为资源加载时,我得到:

遇到"(".期待其中一个:"{"","

literal函数适用于属性,但我试过这个:

.iMore:literal("not (.__lod )"):active {
    color: #fff
}
Run Code Online (Sandbox Code Playgroud)

并得到一个不同的错误信息:

遇到""不是(.__ lod):"".期待其中一个:<IDENT>

我把literal整个块放在一边,错误消息就消失了,但是如果没有@external使用它的选择器中引用的所有内容(我在这个文件中有很多其他内容),我认为这样做不会有效.

  1. 那甚至会起作用吗?
  2. 这样做有更优雅的方式吗?

Roy*_*son 9

您可以使用反斜杠转义选择器中的括号.所以对于你的CSS:

.iMore:not \(.__lod \):active {
    color: #fff
}
Run Code Online (Sandbox Code Playgroud)

  • 另一个注意事项:转义的右括号前的空格很重要.`.更多:不是\(.__ lod \)`当前会导致错误"[错误]以下未经模糊处理的类存在于严格的CssResource:[ERROR] __lod \\)"http://code.google.com/p /谷歌的Web的工具包/问题/细节?ID = 4422#C14 (4认同)
  • +1这有效.值得注意的是,使用足够的反斜杠可以转义更多gnarly not()选择器.例如,`not([type ="search"])`变为`not \(\ [type\= \"search \"\] \)`. (2认同)