Ответ 1
в зависимости от того, как ваши пакеты структурированы/применены, вы можете использовать цикл для создания кучи общих стилей. Смотрите документацию здесь: http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#id35
Вам действительно нужны 3 отдельных компонента, чтобы получить URL-адрес вашего изображения? не будет: $img
, а затем установить для /folder/img.ext
намного проще?
Кроме того, вам не нужен #{}
для повторения.
Я надеюсь, что это то, что вам нужно... вопрос не очень конкретный с точки зрения того, что вам нужно, чтобы на самом деле был результат.
Cheers, Jannis
Update:
Хорошо, я вижу, что вы обновили свой вопрос (спасибо за это). Я считаю, что это может быть немного лучше для общего использования:
@mixin background($imgpath,$position:0 0,$repeat: no-repeat) {
background: {
image: url($imgpath);
position: $position;
repeat: $repeat;
}
}
.testing {
@include background('/my/img/path.png');
}
Затем выводится:
.testing {
background-image: url("/my/img/path.png");
background-position: 0 0;
background-repeat: no-repeat;
}
Или вы можете использовать сокращенную версию:
@mixin backgroundShorthand($imgpath,$position:0 0,$repeat: no-repeat) {
background: transparent url(#{$imgpath}) $repeat $position;
}
.testing2 {
@include backgroundShorthand('/my/img/path.png');
}
Что будет генерировать:
.testing2 {
background: transparent url(/my/img/path.png) no-repeat 0 0;
}
Наконец, если вы хотите указать свой базовый путь в свой каталог изображений отдельно, вы можете сделать следующее:
$imagedir:'/static/images/'; // define the base path before the mixin
@mixin backgroundShorthandWithExternalVar($filename,$position:0 0,$repeat: no-repeat) {
background: transparent url(#{$imagedir}#{$filename}) $repeat $position;
}
.testing3 {
@include backgroundShorthandWithExternalVar('filename.png');
}
Затем генерируется:
.testing3 {
background: transparent url(/static/images/filename.png) no-repeat 0 0;
}
Это то, что вам нужно?
Если вы не можете обновить вопрос или ответить/комментарий.