我正在将样式表从 LESS 转换为 SCSS,并且在大多数情况下它进展顺利,但有一个问题:我似乎无法让我的一个 mixin 工作。
基本上我还没有完全跳上 html5 的潮流,我仍然使用图像进行渐变以实现浏览器兼容性。
我编写了一个 PHP 脚本来动态生成渐变(是的,并缓存它们!)然后 LESS 负责在调用 mixin 时链接到它。
无论如何,我的旧 mixin(来自 LESS):
.verticalGradient(@startColor, @endColor, @height){
@tmpStartColor: escape("@{startColor}");
@tmpEndColor: escape("@{endColor}");
background: @endColor url('@{img_path}gradient/v/5px/@{height}/@{tmpStartColor}/@{tmpEndColor}.png') 0 0 repeat-x;
}
到目前为止,这是我的新 mixin (SCSS) 所拥有的:
@mixin verticalGradient($startColor, $endColor, $height){
background: $endColor url('#{$img_path}gradient/v/5px/' + $height + '/' + $startColor + '/' + $endColor + '.png') 0 0 repeat-x;
}
所以这就是问题所在:在没有被转义的情况下,网址最终会变成这样:
/img/gradient/v/5px/25px/transparent/#ffe4c4.png
它应该是:
/img/gradient/v/5px/25px/transparent/%23ffe4c4.png
当然,由于哈希标签,服务器只能看到透明/,所以它没有得到颜色信息。
如果可以做到的话,剥离哈希标签是一个可以接受的解决方案(尽管我更愿意像以前一样逃避它们),但我似乎找不到任何方法来做到这一点。
谢谢!