Istrukturkode Blog

Cara Mudah Membuat Efek "Typewriter" Keren dengan JavaScript

Daftar Isi ▼
    Cara Membuat Efek "Typewriter" dengan JavaScript

    Cara Mudah Membuat Efek "Typewriter" Keren dengan JavaScript

    Pernahkah Anda melihat efek teks yang seolah-olah diketik secara otomatis di website dan bertanya-tanya bagaimana cara membuatnya? Efek "typewriter" atau mesin ketik ini bisa memberikan sentuhan dinamis dan menarik pada tampilan website Anda. Kabar baiknya, efek ini sangat mudah dibuat dengan JavaScript! Artikel ini akan memandu Anda langkah demi langkah, dari dasar hingga implementasi, sehingga Anda bisa membuat efek "typewriter" yang memukau dalam sekejap.

    Mengapa Efek "Typewriter" Penting?


    Mengapa Efek "Typewriter" Penting?

    Sebelum kita masuk ke kode, mari kita pahami mengapa efek "typewriter" begitu populer dan bermanfaat:

    1. Menarik Perhatian: Gerakan teks yang muncul secara bertahap langsung menarik perhatian pengunjung.
    2. Meningkatkan Engagement: Efek ini membuat pengunjung lebih tertarik untuk membaca konten yang disajikan.
    3. Menekankan Informasi Penting: Anda dapat menggunakan efek ini untuk menyoroti pesan kunci atau judul penting.
    4. Memberikan Kesan Profesional: Efek yang diterapkan dengan baik dapat meningkatkan kesan profesional dan modern pada website Anda.
    5. Meningkatkan User Experience (UX): Animasi yang halus dan natural dapat memperkaya pengalaman pengguna saat berinteraksi dengan website.

    Persiapan Awal: Dasar-Dasar yang Perlu Anda Ketahui


    Persiapan Awal: Dasar-Dasar yang Perlu Anda Ketahui

    Sebelum mulai membuat efek "typewriter", pastikan Anda memiliki pemahaman dasar tentang:

    1. HTML: Struktur dasar website, termasuk tag-tag seperti <p>, <h1> - <h6>, <span>, dan lain-lain.
    2. CSS: Gaya visual website, seperti warna, font, ukuran, dan tata letak.
    3. JavaScript: Bahasa pemrograman yang digunakan untuk membuat interaksi dinamis pada website.

    Jika Anda merasa perlu menyegarkan ingatan Anda, ada banyak sumber daya online gratis yang tersedia untuk mempelajari dasar-dasar HTML, CSS, dan JavaScript.

    Langkah 1: Struktur HTML Dasar


    Langkah 1: Struktur HTML Dasar

    Pertama, kita perlu membuat struktur HTML dasar untuk menampilkan teks yang akan diketik. Kita akan menggunakan tag <span> untuk membungkus teks yang akan diberi efek "typewriter".

    Berikut adalah contoh kode HTML:

    <!DOCTYPE html>
    <html>
    <head>
    <title>Efek Typewriter dengan JavaScript</title>
    </head>
    <body>

    <h1>Selamat Datang di Website Saya!</h1>
    <p>Ini adalah contoh efek <span id="typewriter"></span> menggunakan JavaScript.</p>

    <script src="script.js"></script>
    </body>
    </html>

    Penjelasan:

    • Kita menggunakan <span id="typewriter"></span> sebagai wadah untuk teks yang akan diketik. `id="typewriter"` penting karena akan kita gunakan untuk memilih elemen ini dalam JavaScript.
    • Kita menempatkan <script src="script.js"></script> di akhir <body> untuk memastikan bahwa HTML sudah dimuat sebelum JavaScript dijalankan. Ini adalah praktik yang baik untuk meningkatkan performa website.

    Langkah 2: Menulis Kode JavaScript


    Langkah 2: Menulis Kode JavaScript

    Sekarang, mari kita tulis kode JavaScript untuk membuat efek "typewriter". Buat file baru dengan nama `script.js` (sesuai dengan yang kita sebutkan di HTML) dan masukkan kode berikut:

    const text = "Typewriter!"; // Teks yang akan diketik
    const typewriterElement = document.getElementById("typewriter"); // Mendapatkan elemen span dengan id "typewriter"
    let index = 0; // Index karakter saat ini

    function typeWriter() {
    if (index < text.length) {
    typewriterElement.innerHTML += text.charAt(index); // Menambahkan karakter ke elemen span
    index++; // Menaikkan index
    setTimeout(typeWriter, 50); // Memanggil fungsi typeWriter lagi setelah 50ms
    }
    }

    typeWriter(); // Memulai efek typewriter

    Penjelasan:

    1. `const text = "Typewriter!";`: Mendefinisikan teks yang akan diketik. Anda bisa mengganti teks ini dengan teks apa pun yang Anda inginkan.
    2. `const typewriterElement = document.getElementById("typewriter");`: Mendapatkan elemen HTML dengan ID "typewriter" menggunakan `document.getElementById()`. Ini memungkinkan kita untuk memanipulasi elemen tersebut menggunakan JavaScript.
    3. `let index = 0;`: Mendefinisikan variabel `index` untuk melacak posisi karakter saat ini dalam teks.
    4. `function typeWriter() { ... }`: Fungsi ini berisi logika utama untuk efek "typewriter".
      • `if (index < text.length) { ... }`: Memeriksa apakah `index` masih kurang dari panjang teks. Jika ya, berarti masih ada karakter yang perlu diketik.
      • `typewriterElement.innerHTML += text.charAt(index);`: Menambahkan karakter pada posisi `index` dari teks ke dalam `innerHTML` dari elemen `typewriterElement`. `text.charAt(index)` mengambil karakter pada posisi `index` dalam string `text`.
      • `index++;`: Menaikkan nilai `index` agar pada iterasi berikutnya karakter selanjutnya akan ditambahkan.
      • `setTimeout(typeWriter, 50);`: Menggunakan `setTimeout()` untuk memanggil fungsi `typeWriter()` lagi setelah jeda 50 milidetik. Ini menciptakan efek pengetikan yang bertahap. Angka 50 (milidetik) menentukan kecepatan pengetikan; semakin kecil angkanya, semakin cepat pengetikannya.

    5. `typeWriter();`: Memanggil fungsi `typeWriter()` untuk memulai efek typewriter saat halaman dimuat.

    Langkah 3: Menyesuaikan Kecepatan dan Teks


    Langkah 3: Menyesuaikan Kecepatan dan Teks

    Anda dapat dengan mudah menyesuaikan kecepatan pengetikan dengan mengubah nilai yang diberikan pada `setTimeout()`. Semakin kecil nilainya, semakin cepat pengetikannya. Coba ubah menjadi 100, 200, atau bahkan 10 untuk melihat perbedaannya.

    Anda juga dapat mengubah teks yang diketik dengan mengubah nilai variabel `text`.

    Contoh:

    setTimeout(typeWriter, 100); // Kecepatan pengetikan lebih lambat
    const text = "Selamat Datang di Website Keren!"; // Teks yang berbeda

    Langkah 4: Menambahkan Efek Kursor (Opsional)


    Langkah 4: Menambahkan Efek Kursor (Opsional)

    Untuk menambahkan sentuhan visual yang lebih menarik, Anda dapat menambahkan efek kursor yang berkedip-kedip di akhir teks. Kita dapat melakukannya dengan menambahkan elemen <span> terpisah untuk kursor dan memanipulasinya dengan CSS dan JavaScript.

    Tambahkan elemen kursor ke HTML:

    <p>Ini adalah contoh efek <span id="typewriter"></span><span id="cursor">|</span> menggunakan JavaScript.</p>

    Tambahkan CSS untuk styling kursor:

    Anda perlu menambahkan CSS ke file eksternal atau ke dalam tag <style></style> di dalam <head> tag HTML Anda.

    #cursor {
    display: inline-block;
    width: 3px;
    background-color: black;
    animation: blink 1s infinite;
    }

    @keyframes blink {
    0% { opacity: 1; }
    50% { opacity: 0; }
    100% { opacity: 1; }
    }

    Tambahkan JavaScript untuk menghentikan animasi kursor setelah teks selesai diketik:

    Modifikasi fungsi `typeWriter()` di `script.js`:

    const text = "Typewriter!"; // Teks yang akan diketik
    const typewriterElement = document.getElementById("typewriter"); // Mendapatkan elemen span dengan id "typewriter"
    const cursorElement = document.getElementById("cursor"); // Mendapatkan elemen span dengan id "cursor"
    let index = 0; // Index karakter saat ini

    function typeWriter() {
    if (index < text.length) {
    typewriterElement.innerHTML += text.charAt(index); // Menambahkan karakter ke elemen span
    index++; // Menaikkan index
    setTimeout(typeWriter, 50); // Memanggil fungsi typeWriter lagi setelah 50ms
    } else {
    // Hentikan animasi kursor setelah teks selesai diketik
    cursorElement.style.animation = "none";
    }
    }

    typeWriter(); // Memulai efek typewriter

    Penjelasan Tambahan:

    • Kita menambahkan baris `const cursorElement = document.getElementById("cursor");` untuk mendapatkan elemen kursor menggunakan ID-nya.
    • Di dalam blok `else` dari kondisi `if (index < text.length)`, kita menambahkan `cursorElement.style.animation = "none";` untuk menghentikan animasi kursor setelah semua teks selesai diketik.

    Langkah 5: Efek Typewriter dengan Banyak Kalimat


    Langkah 5: Efek Typewriter dengan Banyak Kalimat

    Bagaimana jika Anda ingin membuat efek typewriter untuk beberapa kalimat yang berbeda, dan ditampilkan satu per satu setelah kalimat sebelumnya selesai? Ini membutuhkan sedikit modifikasi pada kode kita.

    Ubah Teks Menjadi Array:

    Ubah variabel `text` menjadi sebuah array yang berisi kalimat-kalimat yang ingin Anda tampilkan:

    const texts = ["Kalimat pertama.", "Kalimat kedua yang lebih panjang.", "Kalimat ketiga, singkat saja."];

    Modifikasi Kode JavaScript:

    const texts = ["Kalimat pertama.", "Kalimat kedua yang lebih panjang.", "Kalimat ketiga, singkat saja."];
    const typewriterElement = document.getElementById("typewriter");
    const cursorElement = document.getElementById("cursor"); // Pastikan ini didefinisikan jika Anda menggunakan kursor
    let textIndex = 0;
    let charIndex = 0;

    function typeWriter() {
    if (textIndex < texts.length) {
    if (charIndex < texts[textIndex].length) {
    typewriterElement.innerHTML += texts[textIndex].charAt(charIndex);
    charIndex++;
    setTimeout(typeWriter, 50); // Kecepatan pengetikan
    } else {
    // Kalimat selesai, tunggu sebentar lalu ganti ke kalimat berikutnya
    setTimeout(() => {
    typewriterElement.innerHTML = ""; // Kosongkan teks
    charIndex = 0; // Reset index karakter
    textIndex++; // Pindah ke kalimat berikutnya
    typeWriter(); // Mulai efek typewriter untuk kalimat berikutnya
    }, 1500); // Jeda 1.5 detik
    cursorElement.style.animation = "none"; // Hentikan animasi kursor
    }
    } else {
    // Semua kalimat sudah selesai diketik. Opsional: reset ke kalimat pertama
    textIndex = 0; // Uncomment baris ini untuk mengulang dari awal
    typewriterElement.innerHTML = ""; // Kosongkan teks
    charIndex = 0;
    cursorElement.style.animation = "blink 1s infinite"; // Aktifkan kembali animasi kursor
    typeWriter();
    }
    }

    typeWriter();

    Penjelasan Perubahan:

    • `texts`: Sekarang adalah array yang berisi beberapa kalimat.
    • `textIndex`: Melacak index kalimat saat ini.
    • `charIndex`: Melacak index karakter dalam kalimat saat ini.
    • Loop luar `if (textIndex < texts.length)` memeriksa apakah masih ada kalimat yang perlu ditampilkan.
    • Loop dalam `if (charIndex < texts[textIndex].length)` melakukan efek typewriter untuk setiap karakter dalam kalimat.
    • Setelah sebuah kalimat selesai (blok `else`), kita menunggu 1.5 detik (`setTimeout`), mengosongkan teks (`typewriterElement.innerHTML = ""`), me-reset `charIndex`, dan berpindah ke kalimat berikutnya dengan menaikkan `textIndex`.
    • Jika semua kalimat sudah ditampilkan, script dihentikan. Anda dapat menambahkan logika untuk mengulang efek dari awal dengan me-reset `textIndex` ke 0.

    Tips Tambahan


    Tips Tambahan

    • Responsif: Pastikan efek "typewriter" Anda responsif dan berfungsi dengan baik di berbagai ukuran layar.
    • Performa: Hindari membuat efek "typewriter" yang terlalu kompleks, karena dapat memengaruhi performa website.
    • Aksesibilitas: Pertimbangkan aksesibilitas bagi pengguna dengan disabilitas. Pastikan teks tetap dapat dibaca oleh screen reader.

    Kesimpulan

    Dengan mengikuti langkah-langkah di atas, Anda dapat dengan mudah membuat efek "typewriter" yang menarik dan dinamis dengan JavaScript. Efek ini dapat memberikan sentuhan profesional dan modern pada website Anda, serta meningkatkan engagement pengunjung. Jangan ragu untuk bereksperimen dengan kode dan menyesuaikannya sesuai dengan kebutuhan dan preferensi Anda. Selamat mencoba!

    Author

    Ditulis oleh Muhlisun TMG

    Selamat datang di Soldiradem Blog. Saya Muhlisun (Muhlisun TMG), seorang teknisi di bidang audio, TV, dan parabola. Blog ini bukan sekadar portal berita, melainkan catatan harian dari meja servis yang saya bangun sejak tahun 2016.