2
我使用指南针来生成精灵,并有一个混合程序计算原始资产的宽度和高度,并将其添加到css中。Compass/Sass检查文件是否存在
我也有一个选项在这个混合传递真实或错误的悬停状态图像。但不是每次使用mixin时都要指定这个,如果文件存在,我想默认添加hover css。
我已经添加下面我config.rb文件(迄今为止它我唯一的扩展名)
module Sass::Script::Functions
def file_exists(image_file)
path = image_file.value
Sass::Script::Bool.new(File.exists?(path))
end
end
而且我的mixin看起来像这样
@mixin sprite($name, $hover: true, $active: false, $pad:0){
@include sprite-dimensions($sprites, $name);
background-repeat: no-repeat;
background-image: sprite-url($sprites);
background-position: sprite-position($sprites, $name, -$pad, -$pad);
@if $hover == true{
$name_hover: $name + _hover;
@if file_exists($name_hover){
&:hover {
background-position: sprite-position($sprites, $name_hover, -$pad, -$pad);
}
}
}
}
但file_exists
功能不返回true
;可能是因为文件的路径不正确。什么/如何指定正确的路径?
确保'image_file'是一个字符串。你也不需要整个'path'变量声明行;只需将其替换为w /'image_file'即可。 – T145
看起来图像的路径可能与您的Ruby文件相关,而不是来自调用该函数的Sass文件。 – cimmanon