我正在使用指南针生成精灵,并且有一个mixin计算原始资产的宽度和高度,并将其添加到css中。
我也有一个选项可以在这个mixin上传递true或false来悬停状态图像。但是,每次我使用mixin时都不必指定它,如果文件存在,我想默认添加悬停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
;大概是因为文件的路径不正确。我/如何指定正确的路径?
答案 0 :(得分:0)
我设法找到了一个解决方案,它不是检查文件是否存在,而是检查创建的精灵地图(来自所有肯定存在的文件)
我改变了
@if file_exists($name_hover){
到
@if sprite_has_selector($sprites, $name, hover){