Here is one way:
@mixin transition($targets...) {
$items: "";
@each $item in $targets {
$i: index($targets, $item);
@if $i == length($targets) {
$items: $items + $item + " 100ms ease-out";
}
@else {
$items: $items + $item + " 100ms ease-out, ";
}
}
transition: unquote($items);
}
Codepen (see compiled css)
1) Set the variable to hold the string
$items: "";
2) In each iteration of the $ loop, everyone gets an index:
$i: index($targets, $item);
3) $items
. , ,
@if $i == length($targets) {
$items: $items + $item + " 100ms ease-out";
}
@else {
$items: $items + $item + " 100ms ease-out, ";
}
4) , unquote
transition: unquote($items);
:
.foo {
@include transition(color, width);
}
CSS:
.foo {
transition: color 100ms ease-out, width 100ms ease-out;
}