Di era web modern, tampilan yang indah saja tidak cukup. Pengguna mengharapkan pengalaman interaktif dan dinamis, misalnya animasi ketika scroll, tombol yang responsif, menu yang berubah warna saat klik, dan elemen-elemen visual lainnya.
Inilah sebabnya mengintegrasikan CSS dengan JavaScript menjadi keterampilan penting bagi web developer. Dengan kombinasi ini, Anda dapat membuat website lebih hidup, interaktif, dan mudah disesuaikan.
Artikel ini membahas secara lengkap:
- Konsep manipulasi style dengan JavaScript
- Interaksi berbasis event
- Manipulasi class
- Dynamic styling
- Animasi dan efek interaktif
- Contoh implementasi HTML + CSS + JavaScript nyata
Daftar isi
- Mengapa CSS dan JavaScript Harus Terintegrasi
- Konsep Dasar Manipulasi CSS dengan JavaScript
- Mengubah Style Menggunakan JavaScript
- Manipulasi Class untuk Efek Interaktif
- Event Listener untuk Interaksi Dinamis
- Menggabungkan CSS Transition dengan JavaScript
- Menggunakan CSS Variables (Custom Properties) dengan JavaScript
- Studi Kasus: Website Interaktif
- Kesimpulan
Baca juga: Tutorial Membuat Landing Page Responsive Hanya dengan CSS
Mengapa CSS dan JavaScript Harus Terintegrasi
Integrasi ini sangat penting karena:
- Meningkatkan interaktivitas: JavaScript mendeteksi aksi pengguna, sementara CSS memberikan efek visual.
- Memudahkan dynamic styling: Anda bisa mengubah warna, ukuran, posisi, atau menampilkan/menghilangkan elemen tanpa reload halaman.
- Mendukung UX modern: Menu interaktif, modal, animasi, efek parallax, loader animasi, semuanya membutuhkan kombinasi CSS dan JavaScript.
Konsep Dasar Manipulasi CSS dengan JavaScript
1. DOM (Document Object Model)
Semua elemen HTML dapat diakses menggunakan DOM:
const box = document.getElementById("box");Code language: JavaScript (javascript)
2. Properti style
Manipulasi style langsung:
box.style.backgroundColor = "red";
box.style.width = "200px";Code language: JavaScript (javascript)
3. Manipulasi Class
box.classList.add("active");
box.classList.remove("hidden");Code language: CSS (css)
Mengubah Style Menggunakan JavaScript
1. Contoh HTML
<div id="box" class="box">Box</div>
<button id="btn-change">Ubah Warna</button>Code language: HTML, XML (xml)
2. CSS
.box {
width: 100px;
height: 100px;
background-color: purple;
color: white;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.3s ease;
margin: 20px;
border-radius: 10px;
}Code language: CSS (css)
3. JavaScript
const box = document.getElementById("box");
const btn = document.getElementById("btn-change");
btn.addEventListener("click", () => {
box.style.backgroundColor = box.style.backgroundColor === "purple" ? "orange" : "purple";
});Code language: JavaScript (javascript)
Penjelasan: Saat tombol diklik, warna box berubah secara dinamis.
Manipulasi Class untuk Efek Interaktif
1. HTML
<div class="toggle-box">Hover Saya</div>Code language: HTML, XML (xml)
2. CSS
.toggle-box {
width: 150px;
height: 150px;
background-color: teal;
color: white;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.3s ease;
border-radius: 10px;
}
.toggle-box.hover {
background-color: tomato;
transform: scale(1.2);
}Code language: CSS (css)
3. JavaScript
const toggleBox = document.querySelector(".toggle-box");
toggleBox.addEventListener("mouseenter", () => {
toggleBox.classList.add("hover");
});
toggleBox.addEventListener("mouseleave", () => {
toggleBox.classList.remove("hover");
});Code language: PHP (php)
Event Listener untuk Interaksi Dinamis
JavaScript memungkinkan berbagai event, seperti click, hover, scroll, dan input user.
Contoh Scroll Navbar:
<nav class="navbar">Navbar</nav>Code language: HTML, XML (xml)
.navbar {
position: fixed;
width: 100%;
padding: 20px;
background: transparent;
transition: background 0.3s;
color: white;
}
.navbar.scrolled {
background: rgba(0,0,0,0.8);
}Code language: CSS (css)
const navbar = document.querySelector(".navbar");
window.addEventListener("scroll", () => {
if(window.scrollY > 50){
navbar.classList.add("scrolled");
} else {
navbar.classList.remove("scrolled");
}
});Code language: JavaScript (javascript)
Penjelasan: Pada saat scroll melebihi 50px, navbar akan menambahkan class ‘scrolled’ yang akan mengubah warna latar belakang menjadi hitam dengan transparansi 0.8.
Menggabungkan CSS Transition dengan JavaScript
Transition CSS membuat perubahan lebih halus.
<div class="box" id="transition-box">Klik Saya</div>
<button id="btn-grow">Grow</button>Code language: HTML, XML (xml)
#transition-box {
width: 100px;
height: 100px;
background-color: purple;
transition: all 0.5s ease;
border-radius: 10px;
}
#transition-box.grow {
width: 200px;
height: 200px;
}Code language: CSS (css)
const transitionBox = document.getElementById("transition-box");
const btnGrow = document.getElementById("btn-grow");
btnGrow.addEventListener("click", () => {
transitionBox.classList.toggle("grow");
});Code language: JavaScript (javascript)
Penjelasan: Pada saat tombol diklik, class ‘grow’ akan ditambahkan ke elemen box yang akan membuat box menjadi lebih besar dengan transisi yang halus.
Menggunakan CSS Variables (Custom Properties) dengan JavaScript
CSS variables memungkinkan styling dinamis:
:root {
--main-color: teal;
}
.variable-box {
width: 150px;
height: 150px;
background-color: var(--main-color);
transition: background 0.3s;
}Code language: CSS (css)
<div class="variable-box">Box Variable</div>
<button id="btn-var">Ganti Warna</button>Code language: HTML, XML (xml)
const btnVar = document.getElementById("btn-var");
btnVar.addEventListener("click", () => {
document.documentElement.style.setProperty("--main-color", "#e74c3c");
});Code language: JavaScript (javascript)
Penjelasan: Pada saat tombol diklik, warna box akan berubah menjadi merah dengan transisi yang halus.
Studi Kasus: Website Interaktif
Buatlah kombinasi semua teknik:
- Navbar sticky saat scroll
- Box hover yang membesar
- Tombol yang mengubah warna
- Animasi fade-in saat scroll
HTML/CSS/JS dapat digabung untuk membuat demo interaktif sebagai bahan praktikum belajar CSS dan JavaScript.
Kesimpulan
Mengintegrasikan CSS dengan JavaScript memungkinkan Anda membuat website dinamis, interaktif, dan responsif. Dengan teknik yang tepat, website menjadi lebih menarik dan meningkatkan pengalaman pengguna.
