💥 InteractiveElements

Panduan lengkap elemen interaktif HTML untuk pengembangan web modern

📝 Basic Interactive Elements

💡 Dasar-dasar Interaktivitas

HTML menyediakan berbagai elemen untuk membuat antarmuka yang interaktif dan responsif.

interactive.html
<!-- Tombol dengan berbagai tipe -->
<button type="button">Klik Saya</button>
<button type="submit">Submit Form</button>
<button type="reset">Reset Form</button>

<!-- Dropdown menu -->
<select name="pilihan">
  <option value="1">Pilihan 1</option>
  <option value="2" selected>Pilihan 2</option>
</select>

<!-- Checkbox dan Radio -->
<input type="checkbox" id="setuju" name="setuju">
<label for="setuju">Saya setuju</label>

<input type="radio" id="pria" name="gender" value="pria">
<label for="pria">Pria</label>

🔍 Penjelasan Detail:

<button> - Elemen interaktif utama dengan berbagai tipe (button, submit, reset)
<select> - Membuat dropdown menu dengan opsi pilihan
<option> - Item dalam dropdown (selected untuk pilihan default)
type="checkbox" - Kotak centang untuk pilihan multiple
type="radio" - Tombol radio untuk pilihan tunggal dalam grup
<label> - Penting untuk aksesibilitas dan usability
for pada label harus sesuai dengan id input

⚡ Pro Tips

Gunakan atribut disabled pada elemen interaktif ketika tidak aktif, dan aria-* untuk meningkatkan aksesibilitas!

🔗 Advanced Interactive Elements

💡 Elemen Interaktif Lanjutan

HTML5 memperkenalkan berbagai elemen interaktif baru yang lebih canggih.

advanced-interactive.html
<!-- Range slider -->
<input type="range" min="0" max="100" value="50" class="slider">

<!-- Color picker -->
<input type="color" value="#00bcd4">

<!-- Date picker -->
<input type="date" min="2023-01-01" max="2023-12-31">

<!-- Details disclosure -->
<details>
  <summary>Klik untuk detail</summary>
  <p>Konten tambahan yang bisa dibuka/tutup</p>
</details>

<!-- Dialog modal -->
<dialog open>
  <p>Ini adalah dialog modal!</p>
  <button type="button" onclick="this.parentElement.close()">Tutup</button>
</dialog>

🔍 Penjelasan Detail:

type="range" - Slider untuk memilih nilai dalam range
type="color" - Picker warna native
type="date" - Kalender untuk memilih tanggal (bisa dengan min/max)
<details> dan <summary> - Membuat konten yang bisa dibuka/tutup
<dialog> - Kotak dialog/modal (gunakan JavaScript untuk toggle)
open - Atribut untuk menampilkan dialog secara default
• Banyak elemen ini memiliki pseudo-class CSS seperti :checked dan :focus

⚡ Pro Tips

Untuk dialog yang lebih kompleks, gunakan atribut aria-modal="true" dan kelola fokus keyboard untuk aksesibilitas yang lebih baik!

🎨 Interactive Elements Styling

💡 CSS untuk Elemen Interaktif

Gunakan CSS untuk membuat elemen interaktif lebih menarik dan konsisten di berbagai browser.

style.css
/* Style dasar untuk tombol */
button {
  background: #00bcd4;
  color: white;
  padding: 0.75rem 1.5rem;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.3s ease;
}

button:hover {
  background: #00e5ff;
  transform: translateY(-2px);
}

/* Style untuk input */
input, select {
  padding: 0.5rem;
  border: 1px solid #444;
  border-radius: 4px;
  background: #2d2d2d;
  color: #e0e0e0;
}

/* Style khusus untuk range slider */
input[type="range"] {
  -webkit-appearance: none;
  height: 5px;
  background: #444;
  border-radius: 5px;
}

/* Style untuk dialog */
dialog {
  border: none;
  border-radius: 8px;
  background: #2d2d2d;
  color: white;
  box-shadow: 0 0 20px rgba(0,0,0,0.5);
}

🔍 Penjelasan Detail:

cursor: pointer - Mengubah kursor saat hover untuk menunjukkan interaktivitas
transition - Animasi halus saat perubahan state
:hover dan :focus - State penting untuk feedback visual
-webkit-appearance: none - Reset style default browser
• Pseudo-elemen seperti ::-webkit-slider-thumb untuk styling lebih dalam
box-shadow - Memberikan depth pada elemen interaktif
• Warna kontras untuk state aktif/fokus meningkatkan aksesibilitas
• Media query untuk penyesuaian di berbagai ukuran layar

⚡ Pro Tips

Gunakan :focus-visible untuk styling fokus yang hanya muncul saat navigasi keyboard, bukan klik mouse!