2017-08-28 59 views
1

我有一个网站,我们正在使用一个工具来最小化和压缩CSS代码。它被称为JCH,它是Joomla的插件,我想你也可以在Drupal上使用它。我有一个问题,这个CSS代码:CSS在最小化时被破坏

#sp-user3 .help-menu .nav.menu :not(.user-menu){ 
display: inline-flex; 
} 

它被转换为:

#sp-user3 .help-menu .nav.menu:not(.user-menu){display:inline-flex} 

正如你可以看到 “.nav.menu:没有” 转换为” .nav.menu:不“这会导致css规则无法按预期应用。

这可能是该工具的错误。我如何重写它或添加一个字符以避免混淆?任何想法都欢迎。

+0

CSS标准会说你可以使用>>作为后代组合子;这将允许你编写'.nav.menu >>:not'而不是'.nav.menu:not'。目前不在任何浏览器中工作,所以这不是答案。 –

+0

你可以尝试'.nav.menu *:not'(带星号),但我没有最小化器,所以我不能检查它是否可行。 –

+0

@MrLister我会试试看。 – Eduardo

回答

1

这确实是一个错误,这不是我第一次遇到它。

这个网站上的StackSnippet编辑器在它的Tidy按钮中曾经有过相同的错误。请参阅我的bug report。它很快就被修复了。

所以你可以用JCH提交一个错误报告,然后等待它被修复。

同时,您可以在CSS中的:之前插入一个*作为解决方法。
:not()无论如何都是*:not()的简写,所以你不会改变选择器的含义,只是写出所有暗示的内容。

1

这是一个绝对的工具问题,网络缩小器如Minify生成正确的代码。

#sp-user3 .help-menu .nav.menu :not(.user-menu){display:inline-flex} 
+0

是的,我也这么认为。有一个问题“:not(.user-menu)”是指标签内部具有“.nav和.menu”类的标签吗?还是它指的是具有“nav.menu”的相同标签? (我没有编写CSS规则) – Eduardo

+0

上面的CSS规则表示* display:inline-flex *对于类:* help-menu *,* nav menu *而不是* user-menu *。 –