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