CSSアニメーション例
上から降ってきて整列
※ネコブレイバーはマッハドッターbraveさんの作品です。
CSSアニメーション例
アニメーション概要
topの値がマイナスから0になることで、上から定位置に振ってくる(戻ってくる)仕掛です。順番に積み重なるようにするため、各行でtopの値が0になるタイミングをずらしています(ここまでは上から降ってくると基本的に同じ)。
一方、左右整列するタイミングは目の行を除き同じなので、同じタイミングでleftを0に戻しています。このとき、パーセントの幅が小さければ、それだけ速く動きます。
HTMLコーディングの概要はこちら。
CSS
.dots { float: left; width: 5%; padding-top: 5%; position: relative; } @keyframes fall-20 { 0% { top: -1000px; left: 30px; } 2% { top: 0px; } 56% { left: 30px; } 58% { left: 0px; } 100% { top: 0px; } } .r20 { animation-name: fall-20; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes fall-19 { 0% { top: -1000px; left: -40px; } 4% { top: 0px; } 56% { left: -40px; } 58% { left: 0px; } 100% { top: 0px; } } .r19 { animation-name: fall-19; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes fall-18 { 0% { top: -1000px; left: 2px; } 6% { top: 0px; } 56% { left: 2px; } 58% { left: 0px; } 100% { top: 0px; } } .r18 { animation-name: fall-18; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes fall-17 { 0% { top: -1000px; left: 40px; } 8% { top: 0px; } 56% { left: 40px; } 58% { left: 0px; } 100% { top: 0px; } } .r17 { animation-name: fall-17; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes fall-16 { 0% { top: -1000px; left: 30px; } 10% { top: 0px; } 56% { left: 30px; } 58% { left: 0px; } 100% { top: 0px; } } .r16 { animation-name: fall-16; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes fall-15 { 0% { top: -1000px; left: -45px; } 12% { top: 0px; } 56% { left: -45px; } 58% { left: 0px; } 100% { top: 0px; } } .r15 { animation-name: fall-15; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes fall-14 { 0% { top: -1000px; left: 40px; } 14% { top: 0px; } 56% { left: 40px; } 58% { left: 0px; } 100% { top: 0px; } } .r14 { animation-name: fall-14; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes fall-13 { 0% { top: -1000px; left: 0px; } 16% { top: 0px; } 56% { left: 0px; } 58% { left: 0px; } 100% { top: 0px; } } .r13 { animation-name: fall-13; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes fall-12 { 0% { top: -1000px; left: -50px; } 18% { top: 0px; } 56% { left: -50px; } 58% { left: 0px; } 100% { top: 0px; } } .r12 { animation-name: fall-12; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes fall-11 { 0% { top: -1000px; left: 20px; } 20% { top: 0px; } 56% { left: 20px; } 58% { left: 0px; } 100% { top: 0px; } } .r11 { animation-name: fall-11; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes fall-10 { 0% { top: -1000px; left: -30px; } 22% { top: 0px; } 56% { left: -30px; } 58% { left: 0px; } 100% { top: 0px; } } .r10 { animation-name: fall-10; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes fall-9 { 0% { top: -1000px; left: 80px; } 24% { top: 0px; } 70% { left: 80px; } 72% { left: 0px; } 100% { top: 0px; } } .r9 { animation-name: fall-9; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes fall-8 { 0% { top: -1000px; left: 20px; } 26% { top: 0px; } 56% { left: 20px; } 58% { left: 0px; } 100% { top: 0px; } } .r8 { animation-name: fall-8; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes fall-7 { 0% { top: -1000px; left: -40px; } 28% { top: 0px; } 56% { left: -40px; } 58% { left: 0px; } 100% { top: 0px; } } .r7 { animation-name: fall-7; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes fall-6 { 0% { top: -1000px; left: 60px; } 30% { top: 0px; } 56% { left: 60px; } 58% { left: 0px; } 100% { top: 0px; } } .r6 { animation-name: fall-6; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes fall-5 { 0% { top: -1000px; left: -20px; } 32% { top: 0px; } 56% { left: -20px; } 58% { left: 0px; } 100% { top: 0px; } } .r5 { animation-name: fall-5; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes fall-4 { 0% { top: -1000px; left: 60px; } 34% { top: 0px; } 56% { left: 60px; } 58% { left: 0px; } 100% { top: 0px; } } .r4 { animation-name: fall-4; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes fall-3 { 0% { top: -1000px; left: -60px; } 36% { top: 0px; } 56% { left: -60px; } 58% { left: 0px; } 100% { top: 0px; } } .r3 { animation-name: fall-3; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes fall-2 { 0% { top: -1000px; left: 10px; } 38% { top: 0px; } 56% { left: 10px; } 58% { left: 0px; } 100% { top: 0px; } } .r2 { animation-name: fall-2; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes fall-1 { 0% { top: -1000px; left: -80px; } 40% { top: 0px; } 56% { left: -80px; } 58% { left: 0px; } 100% { top: 0px; } } .r1 { animation-name: fall-1; animation-duration: 6s; animation-timing-function: linear; animation-iteration-count: infinite; }