您無法獲得間距以處理智能佈局的原因是因爲智能佈局根本不支持間距。間距僅對水平和垂直佈局有任何影響。
也就是說,如果您願意修補指南針代碼,您可以自己添加支持。您需要替換layout_methods.rb
文件中的calculate_smart_positions
方法,該文件可在lib/compass/sass_extensions/sprites/layout_methods.rb
(相對於羅盤安裝目錄)找到。
更新的方法應該是這樣的:
def calculate_smart_positions
fitter = ::Compass::SassExtensions::Sprites::RowFitter.new(@images)
current_y = 0
width = 0
height = 0
last_row_spacing = 9999
fitter.fit!.each do |row|
current_x = 0
row_height = 0
row.images.each_with_index do |image, index|
extra_y = [image.spacing - last_row_spacing,0].max
if index > 0
last_image = row.images[index-1]
current_x += [image.spacing, last_image.spacing].max
end
image.left = current_x
image.top = current_y + extra_y
current_x += image.width
width = [width, current_x].max
row_height = [row_height, extra_y+image.height+image.spacing].max
end
current_y += row.height
height = [height,current_y].max
last_row_spacing = row_height - row.height
current_y += last_row_spacing
end
@width = width
@height = height
end
注意,這有時可能不會產生最佳的佈局,因爲它只能應用到限位後的行擬合算法已經決定了精靈是如何分成行。但希望它對大多數情況下應該足夠好。
我還應該提到,我有寶貴的零紅寶石編程經驗,所以這可能是寫得非常糟糕的代碼。它確實似乎工作。
使用智能佈局時,間距不能設置。 – agustibr