Sassのmixinを利用して簡単に@keyframesとanimationをかける方法が載っていました!
1. @keyframesを生成する@mixin
@mixin keyframes($animation-name) { @-webkit-keyframes $animation-name { @content; } @-moz-keyframes $animation-name { @content; } @keyframes $animation-name { @content; } }
2. animationプロパティを作る@mixin
@mixin animation($animation-name) { -webkit-animation: $animation-name; -moz-animation: $animation-name; animation: $animation-name; -webkit-animation-fill-mode: both; -moz-animation-fill-mode: both; animation-fill-mode: both; }
3. アニメーション名(animationSample)を指定して @keyframes を作る
@include keyframes(animationSample){ 0% { opacity:0; transform: translateX(100%); } 100% { opacity:1; transform: translateX(0); } }
4. アニメーションさせる要素にanimationプロパティを与える
#hoge{ @include animation(animationSample 1.2s ease 0.15s); }
こんな感じでとても便利だと思いました。
早速導入してみたところgruntでコンパイルしていたのですがコンパイル後のCSSをみると...
/* CSS */ @keyframes $animation-name { 0% { opacity:0; transform: translateX(100%); } 100% { opacity:1; transform: translateX(0); } }
@keyframesのアニメーション名が引数のanimationSample
になって欲しかったのですが、変数のつもりだった$animation-name
がそのまま文字列として出力されてしまっていました。
@keyframesを生成する@mixinのアニメーション名が変数になるようにする
#{$variable}
という書き方が使えるようです。
1. で作成したmixinを修正します。
@mixin keyframes($animation-name: animaton) { @-webkit-keyframes #{$animation-name} { @content; } @-moz-keyframes #{$animation-name} { @content; } @keyframes #{$animation-name} { @content; } }
これでコンパイルすると...
/* CSS */ @keyframes animationSample { 0% { opacity: 0; transform: translateX(100%); } 100% { opacity: 1; transform: translateX(0); } }
無事 @keyframesのアニメーション名が引数で付けることができていました!
このmixinすごく便利ですね!
- 作者: アニメ6人の会
- 出版社/メーカー: 合同出版
- 発売日: 2010/03
- メディア: 単行本
- 購入: 12人 クリック: 218回
- この商品を含むブログ (6件) を見る