Вот мое текущее решение, но оно не кажется оптимальным, так как будет приводить к ошибкам, если в $Slice меньше четырех элементов. Мне интересно, есть ли лучший способ справиться с этим.
@mixin nine-border-slice($imagePath, $slice) {
$width: nth($slice, 1)+0px nth($slice, 2)+0px nth($slice, 3)+0px nth($slice, 4)+0px;
border-image-source: url($imagePath);
border-image-slice: $slice fill;
border-width: $width;
border-style: solid;
}
@include nine-border-slice('../stories/assets/speech_bubble.png', 19 44 95 25);
// border-image-source: url('../stories/assets/speech_bubble.png');
// border-image-slice: 19 44 95 25 fill;
// border-width: 19px 44px 95px 25px;
// border-style: solid;
@include nine-border-slice('../stories/assets/speech_bubble.png', 19 44 95 );
// border-image-source: url('../stories/assets/speech_bubble.png');
// border-image-slice: 19 44 95 fill;
// border-width: 19px 44px 95px;
// border-style: solid;
Лучшим решением является цикл по массиву $slice
и добавление px
к каждому значению массива, вы можете использовать цикл @for
для достижения этого:
@mixin nine-border-slice($imagePath, $slice) {
$width: ();
@for $i from 1 through length($slice) {
$width: append($width, nth($slice, $i) + px);
}
border-image-source: url($imagePath);
border-image-slice: $slice fill;
border-width: $width;
border-style: solid;
}