回転のアニメーションを作ってみた(デザイン勉強)
今回参考させていただくペン
tamago324さんのペンを写経させていただきます。ボックスが一定期間ごとに回転するコード!ぷるぷるしてるね
完成したコード
全く違うもの作ってて草ですな( -`ω-)
なんとなく黄色だけ逆回転しているように見えなくもないアニメーション。
ぷるぷるはCSSアニメーションの段階分けすごすぎたから自力では諦めた(*´꒳`*)
以下、作成するまでの写経段階とアレンジん段階のメモ。
アウトプットメモ
今回JavaScriptコードは無いから使わないらしい。
JavaScript=動かすためのコードみたいなイメージやったからもうこの時点でわかんない(;ω;)
使用しているのはCSSアニメーションっていうやつらしい。
要素のスタイルを時間の経過に沿って変化させる方法。JavaScriptより簡単な動きしかつけれないけど、シンプルなやつやったらこれで実装できる感じ。
定義する時は@keyframes アニメーション名っていう書き方。
これを定義しといて実際に適用する時はpaddingとかcorolとか普通のCSS指定する場所と同じところで
.class {
animation: アニメーション名 1s infinite;
みたいな感じで指定すればいい感じっぽい。
「(アニメーション名)を1秒周期で無限に繰り返す」みたいな感じかな?
SCSSはCSSの拡張版。色々機能あるみたいやけどとりあえずセレクタをネスト構造で書けるやつ。
実際にコード見ていくよ。
HTMLは1文だけ。boxクラスを置いてるだけやからCSSで細かく指定しない限りまだ何も表示されない状態かな?
<div class="box"></div>
<div>は特定の領域つくるときにグループ識別するために囲む要素。閉じタグが必要。
classはCSSで.box {}の形で指定するよ。
CSSひとつずつ見ていく。
元コードのインプットはこれくらい
写経コード元に色々アレンジしてみた!
@keyframes animation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(90deg);
}
}
アニメーションは0%~100%までだけで90度回転のアニメーション。やから写経のやつよりプルプル感うすめ。
HTMLはboxを3つに増やしたよ。scssで&.box-1みたいな感じで子要素ネストして指定する感じ。
<div class="container">
<div class="box box-1"></div>
<div class="box box-2"></div>
<div class="box box-3"></div>
</div>
SCSS
.container
.box {
width: 100px;
height: 100px;
border-radius: 5px;
margin: 50px;
position: absolute;
&.box-1 {
background-color: blue;
animation: animation 4000ms linear infinite both;
}
&.box-2 {
background-color: red;
animation: animation 2000ms linear infinite both;
}
&.box-3 {
background-color: yellow;
animation: animation 8000ms linear infinite both;
}
}
@keyframes animation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(90deg);
}
}
それぞれanimationの動く秒数を4秒、2秒、8秒に変更。
重ねておくためにbox要素はposition: absoluteで絶対位置を指定してる。
z-indexで高い値設定しておいたら、青色とか赤色を全面に出すことも可能な感じやな( -`ω-)👍🏻
ということで以上!!