额,如果不考虑用java,还是可以考虑考虑这个…
#!/bin/sh
#"^M"用来代替显示win下的换行符,直接复制这段脚本是不能用滴
cat $1 | sed -e 's/^M//g;s/^\xef\xbb\xbf//g;s/\([^0-9]\)0p[xt]/\10/g' -e 's/\/\*.*\*\///g' | sed -e '/^[\t ]*\/\*/,/\*\/[\t ]*$/d' | sed -e '/^[\t ]*$/d' -e 's/^[\t ]*//g' -e 's/;[\t ]*/;/g' -e 's/}[\t ]*/}/g' -e 's/\([^,\{;\}]\)$/\1;/g' -e 's/};/}/g' | sed -e :a -e '/[,;{][\t ]*$/{N;s/\n/ /;ba}' > /tmp/lala_css
mv /tmp/lala_css $1 Copy Code
压缩规则较简单..
- 删除注释
- 删除不必要的空白
- 删除window的utf BOM标记,删除win下的换行符
- 每条规则压成一行
- 0px -> 0
压缩效果如下,比yuicompressor差一点:
72344 2009-12-01 19:57 layout.css
69626 2009-12-01 19:52 layout-mini-sed.css
68720 2009-12-01 19:56 layout-mini-yui.css
文件下载点这里:compress-css.zip
不管怎么说,通过”<!–[if lte IE 6]>”的形式单独加载patch文件是一种不错的做法,用ff的用户不用为这些为ie而做的恶心patch浪费流量,页面的渲染速度也许会有所提升。
下午靖威同学跟我说,可不可以写一个脚本可以提取样式表中的hack,生成单独的hack文件,这样可以大大减少单独维护hack文件的成本。感觉想法不错,难度也不是很大,参考了一下shell说明,写了几句,先备个忘,下周有时间测试一下。。
#!/bin/bash
echo "$1/csspro/"
find "$1/csspro/" -name *.css | grep -v "ie[67]" > /tmp/allcss.tmp
cat /tmp/allcss.tmp | xargs -i sed -i '/^$/d;s/\\{\\s/\\{/;s/\\;\\s/\\;/;s/\\s\\}/\\}/;s/\/\*.*\*\///;/^[\t ]*\/\*/,/\*\/[\t ]*$/d' {}
cat /tmp/allcss.tmp | xargs -i sed -n '/* *html/p' {} >> "$1/csspro/patch/ie6.css"
cat /tmp/allcss.tmp | xargs -i sed -n '/*+html/p' {} >> "$1/csspro/patch/ie7.css"
cat /tmp/allcss.tmp | xargs -i sed -i '/* *html/d;/*+html/d' {}
rm /tmp/allcss.tmp Copy Code
请在ie下测试一下代码
1
2
| <p style="width:auto;color:#FFF;background:#066;filter:alpha(opacity=50);">使用 filter 透明度效果(这个是不生效的)</p>
<p style="zoom:1;color:#FFF;background:#066;filter:alpha(opacity=50);">使用 filter 透明度效果(使用zoom使其拥有布局)</p> |
Copy Code |
Run Code
原因是只有当元素的hasLayout为true时,filter才会生效,真贱~~
参阅:http://audi.tw/Blog/CSS/css.zoom.filter.alpha.opacity.asp