Hari ini kita akan membuat animasi loading. Seperti biasa buatlah folder dengan nama bouncy-loader. Buka folder tersebut dan buatlah file index.html dan masukkan kode berikut.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Bouncy Loader</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="wrapper"> <div class="circle"></div> <div class="circle"></div> <div class="circle"></div> <div class="shadow"></div> <div class="shadow"></div> <div class="shadow"></div> </div> </body> </html> |
Simpan file tersebut, kemudian buat file pada folder yang sama dan beri nama style.css. Masukkan kode berikut.
1 2 3 4 5 6 7 8 | body { width: 100%; height: 100vh; display: flex; justify-content: center; align-items: center; background: red; } |
Ketika file dibuka pada browser, maka tampilannya sepert berikut.
Background pada halaman tersebut berwarna merah, silahkan disesuaikan dengan keingingan.
Selanjutnya tambahkan kode berikut pada file css anda.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | .wrapper { width: 200px; height: 60px; position: relative; z-index: 1; } .circle { width: 20px; height: 20px; position: absolute; border-radius: 50%; background-color: #fff; left: 15%; transform-origin: 50%; animation: circle .5s alternate infinite ease; } |
Simpan dan lihat perubahan pada halaman anda.
Tampak hanya satu titik putih saja bukan. Tenang, nanti kita akan animasikan titik tersebut.
Mari kita buat animasinya.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | @keyframes circle { 0% { top: 60px; height: 5px; border-radius: 50px 50px 25px 25px; transform: scaleX(1.7); } 40% { height: 20px; border-radius: 50%; transform: scaleX(1); } 100% { top: 0%; } } |
Simpan dan lihat perubahannya. Namun animasinya hanya pada satu titik saja. Padahal pada file html terdapat tiga element yang memiliki class circle. Kita lanjutkan dengan menambahkan kode berikut.
1 2 3 4 5 6 7 8 9 10 | .circle:nth-child(2) { left: 45%; animation-delay: .2s; } .circle:nth-child(3) { left: auto; right: 15%; animation-delay: .3s; } |
Ketika kita lihat Kembali pada browser, sudah terlihat tiga titik yang memantul seperti bola.
Selanjutnya kita buat bayangan dari bola di atas. Tambahkan kode berikut.
1 2 3 4 5 6 7 8 9 10 11 12 13 | .shadow { width: 20px; height: 4px; border-radius: 50%; background-color: rgba(0, 0, 0, 0.9); position: absolute; top: 62px; transform-origin: 50%; z-index: -1; left: 15%; filter: blur(1px); animation: shadow .5s alternate infinite ease; } |
Sekarang sudah ada bayangannya. Namun bayangannya kurang menarik. Mari kita buat agar tampak lebih menarik. Pada kode diatas bagian akhir dari kode terdapat animation bernama shadow. Berikut kode animasinya.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @keyframes shadow { 0% { transform: scaleX(1.5); } 40% { transform: scaleX(1); opacity: .7; } 100% { transform: scaleX(.2); opacity: .4; } } |
Oke hasilnya seperti ini.
Bayangannya membesar dan mengecil. Tapi hanya ada satu bayangan saja. Tambahkan kode berikut agar semuanya terdapat bayangan.
1 2 3 4 5 6 7 8 9 10 | .shadow:nth-child(4) { left: 45%; animation-delay: .2s; } .shadow:nth-child(5) { left: auto; right: 15%; animation-delay: .3s; } |
Sehingga kode keseluruhan untuk berkas style.css adalah.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | body { width: 100%; height: 100vh; display: flex; justify-content: center; align-items: center; background: red; } .wrapper { width: 200px; height: 60px; position: relative; z-index: 1; } .circle { width: 20px; height: 20px; position: absolute; border-radius: 50%; background-color: #fff; left: 15%; transform-origin: 50%; animation: circle .5s alternate infinite ease; } @keyframes circle { 0% { top: 60px; height: 5px; border-radius: 50px 50px 25px 25px; transform: scaleX(1.7); } 40% { height: 20px; border-radius: 50%; transform: scaleX(1); } 100% { top: 0%; } } .circle:nth-child(2) { left: 45%; animation-delay: .2s; } .circle:nth-child(3) { left: auto; right: 15%; animation-delay: .3s; } .shadow { width: 20px; height: 4px; border-radius: 50%; background-color: rgba(0, 0, 0, 0.9); position: absolute; top: 62px; transform-origin: 50%; z-index: -1; left: 15%; filter: blur(1px); animation: shadow .5s alternate infinite ease; } @keyframes shadow { 0% { transform: scaleX(1.5); } 40% { transform: scaleX(1); opacity: .7; } 100% { transform: scaleX(.2); opacity: .4; } } .shadow:nth-child(4) { left: 45%; animation-delay: .2s; } .shadow:nth-child(5) { left: auto; right: 15%; animation-delay: .3s; } |
Simpan perubahan dan lihatlah hasilnya.
0 Komentar