Вставьте ваш css код в поле:<br><textarea cols="100" rows="12" wrap="virtual" id="code"></textarea><br><input type="button" value="Сжать css" onclick="compress(1)"/><input type="button" value="Восстановить css" onclick="restore()"/><br><table width="63%" border="0" cellspacing="3" cellpadding="0"><tr><td width="100">До сжатия:</td><td align="left" valign="middle" style="background:#dddddd;"><div id="before" style="width:1px;"></div></td></tr><tr><td>После сжатия:</td><td align="left" valign="middle" style="background:#dddddd;"><div id="after" style="width:1px;"></div></td></tr></table><textarea cols="100" rows="12" wrap="off" id="result" onclick="this.select()"></textarea>
<script>
// Создано Aleko
code = document.getElementById('code');
before = document.getElementById('before');
after = document.getElementById('after');
result = document.getElementById('result');
function compress(par){
proc = code.value
.replace(/(\n|\r|\t|\v)/g,'') // переносы строк, табы
.replace(/\/\*(.*?)\*\//g,'') // комментарии
.replace(/\s*(em|ex|px|pt|pc|in|mm|cm|%)([^\w])/ig,'$1$2') // пробелы перед величинами
.replace(/([^\d]0)(em|ex|px|pt|pc|in|mm|cm|%)/ig,'$1') // замена нулевых значений
.replace(/\s*(\{|\}|\;|\:|\,|\])\s*/g,'$1') // лишние пробелы в значениях
.replace(/^\s*/g,'') // лишние пробелы в начале
.replace(/\s*\!important/g,'!important') // лишние пробелы
.replace(/\[\s*/g,'[') // лишние пробелы в css3
.replace(/([\#\.\@\[\]]*\w*)\s+([\#\.\@\[\]]*\w*)/g,'$1 $2') // лишние пробелы между селекторами
.replace(/\#([0-9a-f]{1})\1([0-9a-f]{1})\2([0-9a-f]{1})\3/ig,'#$1$2$3') // краткие цвета
.replace(/([^\w])bold([^\w])/g,'$1700$2') // bold
.replace(/(^|\})[^\{\}]+?(\{\s*\})/g,'$1')
.replace(/{([^\}\{]*)}/g,function(m){ // margin-top:0;margin-right:0;
var pt,pr,pb,pl;
if(m.match(/padding-top\:(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0)/ig)){pt=m.replace(/.*padding-top\:(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0).*/ig,'$1');}
if(m.match(/padding-right\:(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0)/ig)){pr=m.replace(/.*padding-right\:(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0).*/ig,'$1');}
if(m.match(/padding-bottom\:(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0)/ig)){pb=m.replace(/.*padding-bottom\:(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0).*/ig,'$1');}
if(m.match(/padding-left\:(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0)/ig)){pl=m.replace(/.*padding-left\:(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0).*/ig,'$1');}
var mt,mr,mb,ml;
if(m.match(/margin-top\:(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0)/ig)){mt=m.replace(/.*margin-top\:(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0).*/ig,'$1');}
if(m.match(/margin-right\:(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0)/ig)){mr=m.replace(/.*margin-right\:(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0).*/ig,'$1');}
if(m.match(/margin-bottom\:(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0)/ig)){mb=m.replace(/.*margin-bottom\:(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0).*/ig,'$1');}
if(m.match(/margin-left\:(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0)/ig)){ml=m.replace(/.*margin-left\:(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0).*/ig,'$1');}
if(pt&&pl&&pr&&pb){
var outp = m.replace(/padding-(top|right|bottom|left)\:(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0)(;?)/ig,'');
outp = outp.replace(/\{|\}/g,'');
return "{padding:"+pt+" "+pr+" "+pb+" "+pl+";"+outp+"}";
}
if(mt&&ml&&mr&&mb){
var outm = m.replace(/margin-(top|right|bottom|left)\:(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0)(;?)/ig,'');
outm = outm.replace(/\{|\}/g,'');
return "{margin:"+mt+" "+mr+" "+mb+" "+ml+";"+outm+"}";
}
if(!outm&&!outp){return m;}
})
.replace(/(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0)\s\1\s\1\s\1/ig,'$1') // margin:0 0 0 0;
.replace(/(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0)\s(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0)\s\1\s\3/ig,'$1 $3') //margin:0 1 0 1;
.replace(/(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0)\s(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0)\s(\d+(em|ex|px|pt|pc|in|mm|cm|%)|0)\s\3/ig,'$1 $3 $5') //margin:0 1 2 1;
.replace(/\;\}/g,'}') // точка с запятой в конце условия
.replace(/\;{2,}/g,';') // лишние точки с запятой
.replace(/\s{2,}/g,' '); // больше одного пробела подряд
if(par==1){result.value = proc;}
data(par);
};
function data(par){
if(par==1){
before.style.width = "100%";
before.innerHTML = " "+parseInt(code.value.length)+" байт";
after.style.width = parseInt(result.value.length/(code.value.length/100))+"%";
after.innerHTML = " "+parseInt(result.value.length)+" байт";
}else{
before.style.width = "1px";
before.innerHTML = "";
after.style.width = "1px";
after.innerHTML = "";
}
};
function restore(){
compress(0);
result.value = proc
.replace(/,/g,', ')
.replace(/([^{])}/g,'$1;}\n')
.replace(/\#([0-9a-f])([0-9a-f])([0-9a-f])(?!\w)/ig,'#$1$1$2$2$3$3')
.replace(/\#([a-f0-9]{6})(?!\w)/ig,function(m){return m.toUpperCase()})
//.replace(/([^)]){([^}])/g,'$1 {\n\t$2')
//.replace(/{}/g,'{}\n\n')
//.replace(/;(?=\w|})/g,';\n\t')
.replace(/;([\#\.\@\[])/g,';\n\n$1')
.replace(/\!important/g,' !important')
.replace(/\s*$/g,'');
};
</script>
К примеру этот скрипт после вставки его в редактор в панели половина кода пропадает и в итоге скрипт не работает...