Для @mixin keyframe
вы можете сделать это:
@mixin keyframe ($animation_name, $isGlobal: false) {
@if $isGlobal {
$animation_name: #{':global('+$animation_name+')'};
}
@-webkit-keyframes #{$animation_name} {
@content;
}
@-moz-keyframes #{$animation_name} {
@content;
}
@keyframes #{$animation_name} {
@content;
}
}
Вы можете еще больше оптимизировать его с помощью цикла для добавления префиксов:
@mixin keyframe ($animation_name, $isGlobal: false) {
@if $isGlobal {
$animation_name: #{':global('+$animation_name+')'};
}
@each $prefix in moz, webkit {
@-#{$prefix}-keyframes #{$animation_name} {
@content;
}
}
@keyframes #{$animation_name} {
@content;
}
}
Для второго:первое, что вы можете сделать, это использовать миксин с автопрефиксом, такой как , сделанный Уго Жирауделем :
@mixin prefix($declarations, $prefixes: ()) {
@each $property, $value in $declarations {
@each $prefix in $prefixes {
#{'-' + $prefix + '-' + $property}: $value;
}
// Output standard non-prefixed declaration
#{$property}: $value;
}
}
, а затем включить его в @mixin animation
:
@mixin animation (
$animation_name,
$duration,
$isGlobal: false,
$animation_timing_function: linear,
$delay: 0,
$fillmode: forwards,
$direction: normal
) {
@if $isGlobal {
:global {
@include prefix((
animation-name: $animation_name,
animation-duration: $duration,
animation-timing-function: $animation_timing_function,
animation-delay: $delay,
animation-fill-mode: $fillmode,
animation-direction: $direction
), webkit moz);
}
}
@else {
@include prefix((
animation-name: $animation_name,
animation-duration: $duration,
animation-timing-function: $animation_timing_function,
animation-delay: $delay,
animation-fill-mode: $fillmode,
animation-direction: $direction
), webkit moz);
}
}