Compass / Sass检查文件是否存在

时间:2014-02-06 11:20:28

标签: sass compass-sass

我正在使用指南针生成精灵,并且有一个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;大概是因为文件的路径不正确。我/如何指定正确的路径?

1 个答案:

答案 0 :(得分:0)

我设法找到了一个解决方案,它不是检查文件是否存在,而是检查创建的精灵地图(来自所有肯定存在的文件)

我改变了

@if file_exists($name_hover){

@if sprite_has_selector($sprites, $name, hover){