最近一直在做邮件html发送。其中邮件排版中,很多邮箱对css大小有要求,必需要有压缩css的办法,以前的做法是去各大在线压缩工具中压缩好后,再加入邮件html中。随着邮件html模板越做越多后,这个压缩就很繁琐,为了解决这类问题,就开始寻找css压缩的办法。
纯js写的css压缩
var lCSSCoder = { format: function (s) { s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1"); s = s.replace(/;\s*;/g, ";"); s = s.replace(/\,[\s\.\#\d]*{/g, "{"); s = s.replace(/([^\s])\{([^\s])/g, "$1 {\n\t$2"); s = s.replace(/([^\s])\}([^\n]*)/g, "$1\n}\n$2"); s = s.replace(/([^\s]);([^\s\}])/g, "$1;\n\t$2"); return s }, packAdv: function (s) { s = s.replace(/\/\*(.|\n)*?\*\//g, ""); s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1"); s = s.replace(/\,[\s\.\#\d]*\{/g, "{"); s = s.replace(/;\s*;/g, ";"); s = s.match(/^\s*(\S+(\s+\S+)*)\s*$/); return (s == null) ? "" : s[1] }, pack: function (s) { s = s.replace(/\/\*(.|\n)*?\*\//g, ""); s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1"); s = s.replace(/\,[\s\.\#\d]*\{/g, "{"); s = s.replace(/;\s*;/g, ";"); s = s.replace(/;\s*}/g, "}"); s = s.replace(/([^\s])\{([^\s])/g, "$1{$2"); s = s.replace(/([^\s])\}([^\n]s*)/g, "$1}\n$2"); return s } };
function CSS(s,style) { return lCSSCoder[s](style) }
//s 类型:packAdv高级压缩 pack普通压缩 format格式化
//style 样式内容
//用法:CSS("packAdv",".page{background: #fff;}")