Css 在`之前是一个空格!重要`在某些情况下很重要,如果是,什么时候?为什么?
我一直在试验一个PHP SCSS编译器,特别是它的压缩格式化程序 这将输出类似的内容(请注意闭合的大括号前额外的空格和分号) 所以我想实现这个小小的修改,从生成的代码中去掉一些位 我知道这没什么意义,因为我最多能省下百分之几的钱;我正在去除低熵信息,这意味着一旦我压缩它,节省的钱会更小;而修改则必须保留。但这似乎很容易,也很无害,我。。。有点像是为了休息 后处理函数在父格式化程序上为虚拟函数,如上所示:Css 在`之前是一个空格!重要`在某些情况下很重要,如果是,什么时候?为什么?,css,Css,我一直在试验一个PHP SCSS编译器,特别是它的压缩格式化程序 这将输出类似的内容(请注意闭合的大括号前额外的空格和分号) 所以我想实现这个小小的修改,从生成的代码中去掉一些位 我知道这没什么意义,因为我最多能省下百分之几的钱;我正在去除低熵信息,这意味着一旦我压缩它,节省的钱会更小;而修改则必须保留。但这似乎很容易,也很无害,我。。。有点像是为了休息 后处理函数在父格式化程序上为虚拟函数,如上所示: 4232 protected function postprocess($text)
4232 protected function postprocess($text) {
4233 return $text;
4234 }
…在scss\u formatter\u compressed
中,我执行一些替换:
+++ from line 4343:
protected function postprocess($text) {
$xlat = array(
'#\\s+(:\\d)#' => '\\1',
'#;}#' => '}',
'#\\s+(!important)#' => '\\1',
);
return preg_replace(
array_keys($xlat),
array_values($xlat),
$text);
}
现在输出为:
.navbar{margin-bottom:0px!important;margin-top:2px}
…对于简单的SCSS,它是有效的。我已经在一个庞大而复杂的SCSS层次结构上测试了它,有些元素会崩溃
我有一种感觉,它涉及到!重要的
条款。我做了一个不太广泛的研究,在YUI压缩机现场发现,一方面他们得出结论
@tml@namanyayg您能否提供一些示例,说明如何剥离空间
在'之前!“重要信息”导致样式损坏
我们收到了类似的请求
但是如果没有测试用例,它是
无法验证您是否犯了错误或是否存在严重错误
空间必须存在的特定情况
根据我们的测试可以去掉它。何况
代码已经在生产中使用了几年,现在没有任何
问题。
另一方面,OP有一些问题,它们似乎与之前的空格有关!重要信息
现在,如果这是一个CSS标准问题,我想修正我对scssphp的看法;如果这是一个SCS的问题,我当然希望我的SCS文件得到修复。考虑到所讨论的文件夹的大小和复杂性,我想在深入研究其未挖掘的深度之前先在这里提问。不需要任何空间。根据,
IIRC这是一个IE问题,但我找不到我发布的关于它的答案,因为搜索在处理诸如“!important”之类的术语方面很糟糕。如果您在其他浏览器上进行测试,那么它不应该是一个问题-属性值的结尾和!在标准CSS中始终是可选的。对于它的价值,验证器说省略
之前的空格是有效的!重要信息
。官方的Ruby Sass编译器总是留下一个空间,即使在压缩模式下也是如此。请记住,IE历来在解析有效CSS方面表现不佳(有人记得你什么时候可以通过删除选择器中的空格来隐藏IE5或IE6的样式吗?例如,.foo+.bar
),所以Sass选择这样做可能是有原因的。虽然这是真的,它并没有真正回答这个问题:当省略空白时,是否有浏览器会阻塞?每次省略空白时,浏览器是否都会阻塞?因为在高流量的网站中,缩小css(没有空格的css)是一种主流,我们可以自信地说,css中对空格的唯一需求是为了可读性。做一些验证,检查你是否使用了正确的编码。我已经把它移到了生产代码中,今天它又坏了。我确认这是一个IE问题,但它在Microsoft Edge上不存在(至少今天不存在)。在IE上,它去禁用吃空间的正则表达式,回来重新启用它,但够疯狂的是,它在一些CSS上工作。只有大型CSSE才会出现!
+++ from line 4343:
protected function postprocess($text) {
$xlat = array(
'#\\s+(:\\d)#' => '\\1',
'#;}#' => '}',
'#\\s+(!important)#' => '\\1',
);
return preg_replace(
array_keys($xlat),
array_values($xlat),
$text);
}
.navbar{margin-bottom:0px!important;margin-top:2px}