@mixin shake($prefix) {
  0%   { @include transform(translateX(0), $prefix); }
  10%  { @include transform(translateX(-10px), $prefix); }
  20%  { @include transform(translateX(10px), $prefix); }
  30%  { @include transform(translateX(-10px), $prefix); }
  40%  { @include transform(translateX(10px), $prefix); }
  50%  { @include transform(translateX(-10px), $prefix); }
  60%  { @include transform(translateX(10px), $prefix); }
  70%  { @include transform(translateX(-10px), $prefix); }
  80%  { @include transform(translateX(10px), $prefix); }
  90%  { @include transform(translateX(-10px), $prefix); }
  100% { @include transform(translateX(0), $prefix); }
}

@if $experimental-support-for-webkit {
  @-webkit-keyframes shake { @include shake(webkit); }
}
@if $experimental-support-for-khtml {
  @-khtml-keyframes shake { @include shake(khtml); }
}
@if $experimental-support-for-mozilla {
  @-moz-keyframes shake { @include shake(moz); }
}
@if $experimental-support-for-microsoft {
  @-ms-keyframes shake { @include shake(ms); }
}
@if $experimental-support-for-opera {
  @-o-keyframes shake { @include shake(o); }
}
@keyframes shake { @include shake(none); }

.shake {
  @include animation-name(shake);
}