CP-A: Standar Web - Semantik, Responsif, Aksesibilitas - WEB STATIS

CP-A: Standar Web - Semantik, Responsif, Aksesibilitas - WEB STATIS
Publish

CP-A: Standar Web - Semantik, Responsif, Aksesibilitas

Tujuan Pembelajaran

Setelah mempelajari materi ini, siswa mampu:

  1. Menjelaskan konsep semantik dalam struktur web

  2. Memahami prinsip desain responsif dan mobile-first

  3. Mengidentifikasi elemen-elemen aksesibilitas dasar pada website

  4. Menerapkan standar web dalam evaluasi situs existing


1. Standar Web: Semantik

Apa itu Semantik Web?

Semantik = Makna yang jelas dalam struktur HTML

Mengapa Semantik Penting?

  • Mesin pencari memahami konten lebih baik

  • Screen reader dapat navigasi dengan mudah

  • Developer lain mudah memahami kode

  • Maintenance lebih mudah

Elemen Semantik HTML5

Struktur Utama

<header>   <!-- Bagian kepala halaman/artikel -->
<nav>      <!-- Menu navigasi -->
<main>     <!-- Konten utama halaman -->
<article>  <!-- Konten mandiri (blog post, berita) -->
<section>  <!-- Bagian dalam artikel/halaman -->
<aside>    <!-- Konten sampingan (sidebar) -->
<footer>   <!-- Bagian kaki halaman/artikel -->

Contoh Struktur Semantik

<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <title>Blog Sekolah</title>
</head>
<body>
    <header>
        <h1>SMK Teknologi Informasi</h1>
        <nav>
            <ul>
                <li><a href="#beranda">Beranda</a></li>
                <li><a href="#berita">Berita</a></li>
                <li><a href="#kontak">Kontak</a></li>
            </ul>
        </nav>
    </header>
    
    <main>
        <article>
            <header>
                <h2>Juara Lomba Programming</h2>
                <time datetime="2024-09-28">28 September 2024</time>
            </header>
            <p>Tim programming sekolah berhasil meraih juara...</p>
        </article>
    </main>
    
    <aside>
        <h3>Berita Terkait</h3>
        <ul>
            <li><a href="#">Lomba Web Design</a></li>
            <li><a href="#">Workshop AI</a></li>
        </ul>
    </aside>
    
    <footer>
        <p>&copy; 2024 SMK Teknologi Informasi</p>
    </footer>
</body>
</html>

Hierarki Heading yang Benar

<h1>Judul Utama Halaman</h1>
  <h2>Judul Bagian</h2>
    <h3>Sub-bagian</h3>
    <h3>Sub-bagian Lain</h3>
  <h2>Bagian Selanjutnya</h2>
    <h3>Sub-bagian</h3>
      <h4>Detail Sub-bagian</h4>

❌ Salah:

<h1>Judul</h1>
<h3>Melompat ke h3</h3>  <!-- Tidak boleh melompat level -->

2. Standar Web: Responsif

Apa itu Desain Responsif?

Desain yang menyesuaikan tampilan berdasarkan ukuran layar perangkat

Prinsip Mobile-First

  1. Mulai dari layar terkecil (mobile)

  2. Tambahkan fitur untuk layar lebih besar

  3. Progressive enhancement - tidak degradation

Breakpoint Standar

/* Mobile First */
/* Base styles untuk mobile (320px+) */

/* Tablet */
@media (min-width: 768px) {
    /* Styles untuk tablet */
}

/* Desktop */
@media (min-width: 1024px) {
    /* Styles untuk desktop */
}

/* Large Desktop */
@media (min-width: 1200px) {
    /* Styles untuk desktop besar */
}

Viewport Meta Tag

<meta name="viewport" content="width=device-width, initial-scale=1.0">

Contoh Layout Responsif

/* Mobile (default) */
.container {
    width: 100%;
    padding: 1rem;
}

.sidebar {
    width: 100%;
    margin-bottom: 1rem;
}

.main-content {
    width: 100%;
}

/* Tablet & Desktop */
@media (min-width: 768px) {
    .container {
        display: flex;
        max-width: 1200px;
        margin: 0 auto;
    }
    
    .sidebar {
        width: 25%;
        margin-right: 2rem;
        margin-bottom: 0;
    }
    
    .main-content {
        width: 75%;
    }
}

Gambar Responsif

<!-- Gambar yang menyesuaikan ukuran container -->
<img src="image.jpg" alt="Deskripsi gambar" style="max-width: 100%; height: auto;">

<!-- Gambar dengan resolusi berbeda -->
<img src="image-small.jpg" 
     srcset="image-small.jpg 480w, 
             image-medium.jpg 768w, 
             image-large.jpg 1200w"
     sizes="(max-width: 480px) 100vw, 
            (max-width: 768px) 50vw, 
            25vw"
     alt="Deskripsi gambar">

3. Standar Web: Aksesibilitas (A11y)

Apa itu Aksesibilitas Web?

Aksesibilitas = Web dapat digunakan oleh semua orang, termasuk:

  • Pengguna dengan disabilitas visual

  • Pengguna dengan disabilitas motorik

  • Pengguna dengan disabilitas kognitif

  • Pengguna dengan koneksi lambat

Prinsip WCAG 2.1

  1. Perceivable (Dapat dipersepsi)

  2. Operable (Dapat dioperasikan)

  3. Understandable (Dapat dipahami)

  4. Robust (Kokoh/kompatibel)

1. Kontras Warna yang Memadai

Standar Kontras WCAG

  • Normal text: minimum 4.5:1

  • Large text (18pt+ atau 14pt+ bold): minimum 3:1

  • UI components: minimum 3:1

Tools untuk Cek Kontras

  • WebAIM Contrast Checker

  • Chrome DevTools

  • Colour Contrast Analyser

Contoh Kontras

/* ❌ Kontras buruk */
.bad-contrast {
    color: #999999;        /* Abu-abu muda */
    background: #ffffff;   /* Putih */
    /* Rasio: 2.85:1 - TIDAK MEMENUHI STANDAR */
}

/* ✅ Kontras baik */
.good-contrast {
    color: #333333;        /* Abu-abu tua */
    background: #ffffff;   /* Putih */
    /* Rasio: 12.63:1 - MEMENUHI STANDAR */
}

2. Alt Text untuk Gambar

Kapan Menggunakan Alt Text

<!-- Gambar informatif -->
<img src="chart.png" alt="Grafik menunjukkan peningkatan 25% penjualan bulan ini">

<!-- Gambar dekoratif -->
<img src="decoration.png" alt="" role="presentation">

<!-- Gambar dalam link -->
<a href="contact.html">
    <img src="phone-icon.png" alt="Hubungi kami">
</a>

<!-- Gambar kompleks -->
<img src="complex-chart.png" alt="Grafik penjualan Q1-Q4 2024">
<p>Deskripsi detail: Penjualan Q1 $50K, Q2 $75K, Q3 $100K, Q4 $125K menunjukkan tren naik konsisten.</p>

Tips Menulis Alt Text

  • Ringkas tapi deskriptif

  • Hindari "gambar dari..." atau "foto tentang..."

  • Sertakan informasi penting yang dikomunikasikan gambar

  • Kosongkan (alt="") untuk gambar dekoratif

3. Struktur Heading yang Benar

<!-- ✅ Hierarki yang benar -->
<h1>Berita Sekolah</h1>
    <h2>Prestasi Siswa</h2>
        <h3>Lomba Programming</h3>
        <h3>Lomba Desain Web</h3>
    <h2>Kegiatan Sekolah</h2>
        <h3>Workshop AI</h3>

<!-- ❌ Hierarki yang salah -->
<h1>Berita Sekolah</h1>
<h4>Prestasi Siswa</h4>  <!-- Melompat dari h1 ke h4 -->

4. Navigasi Keyboard dan Fokus

/* Fokus yang terlihat jelas */
a:focus,
button:focus,
input:focus {
    outline: 2px solid #0066cc;
    outline-offset: 2px;
}

/* Jangan hilangkan outline */
/* ❌ JANGAN LAKUKAN INI */
*:focus {
    outline: none;
}

Tab Order yang Logis

<!-- Gunakan tabindex hanya jika perlu -->
<nav>
    <a href="#main" tabindex="1">Skip to main content</a> <!-- Skip link -->
    <a href="home.html" tabindex="2">Home</a>
    <a href="about.html" tabindex="3">About</a>
    <a href="contact.html" tabindex="4">Contact</a>
</nav>

5. Form yang Accessible

<form>
    <!-- Label yang jelas -->
    <label for="nama">Nama Lengkap *</label>
    <input type="text" id="nama" name="nama" required 
           aria-describedby="nama-help">
    <div id="nama-help">Masukkan nama sesuai KTP</div>
    
    <!-- Fieldset untuk grup input -->
    <fieldset>
        <legend>Jenis Kelamin</legend>
        <input type="radio" id="laki" name="gender" value="L">
        <label for="laki">Laki-laki</label>
        
        <input type="radio" id="perempuan" name="gender" value="P">
        <label for="perempuan">Perempuan</label>
    </fieldset>
    
    <!-- Error message -->
    <div role="alert" aria-live="polite" id="error-message" style="display: none;">
        Harap isi semua field yang wajib diisi
    </div>
</form>

Aktivitas Praktik

1. Analisis Semantik Website

Instruksi:

  1. Kunjungi 3 website berbeda (berita, e-commerce, sekolah)

  2. Periksa struktur HTML menggunakan Developer Tools

  3. Identifikasi:

    • Apakah menggunakan elemen semantik?

    • Apakah hierarki heading benar?

    • Apakah ada landmark yang jelas?

2. Test Responsif

Instruksi:

  1. Buka website di browser

  2. Gunakan Developer Tools → Device Mode

  3. Test di berbagai ukuran:

    • Mobile (375px)

    • Tablet (768px)

    • Desktop (1200px)

  4. Catat masalah yang ditemukan

3. Audit Aksesibilitas Dasar

Instruksi:

  1. Gunakan keyboard saja (tanpa mouse) untuk navigasi

  2. Cek kontras warna dengan WebAIM Contrast Checker

  3. Periksa alt text pada gambar

  4. Test dengan screen reader (NVDA/JAWS jika ada)


Checklist Evaluasi Standar Web

✅ Semantik

  • Menggunakan elemen HTML5 semantik

  • Hierarki heading logis (h1→h2→h3)

  • Landmark jelas (header, nav, main, footer)

  • Konten terstruktur dengan baik

✅ Responsif

  • Meta viewport tag ada

  • Layout menyesuaikan di mobile, tablet, desktop

  • Gambar responsif

  • Text readable di semua ukuran layar

  • Tidak ada horizontal scroll di mobile

✅ Aksesibilitas

  • Kontras warna minimum 4.5:1

  • Semua gambar punya alt text yang sesuai

  • Navigasi bisa menggunakan keyboard

  • Fokus terlihat jelas

  • Form punya label yang jelas


Sumber Belajar Tambahan

Tools & Resources

  • HTML Validator: validator.w3.org

  • Contrast Checker: webaim.org/resources/contrastchecker

  • Accessibility Checker: wave.webaim.org

  • Mobile Test: search.google.com/test/mobile-friendly

  • Screen Reader: NVDA (gratis), JAWS (berbayar)

Dokumentasi

  • MDN Web Docs: developer.mozilla.org

  • WCAG Guidelines: w3.org/WAI/WCAG21/quickref

  • HTML5 Semantic Elements: w3schools.com/html/html5_semantic_elements.asp


Assessment Rubrik

Kriteria

4 (Excellent)

3 (Good)

2 (Fair)

1 (Needs Improvement)

Pemahaman Semantik

Menjelaskan dengan jelas dan memberikan contoh konkret

Menjelaskan dengan baik

Pemahaman dasar

Pemahaman terbatas

Analisis Responsif

Mengidentifikasi semua masalah dan memberikan solusi

Mengidentifikasi masalah utama

Mengidentifikasi beberapa masalah

Mengidentifikasi masalah minimal

Evaluasi Aksesibilitas

Audit menyeluruh dengan rekomendasi spesifik

Audit baik dengan beberapa rekomendasi

Audit dasar

Audit terbatas

Penerapan Standar

Menggunakan tools dan metodologi yang tepat

Menggunakan beberapa tools dengan baik

Penggunaan tools dasar

Penggunaan tools minimal