piapia123
zh

CSS 压缩与美化

网络

所有处理都在浏览器本地完成,数据不上传服务器

输入
把文件拖到这里可直接载入
输出

把 CSS 压成一行,或者重新缩进成易读的多行,并给出规则数、声明数、选择器数,以及压缩前后的字节数与节省比例。它用一个最小的字符级扫描器,不用正则瞎删 —— `content: "}"` 里的花括号、`url("a;b.png")` 里的分号、`[data-x="a,b"]` 里的逗号都不会被当成结构符号切开。压缩时最后一条声明后的分号默认去掉,也可以选保留;注释可以去、也可以留(`/*!` 版权注释始终保留)。全部在浏览器里完成,样式表不会上传。

功能

  • 三种模式:压缩、美化、只统计
  • 美化模式缩进可选 2 空格、4 空格或 Tab
  • 统计规则数、声明数、选择器数
  • 给出压缩前后的字节数与节省比例
  • 最后一条声明后的分号可选保留或去掉
  • 注释可选去掉,`/*!` 版权注释始终保留
  • 字符串、注释、url() 与方括号里的 `{};:,` 不会被误删
  • `a :hover` 与 `a:hover` 的区别被正确保留
  • 结果可整块复制,统计可逐行复制

使用方法

  1. 把 CSS 粘贴或拖进输入框
  2. 选模式,需要时再调缩进、分号与注释选项
  3. 处理结果与统计随输入实时更新
  4. 复制处理后的 CSS,或逐行取走统计数字

常见问题

为什么不直接用正则做压缩?
因为 CSS 里 `{};:,` 到处都可能是数据而非结构:`content: "}"` 里的花括号是字符串内容,`url(a;b.png)` 里的分号是 URL 的一部分,`[data-x="a,b"]` 里的逗号在选择器里。正则会把它们切开,产出一份看起来正常、语义已经变了的样式表 —— 而它多数情况下仍能被浏览器解析,只是渲染不对。所以这里写了一个最小的字符级扫描器。
「只统计」模式为什么不算出压缩后的 CSS?
它算的。节省比例与「压缩后字节数」都是按压缩后的结果算出来的,只是不把那段 CSS 显示出来 —— 你只是想知道能省多少时,不必先看一屏密密麻麻的输出。
删除注释会删掉版权声明吗?
不会。以 `/*!` 开头的注释是业界约定要保留的版权声明,无论是否勾选「去掉注释」都会留下。
CSS 会上传吗?
不会。切词、压缩、统计全部在浏览器里跑,页面不发送任何请求。

相关工具