是否有一个先进的CSS minifier /编译器,它可以执行条带冗余和逗号分隔相同的规则之类的操作?

Bry*_*eld 22 css compiler-construction minify

例如

input{margin:0}body{margin:0;background:white}
Run Code Online (Sandbox Code Playgroud)

会像这样写得更短

input,body{margin:0}body{background:white}
Run Code Online (Sandbox Code Playgroud)

或这个

input,body{margin:0}body{margin:0;padding:0}
Run Code Online (Sandbox Code Playgroud)

会像这样写得更短

input,body{margin:0}body{padding:0}
Run Code Online (Sandbox Code Playgroud)

结论没有这样的工具看到接受的答案.

向工具编写者提示,您可能需要考虑gzip.有时,在二级优化上留下几个字节最后会更短,因为gzip本质上是字节级重复数据删除.如果有两个相同的部分,gzip将引用前一个部分.理想情况下,在决定是否应该在某些时间或所有时间跳过某些优化时,以及选择器和规则的顺序应该是这样考虑的.

vul*_*ven 18

这可以使用CSSO完成.

考虑以下输入:

input{margin:0}body{margin:0;background:white}
Run Code Online (Sandbox Code Playgroud)

CSSO输出:

input,body{margin:0}body{background:#fff}
Run Code Online (Sandbox Code Playgroud)

(正是你要找的)

但不幸的是,CSSO对此进行了优化:

.dont-care {
    background-image: url("images/chart.png");
    background-repeat: no-repeat;
}
Run Code Online (Sandbox Code Playgroud)

至:

.dont-care{background-image:url("images/chart.png");background-repeat:no-repeat}
Run Code Online (Sandbox Code Playgroud)

但是,CSSTidy将上面的内容转换为相应的速记属性:

.dont-care {
    background:url("images/chart.png") no-repeat;
}
Run Code Online (Sandbox Code Playgroud)



优化CSS的七个四步解决方案:

以下是我遵循的实践:

  1. 合并CSS文件all.css.
  2. 供应CSSO输入.
  3. 击中 Minimize
  4. 粘贴输出 all.min.css

除了支付@Grillz手动完成它之外,到目前为止我还没有找到更好的CSS优化协议.



但旧的IE黑客呢?

如果你正在使用IE6和7的CSS黑客攻击,CSSO将保留黑客攻击.

例如:

.dont-care {
    background-image: url("images/chart.png");
    *background-image: url("images/chart.jpg");
    background-repeat: no-repeat;
}
Run Code Online (Sandbox Code Playgroud)

CSSO输出:

.dont-care{background-image:url("images/chart.png");*background-image:url("images/chart.jpg");background-repeat:no-repeat}
Run Code Online (Sandbox Code Playgroud)

CSSTidy将忽略asterik(用于IE6的*hack),并输出:

.dont-care {
    background:url("images/chart.jpg") no-repeat;
}
Run Code Online (Sandbox Code Playgroud)

你也可以避免黑客攻击并为旧的IE版本使用单独的CSS文件(比如all.oldIE.css).在分别对两个文件进行优化(使用前面描述的7个步骤)之后,最终可以在HTML /母版页/模板/布局文件的<head>标记中使用这些文件:

<!--[if lt IE 8]><link href="css/all.oldIE.min.css" rel="stylesheet" type="text/css"/><![endif]--> 
<!--[if gt IE 7]><!--><link href="css/all.min.css" rel="stylesheet" type="text/css"/><!--<![endif]-->
Run Code Online (Sandbox Code Playgroud)

哪个all.min.css适用于除IE版本小于等于7的所有浏览器.但单独使用CSSO是一个安全的选择.


更新

跳过CSSTidy部分.CSSO做了安全优化.根据他们的开发人员,速记优化是不安全的:

考虑这个例子:

.a{
    background-attachment: fixed;
}
.b {
    background-image: url("images/chart.png");
    background-repeat: no-repeat;
}
Run Code Online (Sandbox Code Playgroud)

如果你有<div class="a b"></div>- 一个包含两个类的元素,你就不能在编写时优化.b,因为它会覆盖background-attachment.a中的集合.
所以,不,这不是一个安全的优化.