我正在尝试编写与以下CSS代码对应的LESS代码,用于在IE中生成渐变。
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff9600',endColorstr='#ff6900');
以下是LESS代码:
.gradient(@start_color, @end_color)
{
filter:~"progid:DXImageTransform.Microsoft.gradient(startColorstr='"@start_color~"',endColorstr='"@end_color~"')";
}
.gradient(#ff9600,#ff6900)
在编译时它会提供以下CSS代码:
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=' #ff9600 ', endColorstr=' #ff6900 ');
正如您所看到的,在颜色值的两侧都插入了空格,因为IE无法正确读取颜色。
我使用http://crunchapp.net/以及http://winless.org/编译了LESS代码,两者都提供了相同的结果。是否存在避免这些空间的黑客行为。感谢。
答案 0 :(得分:10)
使用变量插值而不是结束字符串并重新启动它。
E.g。
〜 “栏@ {名称} foo” 的
不会插入任何空格。
答案 1 :(得分:3)
我正在使用LESS.app(www.lesscss.org)...
我只是把
filter: progid:dximagetransform.microsoft.gradient(startColorstr='@{start}', endColorstr='@{stopColor}', GradientType=0);
并按如下方式正确编译:
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#76787a', endColorstr='#9d9ea0', GradientType=0);
答案 2 :(得分:0)
我对LESS并不熟悉;但是,从我在他们的页面上看到的内容:
.class {
filter: ~"ms:alwaysHasItsOwnSyntax.For.Stuff()";
}
表示变量不应附加~
,如果您尝试传递单引号,则会"'@var'"
而不是'"@var"'
内部使用单引号而不是外面。我在这里做了一些研究,认为这是一个答案而不是评论。