Membuat Animasi Smooth Scroll ke Bagian Tertentu dengan jQuery

By | 15 November 2025

Membuat animasi smooth scroll ke bagian tertentu dengan jQuery adalah teknik sederhana namun sangat efektif untuk meningkatkan pengalaman pengguna dalam sebuah website. Dengan smooth scroll, perpindahan dari satu bagian halaman ke bagian lainnya terasa lebih halus, tidak abrupt, dan jauh lebih profesional. Efek ini banyak digunakan pada website modern yang memiliki navigasi anchor seperti landing page, portfolio, company profile, hingga halaman dokumentasi. Navigasi dalam sebuah halaman web sangat memengaruhi kenyamanan pengunjung. Ketika pengguna mengklik sebuah menu yang mengarah ke bagian tertentu di halaman, efek scroll yang langsung melompat (jump-to) sering kali membuat pengalaman browsing terasa tidak mulus. Di sinilah smooth scroll menjadi solusi yang tepat.

Dengan bantuan jQuery, kita bisa membuat animasi scroll halus hanya dalam beberapa baris kode. Teknik ini membantu meningkatkan UX, membuat website terlihat lebih modern, dan memberi kesan profesional pada navigasi antarbagiannya. Artikel ini akan membahas cara kerja smooth scroll, contoh penerapannya, dan tips optimasi agar berfungsi di semua browser.

Apa Itu Smooth Scroll?

Smooth scroll adalah animasi perpindahan halaman secara halus ke titik tertentu ketika pengguna:

  • Mengklik link dengan anchor (#)

  • Menekan tombol scroll-to-top

  • Menavigasi menu satu halaman (one-page navigation)

  • Melihat bagian tertentu dari konten panjang (FAQ, dokumentasi, dsb.)

Alih-alih langsung berpindah ke posisi target, halaman bergerak secara perlahan, menciptakan efek transisi halus. Efek seperti ini penting untuk menjaga alur navigasi tetap nyaman dan tidak membingungkan pengguna.

Kenapa Menggunakan jQuery untuk Smooth Scroll?

Meskipun JavaScript modern dapat membuat smooth scroll dengan scrollIntoView() atau scroll-behavior: smooth, banyak developer masih menggunakan jQuery karena:

  1. Kompatibilitas luas dengan browser lama

  2. Sintaks sederhana dan cepat ditulis

  3. Sangat fleksibel untuk modifikasi animasi

  4. Bisa digabung dengan animasi UI lain

Terutama untuk website legacy atau UI yang membutuhkan efek animasi custom, jQuery tetap menjadi pilihan yang aman dan efisien.

Struktur HTML Dasar untuk Smooth Scroll

Misalkan kita memiliki navigasi dalam halaman:

<nav>
    <a href="#section1">Bagian 1</a>
    <a href="#section2">Bagian 2</a>
    <a href="#section3">Bagian 3</a>
</nav>

<div id="section1">Konten Bagian 1</div>
<div id="section2">Konten Bagian 2</div>
<div id="section3">Konten Bagian 3</div>

Setiap menu mengarah ke elemen dengan ID tertentu.

Script jQuery untuk Membuat Smooth Scroll

Inilah versi dasar smooth scroll:

$("a[href^='#']").click(function(e) {
    e.preventDefault();

    let target = $(this).attr("href");
    let offset = $(target).offset().top;

    $("html, body").animate({
        scrollTop: offset
    }, 600); // 600ms = 0.6 detik
});

Penjelasan:

  • href^="#" → memilih semua link anchor

  • preventDefault() → mencegah halaman lompat otomatis

  • offset().top → menentukan posisi elemen target

  • animate() → membuat animasi scroll halus

  • 600 → durasi animasi (bisa disesuaikan)

Menambahkan Offset untuk Navigasi Fixed

Jika website Anda memakai header fixed seperti Bootstrap:

let headerHeight = $("nav").outerHeight();

$("a[href^='#']").click(function(e) {
    e.preventDefault();

    let target = $(this).attr("href");
    let offset = $(target).offset().top - headerHeight;

    $("html, body").animate({
        scrollTop: offset
    }, 700);
});

Ini mencegah elemen tertutup menu fixed di atas.

Menambahkan Efek Easing untuk Animasi Lebih Halus

Dengan plugin jQuery Easing, Anda bisa menambah efek seperti easeInOutExpo.

$("html, body").animate({
    scrollTop: offset
}, 900, "easeInOutExpo");

Efek easing membuat animasi tampak lebih natural dan elegan.

Menambahkan Tombol “Scroll to Top”

HTML:

<button id="toTop">⬆</button>

jQuery:

$("#toTop").click(function() {
    $("html, body").animate({ scrollTop: 0 }, 700);
});

Fitur ini umum ditemukan pada website modern untuk memudahkan navigasi ke bagian atas.

Menampilkan Tombol Scroll-to-Top Secara Dinamis

Buat tombol hanya muncul ketika user scroll lebih jauh dari 200px:

$(window).scroll(function() {
    if ($(this).scrollTop() > 200) {
        $("#toTop").fadeIn();
    } else {
        $("#toTop").fadeOut();
    }
});

Meningkatkan UX tanpa membuat halaman terlihat penuh.

Animasi Highlight Setelah Smooth Scroll

Tambahkan highlight pada target setelah pengguna sampai:

$("html, body").animate({
    scrollTop: offset
}, 700, function() {
    $(target)
        .addClass("highlight")
        .delay(1000)
        .queue(function() {
            $(this).removeClass("highlight").dequeue();
        });
});

CSS:

.highlight {
    background: yellow;
    transition: background 1s;
}

Animasi ini membantu pengguna mengenali lokasi mereka.

Mengaktifkan Smooth Scroll Hanya untuk Elemen Tertentu

Jika Anda ingin scroll halus hanya pada menu tertentu:

$(".smooth-link").click(function(e) {
    e.preventDefault();
    let target = $(this).attr("href");
    $("html, body").animate({
        scrollTop: $(target).offset().top
    }, 600);
});

Ini bagus untuk struktur besar seperti landing page.

Alternatif CSS Modern

Jika Anda tidak perlu kompatibilitas browser lama:

html {
    scroll-behavior: smooth;
}

Namun CSS ini:

  • Tidak mendukung offset

  • Tidak mendukung easing custom

  • Tidak bisa dipicu oleh event jQuery

Karena itu banyak developer tetap memakai jQuery.

Tips Optimasi Smooth Scroll

1. Gunakan durasi sesuai konteks

Terlalu lama → terasa lambat
Terlalu cepat → tidak terasa smooth

Idealnya 500–800ms.

2. Atur offset untuk header fixed

Jika tidak, target akan tertutup menu.

3. Kurangi pemanggilan jQuery berulang

Seleksi elemen yang sama sebaiknya disimpan dalam variabel.

4. Gunakan throttle pada scroll event

Jika script terlalu berat, gunakan lodash .throttle.

5. Cek keberadaan target

Hindari error jika anchor tidak ditemukan:

if ($(target).length) {
    // jalankan animasi
}

Studi Kasus: Landing Page Modern

Website one-page biasanya memiliki struktur:

  • Home

  • About

  • Services

  • Portfolio

  • Contact

Navigasinya menggunakan anchor seperti:

<a href="#services" class="smooth">Services</a>

Smooth scroll membuat pengalaman navigasi seperti aplikasi mobile: halus, cepat, dan terarah.

Kesimpulan

Membuat animasi smooth scroll ke bagian tertentu dengan jQuery adalah cara efektif untuk meningkatkan pengalaman pengguna dan memberikan navigasi yang lebih modern serta profesional. Dengan hanya beberapa baris kode, Anda dapat membuat halaman jauh lebih interaktif dan mudah digunakan. Baik untuk landing page, website perusahaan, portofolio, maupun blog panjang, smooth scroll memberikan peningkatan UX yang signifikan.

Dengan fleksibilitas jQuery, Anda dapat menambahkan offset, easing, highlight, hingga tombol scroll-to-top dengan mudah. Bahkan jika CSS modern menawarkan smooth scroll bawaan, jQuery tetap unggul untuk kebutuhan yang lebih kompleks dan kompatibilitas yang luas.