60 lines
1.8 KiB
SCSS
Executable File
60 lines
1.8 KiB
SCSS
Executable File
@mixin border-image($borders...) {
|
|
$webkit-borders: ();
|
|
$spec-borders: ();
|
|
|
|
@each $border in $borders {
|
|
$webkit-border: ();
|
|
$spec-border: ();
|
|
$border-type: type-of($border);
|
|
|
|
@if $border-type == string or list {
|
|
$border-str: if($border-type == list, nth($border, 1), $border);
|
|
|
|
$url-str: str-slice($border-str, 0, 3);
|
|
$gradient-type: str-slice($border-str, 0, 6);
|
|
|
|
@if $url-str == "url" {
|
|
$webkit-border: $border;
|
|
$spec-border: $border;
|
|
}
|
|
|
|
@else if $gradient-type == "linear" {
|
|
$gradients: _linear-gradient-parser("#{$border}");
|
|
$webkit-border: map-get($gradients, webkit-image);
|
|
$spec-border: map-get($gradients, spec-image);
|
|
}
|
|
|
|
@else if $gradient-type == "radial" {
|
|
$gradients: _radial-gradient-parser("#{$border}");
|
|
$webkit-border: map-get($gradients, webkit-image);
|
|
$spec-border: map-get($gradients, spec-image);
|
|
}
|
|
|
|
@else {
|
|
$webkit-border: $border;
|
|
$spec-border: $border;
|
|
}
|
|
}
|
|
|
|
@else {
|
|
$webkit-border: $border;
|
|
$spec-border: $border;
|
|
}
|
|
|
|
$webkit-borders: append($webkit-borders, $webkit-border, comma);
|
|
$spec-borders: append($spec-borders, $spec-border, comma);
|
|
}
|
|
|
|
-webkit-border-image: $webkit-borders;
|
|
border-image: $spec-borders;
|
|
border-style: solid;
|
|
}
|
|
|
|
//Examples:
|
|
// @include border-image(url("image.png"));
|
|
// @include border-image(url("image.png") 20 stretch);
|
|
// @include border-image(linear-gradient(45deg, orange, yellow));
|
|
// @include border-image(linear-gradient(45deg, orange, yellow) stretch);
|
|
// @include border-image(linear-gradient(45deg, orange, yellow) 20 30 40 50 stretch round);
|
|
// @include border-image(radial-gradient(top, cover, orange, yellow, orange));
|