链轮,SASS和IE的MS过滤器(死亡的新蓝屏)

时间:2012-10-03 06:20:35

标签: ruby-on-rails sass sprockets

希望我设法诱使你使用BSOD标题=)

我使用线性渐变mixin,其语法如下:

+linear-gradient(top, #ffffff, #f7f7f7)

在预编译后的IE 中生成此内容

progid:DXImageTransform.Microsoft.gradient(startColorstr="#fff", endColorstr="#f7f7f7",GradientType=0 ) 

这会在IE 8/9中生成一个丑陋的蓝黑条,因为IE拒绝接受3-char十六进制代码

(嘿,man和#ffffff很好,不要问我为什么。蓝色/黑色条来自IE的默认设置,如果它不能识别语法,则使用蓝色/黑色作为颜色)。

我的问题是,如何在不压缩字符颜色代码的情况下rake assets:precompile?我想在编译时尽可能多地缩小,但不要插入我的颜色代码。

1 个答案:

答案 0 :(得分:0)

SASS有一个内置函数,名为ie-hex-str

我的例子的例子:

filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#{ie-hex-str(nth($full, 1))}", endColorstr="#{ie-hex-str(nth($full, 2))}",GradientType=0 );

我认为一般问题是IE 8/9不接受任何需要alpha通道的任何东西的短十六进制,与opacity有关。相反,您可以为它指定一个8字符的十六进制代码。