Panduan lengkap kontrol scroll behavior untuk pengalaman pengguna yang lebih halus
CSS Scroll Behavior memungkinkan Anda mengontrol bagaimana scrolling terjadi saat navigasi atau pengguna berinteraksi dengan halaman.
/* Smooth scrolling for the whole page */
html {
scroll-behavior: smooth;
}
/* Custom scrollbar */
::-webkit-scrollbar {
width: 12px;
}
::-webkit-scrollbar-thumb {
background: #9333ea;
border-radius: 6px;
}
đ Penjelasan Detail:
âĸ scroll-behavior
- Mengontrol perilaku scrolling (auto/smooth)
âĸ scroll-margin
- Menetapkan margin untuk scroll snapping
âĸ scroll-padding
- Menetapkan padding untuk scroll snapping
âĸ scroll-snap-type
- Menentukan bagaimana scroll snapping berperilaku
/* Container with scroll snap */
.scroll-container {
scroll-snap-type: y mandatory;
overflow-y: scroll;
height: 100vh;
}
/* Children elements */
.scroll-section {
scroll-snap-align: start;
height: 100vh;
}
/* Custom scroll snap stop */
.important-section {
scroll-snap-stop: always;
}
scroll-behavior: Chrome 61+, Firefox 36+, Safari 15.4+, Edge 79+. Scroll Snap: Chrome 69+, Firefox 68+, Safari 11+, Edge 79+.
/* Scroll Behavior Values */
html {
scroll-behavior: auto; /* Default */
}
html.smooth {
scroll-behavior: smooth; /* Smooth scrolling */
}
/* Scroll Snap Types */
.x-scroll {
scroll-snap-type: x mandatory; /* Horizontal */
}
.y-scroll {
scroll-snap-type: y proximity; /* Vertical */
}
đ Penjelasan Detail:
âĸ auto
- Scrolling normal tanpa animasi
âĸ smooth
- Scrolling dengan animasi halus
âĸ mandatory
- Selalu snap ke titik terdekat saat scrolling berhenti
âĸ proximity
- Snap hanya jika dekat dengan titik snap
âĸ start/center/end
- Posisi alignment untuk scroll-snap-align
/* Custom scrollbar for Firefox */
html {
scrollbar-width: thin;
scrollbar-color: #9333ea transparent;
}
/* Scroll snap with margins */
.section {
scroll-snap-align: start;
scroll-margin-top: 80px; /* For fixed header */
}
/* Horizontal scroll snap */
.carousel {
scroll-snap-type: x mandatory;
scroll-padding: 0 20px;
}
Custom scrollbars: Chrome 1+, Firefox 64+, Safari 14+ (with prefixes). Scroll margin/padding: Chrome 69+, Firefox 68+, Safari 11+, Edge 79+.
Gunakan scroll behavior untuk meningkatkan UX, tetapi selalu pertimbangkan kompatibilitas browser dan kebutuhan aksesibilitas.
/* â
Good - Smooth scroll with fallback */
html {
scroll-behavior: smooth;
}
@supports not (scroll-behavior: smooth) {
html {
scroll-behavior: auto;
}
}
/* â Avoid - Overusing scroll snap */
body > * {
scroll-snap-align: start;
height: 100vh;
}
đ Penjelasan Detail:
âĸ Gunakan progressive enhancement - Selalu sediakan fallback
âĸ Hindari scroll snap berlebihan - Tidak semua konten cocok untuk scroll snap
âĸ Perhatikan aksesibilitas - Pastikan pengguna bisa mengontrol scrolling
âĸ Optimalkan performa - Smooth scrolling bisa mempengaruhi performa pada perangkat low-end