Efek Teks Menggunakan Blotter.js
Persiapan Proyek
Section titled Persiapan%20ProyekSebelum memulai proyek ini, unduh jQuery , Blotter.js dan ChannelSplitMaterial lalu simpan di dalam folder yang sama. Buat file index.html
, tulis template dasar HTML didalamnya dan tautkan semua dependensi yang sudah diunduh sebelumnya. Buat file script.js
untuk kode javascript nanti.
Struktur HTML
Section titled Struktur%20HTMLSebelum menuliskan kode javascript, tulis HTML untuk mendefinisikan area penempatan teks animasi.
Styling Layout
Section titled Styling%20LayoutKita tidak banyak melakukan styling di sini. Buat .wrapper
sebagai display: flex
untuk membuat konten berada di tengah layar dengan align-items: center
dan justify-content: center
.
Kita juga menulikan style untuk .blotter-item
yang akan menjadi teks animasi nantinya.
Saatnya Membuat Teks Efek
Section titled Saatnya%20Membuat%20Teks%20EfekBuka file script.js
, buat variables beserta property untuk menyimpan karakter yang nanti akan dianimasikan.
Setelah selesai membuat variable, looping semua karakter di dalam array letters
sebagai Blotter.Text
. Kita bisa atur font yang digunakan dengan parameter family
atau warna teks dengan parameter fill
saat menginisialisasi Blotter.text
.
Untuk dokumentasi parameter apa saja yang bisa ditambah, silakan baca dokumentasi Blotter.js
Inisialisasi material untuk Blotter.text
, lalu terapkan material tersebut dengan masing-masing teks yang sudah dibuat sebelumnya sebagai objek Blotter
. Lalu buat dan simpan scope untuk semua karakter sebagai identifier saat nanti diterapkan dalam HTML.
Buat elemen DOM dalam bentuk <div>
dengan ID sesuai index karakter dan property CSS yang ditulis sebelumnya untuk posisi karakter lalu append ke dalam #stage
menggunakan jQuery.
Setelah itu, kita ambil elemen DOM yang baru saja kita buat berdasarkan ID-nya, dan append ke scope karakter Blotter
untuk kita render.
Jika kita buka index.html
di browser, teks yang baru saja dibuat akan muncul di layar, tetapi teks tidak bergerak berdasarkan cursor seperti halaman utama Blotter.js. Itu karena kita belum membuat teks mendeteksi gerakan cursor.
Membuat Teks Berinteraksi
Section titled Membuat%20Teks%20BerinteraksiJika kalian membaca dokumentasi ChannelSplitMaterial , kita bisa mengatur offset dan rotation dari material tersebut. Dua parameter ini yang akan kita ubah menggunakan value dari posisi dan sudut cursor dengan masing-masing karakter.
Fungsi Mencari Jarak
Section titled Fungsi%20Mencari%20JarakKita buat fungsi dengan 3 parameter untuk menghitung jarak antara cursor dan elemen DOM karakter.
Parameter elem
adalah elemen DOM yang ingin kita hitung jaraknya, parameter mouseX
dan mouseY
adalah posisi cursor yang akan kita ambil dari event mousemove
nantinya.
Setelah jarak antara cursor dan elemen DOM ditemukan, kita atur batas nilai offset hanya sampai 0.25
, karena kita tidak ingin teks bergerak terlalu jauh. (Offset ChannelSplitMaterial memiliki range dari 0 sampai 1).
Fungsi Mencari Sudut
Section titled Fungsi%20Mencari%20SudutSetelah mendapatkan jarak antara cursor dan elemen DOM, kita akan menghitung sudut yang akan kita gunakan sebagai rotation ChannelSplitMaterial.
Seperti halnya mencari jarak, fungsi ini juga membutuhkan 3 parameter yaitu elem
, mouseX
dan mouseY
.
Pasang Semua Di Event mousemove
Section titled Pasang%20Semua%20Di%20Event%20mousemove%7B%3Ajs%7DSetelah fungsi jarak dan sudut kita buat, kita pasang ke dalam event mousemove
menggunakan jQuery untuk mengatur offset dan rotation tiap ChannelSplitMaterial saat cursor kita bergerak.
Hasil Akhir & Source Code
Section titled Hasil%20Akhir%20%26%20Source%20CodeDan selesai, coba buka kembali index.html
dan coba gerakkan cursor mengitari teks yang muncul. Sekarang rotasi dan offset efek ChannelSplitMaterial akan mengikuti cursor kalian.
Kalian bisa menemukan source code untuk contoh proyek di bawah. Semoga bermanfaat.
visualnaut/blotterjs-experiment
Experimenting with Blotter.js recreating their own homepage