Kurikulum Terbuka & Berjenjang

Panduan Lengkap Pemrograman Web Modern

Materi terstruktur dari tingkat dasar hingga mahir yang disusun khusus untuk siswa SMKN 1 Kupang Barat dan siapa saja yang ingin menguasai teknologi web. Setiap topik dilengkapi studi kasus yang bisa langsung Anda uji di Live Playground.

1
Tingkat 1 • Fondasi Utama

HTML5: Kerangka & Struktur Web

HyperText Markup Language menyusun seluruh teks, gambar, formulir, dan struktur dokumen.

Uji Latihan HTML di Playground

1.1 Struktur Dokumen Standar HTML5

Setiap file website diawali dengan deklarasi tipe dokumen dan struktur pembungkus utama:

<!DOCTYPE html>
<html lang="id">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Judul Halaman Web Saya</title>
  </head>
  <body>
    <h1>Selamat Datang di Dunia Pemrograman!</h1>
    <p>Ini adalah paragraf konten utama website.</p>
  </body>
</html>

Hirarki Judul & Teks

Gunakan heading untuk struktur dokumen yang ramah mesin pencari (SEO):

  • <h1>: Judul utama halaman (wajib hanya 1 per halaman).
  • <h2> - <h6>: Subjudul berjenjang.
  • <p>: Paragraf teks biasa.
  • <strong>: Menebalkan teks penting.
  • <em>: Memiringkan teks penekanan.

Tautan & Gambar

Menghubungkan halaman dan menampilkan media visual:

<!-- Tautan Eksternal -->
<a href="https://vxai.online" target="_blank">Buka VxAI</a>

<!-- Menyisipkan Gambar -->
<img src="logo.png" alt="Deskripsi Gambar" width="200">

1.2 Formulir Input & Pengumpulan Data

Coba Form Ini di Playground ➔

Formulir memungkinkan pengguna mengirimkan input teks, kata sandi, pilihan dropdown, dan tombol submit:

<form action="/simpan" method="POST">
  <label for="nama">Nama Lengkap:</label>
  <input type="text" id="nama" name="nama" placeholder="Ketik nama Anda" required>

  <label for="email">Email Pengguna:</label>
  <input type="email" id="email" name="email" required>

  <label for="jurusan">Jurusan:</label>
  <select id="jurusan" name="jurusan">
    <option value="RPL">Rekayasa Perangkat Lunak</option>
    <option value="TKJ">Teknik Komputer & Jaringan</option>
  </select>

  <button type="submit">Kirim Formulir</button>
</form>

1.3 Elemen Semantik HTML5 (Standar Industri)

Gunakan tag semantik dibanding tag `<div>` polos untuk meningkatkan aksesibilitas dan kemudahan dibaca mesin:

<header> Kepala dokumen, logo, dan navigasi situs.
<nav> Kumpulan tautan menu navigasi website.
<main> Konten pokok dan unik dari satu halaman.
<footer> Kaki halaman berisi hak cipta & kontak.
2
Tingkat 2 • Desain & Estetika

CSS3: Tata Letak, Flexbox & Grid Modern

Cascading Style Sheets mengatur warna, tipografi, jarak (spacing), dan animasi layar.

Uji Flexbox di Playground

2.1 Memahami CSS Box Model

Setiap elemen di web adalah kotak empat persegi panjang yang terdiri dari 4 lapisan:

MARGIN (Ruang Luar)
BORDER (Garis Tepi)
PADDING (Ruang Dalam)
CONTENT (Teks / Gambar)
.kotak {
  box-sizing: border-box; /* Sangat disarankan agar padding tidak merusak lebar */
  width: 300px;
  padding: 1.5rem;       /* Jarak ke dalam */
  border: 1px solid #38bdf8;
  margin: 1rem auto;     /* Jarak ke luar (tengah) */
  border-radius: 1rem;   /* Sudut bulat */
}

2.2 Master Tata Letak Flexbox

Muat Latihan Flexbox ➔

Flexbox adalah standar industri untuk menyusun elemen 1 dimensi (baris atau kolom) secara rapi:

/* Kontainer Induk (Parent) */
.baris-sejajar {
  display: flex;
  flex-direction: row;            /* default: 'row' (mendatar) atau 'column' (menurun) */
  justify-content: space-between; /* Perataan horizontal: flex-start, center, space-between */
  align-items: center;            /* Perataan vertikal: center, flex-start, stretch */
  gap: 1.5rem;                    /* Jarak otomatis antar elemen anak */
  flex-wrap: wrap;                /* Turun ke bawah jika layar sempit di HP */
}

/* Elemen Anak (Child) */
.item-anak {
  flex: 1;                        /* Membagi lebar secara merata */
  min-width: 250px;
}

2.3 CSS Grid untuk Galeri & Portofolio

Muat Latihan CSS Grid ➔

CSS Grid sempurna untuk tata letak 2 dimensi (baris dan kolom sekaligus). Sangat cocok untuk galeri kartu:

.galeri-grid {
  display: grid;
  /* Otomatis menambah atau mengurangi kolom sesuai ukuran layar */
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 1.5rem;
}

2.4 Desain Responsif dengan Media Queries

Memastikan website tampil sempurna di smartphone (HP), tablet, maupun monitor desktop:

/* Gaya default untuk Desktop / Layar Lebar */
.navigasi { display: flex; gap: 2rem; }

/* Jika dibuka di layar HP (lebar maksimal 768px) */
@media (max-width: 768px) {
  .navigasi {
    flex-direction: column; /* Ubah menu mendatar menjadi menurun */
    gap: 0.75rem;
  }
}
3
Tingkat 3 • Logika & Interaktivitas

JavaScript: DOM & Aksi Pengguna

Bahasa skrip yang menghidupkan website: merespon klik tombol, validasi, dan alur aplikasi.

Uji JavaScript di Playground

3.1 Variabel Modern (`const` & `let`) dan Fungsi

Gunakan `const` untuk nilai yang tidak berubah dan `let` untuk nilai yang akan bertambah atau berganti:

// Deklarasi Variabel
const namaSekolah = "SMKN 1 Kupang Barat";
let jumlahSiswa = 350;

// Arrow Function Modern
const beriSalam = (nama) => {
  return `Halo ${nama}, selamat datang di ${namaSekolah}!`;
};

console.log(beriSalam("Budi"));

3.2 Menangkap Elemen & Mendengarkan Event Klik

Coba Counter di Playground ➔

DOM (Document Object Model) adalah jembatan antara JavaScript dan elemen HTML:

// 1. Tangkap elemen HTML berdasarkan ID
const tombol = document.getElementById("tombol-klik");
const labelAngka = document.getElementById("nilai-angka");

let counter = 0;

// 2. Pasang pendengar aksi klik (Event Listener)
tombol.addEventListener("click", function() {
  counter++;
  labelAngka.innerText = counter; // Perbarui teks di layar secara langsung!
  
  if (counter >= 10) {
    labelAngka.classList.add("text-sukses"); // Tambah class CSS
  }
});

3.3 Menambah Elemen HTML Baru Secara Dinamis

Buka Latihan To-Do List ➔

Membuat elemen baru `createElement` dan menyisipkannya ke dalam daftar `appendChild`:

function tambahTugasBaru(isiTugas) {
  const list = document.getElementById("daftar-tugas");
  
  // Buat tag <li> baru
  const itemBaru = document.createElement("li");
  itemBaru.innerText = isiTugas;
  
  // Klik untuk menandai selesai
  itemBaru.addEventListener("click", () => {
    itemBaru.classList.toggle("selesai");
  });

  // Masukkan ke dalam daftar
  list.appendChild(itemBaru);
}
4
Tingkat 4 • Portofolio & Proyek Nyata

Katalog Latihan & Tantangan Terpadu

Pilih proyek di bawah ini untuk langsung dikerjakan di Live Playground satu-klik:

🟢 Tingkat 1: Pemula

Struktur Web & Formulir Pendaftaran

Latihan menyusun profil diri, heading, paragraf, serta form registrasi siswa dengan validasi HTML5.

⚡ Kerjakan Proyek Ini ➔
🔵 Tingkat 2: Menengah

Tata Letak Flexbox & Grid Portofolio

Membuat navbar responsif, hero section, dan kartu galeri karya otomatis yang rapi di layar HP dan laptop.

⚡ Kerjakan Proyek Ini ➔
🟣 Tingkat 3: Mahir

Aplikasi To-Do List Interaktif

Aplikasi manajemen tugas: menambah catatan baru, menandai selesai dengan coret teks, dan menghapus tugas.

⚡ Kerjakan Proyek Ini ➔
🟣 Tingkat 3: Mahir

Simulator Obrolan AI Tutor Interaktif

Membangun antarmuka obrolan cerdas yang membalas pertanyaan koding pengguna secara otomatis.

⚡ Kerjakan Proyek Ini ➔

Siap Menguji Kemampuan Koding Anda?

Pilih latihan di Live Playground, ketik kode Anda, lihat hasilnya secara real-time, dan simpan agar dapat dievaluasi langsung oleh guru pengajar!

⚡ Mulai Latihan di Playground Sekarang