# Proyek Terrarium Bagian 1: Pengantar HTML

> Sketchnote oleh [Tomomi Imura](https://twitter.com/girlie_mac)
HTML, atau HyperText Markup Language, adalah dasar dari setiap situs web yang pernah Anda kunjungi. Anggaplah HTML sebagai kerangka yang memberikan struktur pada halaman web – HTML menentukan di mana konten berada, bagaimana konten diatur, dan apa yang diwakili oleh setiap bagian. Sementara CSS nantinya akan "mendandani" HTML Anda dengan warna dan tata letak, dan JavaScript akan menghidupkannya dengan interaktivitas, HTML menyediakan struktur penting yang membuat semuanya menjadi mungkin.
Dalam pelajaran ini, Anda akan membuat struktur HTML untuk antarmuka terrarium virtual. Proyek praktis ini akan mengajarkan Anda konsep dasar HTML sambil membangun sesuatu yang menarik secara visual. Anda akan belajar cara mengatur konten menggunakan elemen semantik, bekerja dengan gambar, dan membuat dasar untuk aplikasi web interaktif.
Pada akhir pelajaran ini, Anda akan memiliki halaman HTML yang berfungsi, menampilkan gambar tanaman dalam kolom yang terorganisir, siap untuk ditata di pelajaran berikutnya. Jangan khawatir jika terlihat sederhana pada awalnya – itulah yang seharusnya dilakukan HTML sebelum CSS menambahkan sentuhan visual.
## Kuis Pra-Pelajaran
[Kuis pra-pelajaran](https://ff-quizzes.netlify.app/web/quiz/15)
> 📺 **Tonton dan Pelajari**: Lihat video ulasan yang bermanfaat ini
>
> [](https://www.youtube.com/watch?v=1TvxJKBzhyQ)
## Menyiapkan Proyek Anda
Sebelum kita mulai menulis kode HTML, mari kita siapkan ruang kerja yang tepat untuk proyek terrarium Anda. Membuat struktur file yang terorganisir sejak awal adalah kebiasaan penting yang akan sangat membantu Anda selama perjalanan pengembangan web.
### Tugas: Buat Struktur Proyek Anda
Anda akan membuat folder khusus untuk proyek terrarium Anda dan menambahkan file HTML pertama Anda. Berikut adalah dua pendekatan yang dapat Anda gunakan:
**Opsi 1: Menggunakan Visual Studio Code**
1. Buka Visual Studio Code
2. Klik "File" → "Open Folder" atau gunakan `Ctrl+K, Ctrl+O` (Windows/Linux) atau `Cmd+K, Cmd+O` (Mac)
3. Buat folder baru bernama `terrarium` dan pilih folder tersebut
4. Di panel Explorer, klik ikon "New File"
5. Beri nama file Anda `index.html`

**Opsi 2: Menggunakan Perintah Terminal**
```bash
mkdir terrarium
cd terrarium
touch index.html
code index.html
```
**Berikut adalah apa yang dilakukan perintah ini:**
- **Membuat** direktori baru bernama `terrarium` untuk proyek Anda
- **Masuk** ke direktori terrarium
- **Membuat** file kosong `index.html`
- **Membuka** file di Visual Studio Code untuk diedit
> 💡 **Tips Pro**: Nama file `index.html` memiliki arti khusus dalam pengembangan web. Ketika seseorang mengunjungi sebuah situs web, browser secara otomatis mencari `index.html` sebagai halaman default untuk ditampilkan. Ini berarti URL seperti `https://mysite.com/projects/` akan secara otomatis menampilkan file `index.html` dari folder `projects` tanpa perlu menyebutkan nama file di URL.
## Memahami Struktur Dokumen HTML
Setiap dokumen HTML mengikuti struktur tertentu yang diperlukan agar browser dapat memahami dan menampilkan dengan benar. Anggaplah struktur ini seperti surat resmi – memiliki elemen yang diperlukan dalam urutan tertentu yang membantu penerima (dalam hal ini, browser) memproses konten dengan benar.
Mari kita mulai dengan menambahkan fondasi penting yang dibutuhkan setiap dokumen HTML.
### Deklarasi DOCTYPE dan Elemen Root
Dua baris pertama dari file HTML mana pun berfungsi sebagai "pengantar" dokumen ke browser:
```html
```
**Memahami apa yang dilakukan kode ini:**
- **Mendeklarasikan** jenis dokumen sebagai HTML5 menggunakan ``
- **Membuat** elemen root `` yang akan berisi semua konten halaman
- **Menetapkan** standar web modern untuk rendering browser yang tepat
- **Memastikan** tampilan konsisten di berbagai browser dan perangkat
> 💡 **Tips VS Code**: Arahkan kursor ke tag HTML mana pun di VS Code untuk melihat informasi bermanfaat dari MDN Web Docs, termasuk contoh penggunaan dan detail kompatibilitas browser.
> 📚 **Pelajari Lebih Lanjut**: Deklarasi DOCTYPE mencegah browser memasuki "quirks mode," yang digunakan untuk mendukung situs web yang sangat lama. Pengembangan web modern menggunakan deklarasi sederhana `` untuk memastikan [rendering yang sesuai standar](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode).
## Menambahkan Metadata Dokumen yang Penting
Bagian `
` dari dokumen HTML berisi informasi penting yang dibutuhkan browser dan mesin pencari, tetapi tidak langsung terlihat oleh pengunjung di halaman. Anggaplah ini sebagai informasi "di balik layar" yang membantu halaman web Anda berfungsi dengan baik dan tampil dengan benar di berbagai perangkat dan platform.
Metadata ini memberi tahu browser cara menampilkan halaman Anda, pengkodean karakter apa yang digunakan, dan cara menangani berbagai ukuran layar – semua hal penting untuk membuat halaman web yang profesional dan mudah diakses.
### Tugas: Tambahkan Bagian Head Dokumen
Masukkan bagian `` ini di antara tag pembuka dan penutup `` Anda:
```html
Welcome to my Virtual Terrarium
```
**Penjelasan tentang apa yang dilakukan setiap elemen:**
- **Menetapkan** judul halaman yang muncul di tab browser dan hasil pencarian
- **Menentukan** pengkodean karakter UTF-8 untuk tampilan teks yang benar di seluruh dunia
- **Memastikan** kompatibilitas dengan versi modern Internet Explorer
- **Mengonfigurasi** desain responsif dengan menetapkan viewport sesuai lebar perangkat
- **Mengontrol** tingkat zoom awal untuk menampilkan konten dalam ukuran alami
> 🤔 **Pikirkan Ini**: Apa yang akan terjadi jika Anda menetapkan tag meta viewport seperti ini: ``? Ini akan memaksa halaman selalu memiliki lebar 600 piksel, yang akan merusak desain responsif! Pelajari lebih lanjut tentang [konfigurasi viewport yang tepat](https://developer.mozilla.org/docs/Web/HTML/Viewport_meta_tag).
## Membangun Bagian Body Dokumen
Elemen `` berisi semua konten yang terlihat dari halaman web Anda – segala sesuatu yang akan dilihat dan berinteraksi dengan pengguna. Sementara bagian `` memberikan instruksi kepada browser, bagian `` berisi konten sebenarnya: teks, gambar, tombol, dan elemen lainnya yang membentuk antarmuka pengguna Anda.
Mari tambahkan struktur body dan pahami bagaimana tag HTML bekerja bersama untuk menciptakan konten yang bermakna.
### Memahami Struktur Tag HTML
HTML menggunakan tag berpasangan untuk mendefinisikan elemen. Sebagian besar tag memiliki tag pembuka seperti `
` dan tag penutup seperti `
`, dengan konten di antaranya: `
Hello, world!
`. Ini menciptakan elemen paragraf yang berisi teks "Hello, world!".
### Tugas: Tambahkan Elemen Body
Perbarui file HTML Anda untuk menyertakan elemen ``:
```html
Welcome to my Virtual Terrarium
```
**Berikut adalah apa yang disediakan oleh struktur lengkap ini:**
- **Menetapkan** kerangka dokumen HTML5 dasar
- **Menyertakan** metadata penting untuk rendering browser yang tepat
- **Membuat** body kosong yang siap untuk konten yang terlihat
- **Mengikuti** praktik terbaik pengembangan web modern
Sekarang Anda siap untuk menambahkan elemen yang terlihat dari terrarium Anda. Kita akan menggunakan elemen `
` sebagai wadah untuk mengatur berbagai bagian konten, dan elemen `` untuk menampilkan gambar tanaman.
### Bekerja dengan Gambar dan Wadah Tata Letak
Gambar memiliki keistimewaan dalam HTML karena menggunakan tag "self-closing". Tidak seperti elemen seperti `` yang mengelilingi konten, tag `` berisi semua informasi yang dibutuhkan dalam tag itu sendiri menggunakan atribut seperti `src` untuk jalur file gambar dan `alt` untuk aksesibilitas.
Sebelum menambahkan gambar ke HTML Anda, Anda perlu mengatur file proyek Anda dengan benar dengan membuat folder gambar dan menambahkan grafik tanaman.
**Pertama, siapkan gambar Anda:**
1. Buat folder bernama `images` di dalam folder proyek terrarium Anda
2. Unduh gambar tanaman dari [folder solusi](../../../../3-terrarium/solution/images) (total 14 gambar tanaman)
3. Salin semua gambar tanaman ke folder `images` baru Anda
### Tugas: Buat Tata Letak Tampilan Tanaman
Sekarang tambahkan gambar tanaman yang diatur dalam dua kolom di antara tag `` Anda:
```html
```
**Langkah demi langkah, berikut adalah apa yang terjadi dalam kode ini:**
- **Membuat** wadah halaman utama dengan `id="page"` untuk menampung semua konten
- **Menetapkan** dua wadah kolom: `left-container` dan `right-container`
- **Mengatur** 7 tanaman di kolom kiri dan 7 tanaman di kolom kanan
- **Membungkus** setiap gambar tanaman dalam div `plant-holder` untuk posisi individu
- **Menerapkan** nama kelas yang konsisten untuk penataan CSS di pelajaran berikutnya
- **Menetapkan** ID unik untuk setiap gambar tanaman untuk interaksi JavaScript nanti
- **Menyertakan** jalur file yang benar yang mengarah ke folder gambar
> 🤔 **Pertimbangkan Ini**: Perhatikan bahwa semua gambar saat ini memiliki teks alt yang sama "plant". Ini tidak ideal untuk aksesibilitas. Pengguna pembaca layar akan mendengar "plant" diulang 14 kali tanpa mengetahui tanaman spesifik yang ditampilkan oleh setiap gambar. Bisakah Anda memikirkan teks alt yang lebih baik dan lebih deskriptif untuk setiap gambar?
> 📝 **Jenis Elemen HTML**: Elemen `
` adalah "block-level" dan mengambil lebar penuh, sedangkan elemen `` adalah "inline" dan hanya mengambil lebar yang diperlukan. Apa yang menurut Anda akan terjadi jika Anda mengganti semua tag `
` ini dengan tag ``?
Dengan markup ini ditambahkan, tanaman akan muncul di layar, meskipun belum terlihat rapi – itulah fungsi CSS di pelajaran berikutnya! Untuk saat ini, Anda memiliki fondasi HTML yang solid yang mengatur konten Anda dengan benar dan mengikuti praktik terbaik aksesibilitas.
## Menggunakan HTML Semantik untuk Aksesibilitas
HTML semantik berarti memilih elemen HTML berdasarkan makna dan tujuannya, bukan hanya tampilannya. Ketika Anda menggunakan markup semantik, Anda mengkomunikasikan struktur dan makna konten Anda kepada browser, mesin pencari, dan teknologi bantu seperti pembaca layar.
Pendekatan ini membuat situs web Anda lebih mudah diakses oleh pengguna dengan disabilitas dan membantu mesin pencari memahami konten Anda dengan lebih baik. Ini adalah prinsip dasar pengembangan web modern yang menciptakan pengalaman yang lebih baik untuk semua orang.
### Menambahkan Judul Halaman Semantik
Mari tambahkan heading yang sesuai untuk halaman terrarium Anda. Masukkan baris ini tepat setelah tag pembuka ``:
```html
My Terrarium
```
**Mengapa markup semantik penting:**
- **Membantu** pembaca layar menavigasi dan memahami struktur halaman
- **Meningkatkan** optimasi mesin pencari (SEO) dengan memperjelas hierarki konten
- **Meningkatkan** aksesibilitas bagi pengguna dengan gangguan penglihatan atau perbedaan kognitif
- **Menciptakan** pengalaman pengguna yang lebih baik di semua perangkat dan platform
- **Mengikuti** standar web dan praktik terbaik untuk pengembangan profesional
**Contoh pilihan semantik vs. non-semantik:**
| Tujuan | ✅ Pilihan Semantik | ❌ Pilihan Non-Semantik |
|--------|---------------------|-------------------------|
| Judul utama | `
` |
> 🎥 **Lihat Dalam Aksi**: Tonton [bagaimana pembaca layar berinteraksi dengan halaman web](https://www.youtube.com/watch?v=OUDV1gqs9GA) untuk memahami mengapa markup semantik sangat penting untuk aksesibilitas. Perhatikan bagaimana struktur HTML yang tepat membantu pengguna menavigasi dengan efisien.
## Membuat Wadah Terrarium
Sekarang mari kita tambahkan struktur HTML untuk terrarium itu sendiri – wadah kaca tempat tanaman nantinya akan ditempatkan. Bagian ini menunjukkan konsep penting: HTML menyediakan struktur, tetapi tanpa penataan CSS, elemen-elemen ini belum terlihat.
Markup terrarium menggunakan nama kelas deskriptif yang akan membuat penataan CSS menjadi intuitif dan mudah dikelola di pelajaran berikutnya.
### Tugas: Tambahkan Struktur Terrarium
Masukkan markup ini di atas tag `
` terakhir (sebelum tag penutup dari wadah halaman):
```html
```
**Memahami struktur terrarium ini:**
- **Membuat** wadah terrarium utama dengan ID unik untuk penataan
- **Menentukan** elemen terpisah untuk setiap komponen visual (atas, dinding, tanah, bawah)
- **Menyertakan** elemen bersarang untuk efek refleksi kaca (elemen glossy)
- **Menggunakan** nama kelas deskriptif yang jelas menunjukkan tujuan setiap elemen
- **Mempersiapkan** struktur untuk penataan CSS yang akan menciptakan tampilan terrarium kaca
> 🤔 **Perhatikan Sesuatu?**: Meskipun Anda telah menambahkan markup ini, Anda tidak melihat apa pun yang baru di halaman! Ini dengan sempurna menggambarkan bagaimana HTML menyediakan struktur sementara CSS menyediakan tampilan. Elemen `
` ini ada tetapi belum memiliki penataan visual – itu akan datang di pelajaran berikutnya!
---
## Tantangan Agen GitHub Copilot
Gunakan mode Agen untuk menyelesaikan tantangan berikut:
**Deskripsi:** Buat struktur HTML semantik untuk bagian panduan perawatan tanaman yang dapat ditambahkan ke proyek terrarium.
**Prompt:** Buat bagian HTML semantik yang mencakup judul utama "Panduan Perawatan Tanaman", tiga subbagian dengan judul "Penyiraman", "Kebutuhan Cahaya", dan "Perawatan Tanah", masing-masing berisi paragraf informasi perawatan tanaman. Gunakan tag HTML semantik yang sesuai seperti ``, `
`, `
`, dan `
` untuk menyusun konten dengan tepat.
Pelajari lebih lanjut tentang [mode agen](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) di sini.
## Jelajahi Tantangan Sejarah HTML
**Belajar Tentang Evolusi Web**
HTML telah berkembang pesat sejak Tim Berners-Lee menciptakan browser web pertama di CERN pada tahun 1990. Beberapa tag lama seperti `