lastzero/css-optimizer

此包已被废弃,不再维护。未建议替代包。

CSS优化器 - 通过删除重复项和合并选择器来压缩样式表

v1.0.0 2015-11-25 05:56 UTC

This package is auto-updated.

Last update: 2024-02-29 09:14:11 UTC


README

Build Status Latest Stable Version License

通过删除重复项和合并选择器来压缩样式表 - 主要安全且非常高效。此包是为了优化现有商业网站中的CSS而开发的“快速胜利”,因为CSS中包含了许多由CSS预编译器创建的重复和类似选择器。它被发布,希望帮助处于相同情况的他人。

注意:优化是通过简单的(且快速)字符串函数进行的 - 它不是一个真正的CSS解析器。它需要一个没有内联注释的良好格式CSS(不用担心,您可以使用minifyCss()方法,请参阅用法)。

警告:您CSS中选择器的顺序确实起作用,当具体性值完全相同时,“更低”的选择器实际上会获胜。如果您的CSS依赖于顺序来工作,此优化显然会破坏它。另请参阅https://en.wikipedia.org/wiki/Cascading_Style_Sheets#Specificity

输入

body { foo:bar; too: me; } 
body { baz:foo; }
body { foo: new }
div.test { border: 1px solid black; }
div.other { border: 1px solid black}

输出

body{baz:foo;foo:new;too:me}div.other,div.test{border:1px solid black}

用法

$optimizer = new \CssOptimizer\Css\Optimizer;

$inputCss = 'body { foo:bar; too: me;} body { baz:foo; } body { foo: new }
div.test { border: 1px solid black; }
div.other { border: 1px solid black} ';

$minifiedCss = $optimizer->minifyCss($inputCss);
$optimizedCss = $optimizer->optimizeCss($minifiedCss);

print_r($optimizer->getCounts());

Assetic过滤器

此库附带一个现成的Assetic过滤器(用于Symfony2)。请使用预过滤器如CssMinFilter。

用法

$filter = new \CssOptimizer\Assetic\Filter\CssOptimizeFilter;
$asset = new StringAsset($inputCss);
$asset->ensureFilter($filter);
$outputCss = $asset->dump();

Composer

如果您正在使用composer,只需将"lastzero/css-optimizer"添加到您的composer.json文件中,然后运行composer update

"require": {
    "lastzero/css-optimizer": "*"
}