# Projek Terrarium Bahagian 1: Pengenalan kepada HTML

> Sketchnote oleh [Tomomi Imura](https://twitter.com/girlie_mac)
HTML, atau HyperText Markup Language, adalah asas kepada setiap laman web yang pernah anda lawati. Anggaplah HTML sebagai rangka yang memberikan struktur kepada laman web – ia menentukan di mana kandungan diletakkan, bagaimana ia diatur, dan apa yang setiap bahagian wakili. Walaupun CSS nanti akan "menghias" HTML anda dengan warna dan susun atur, dan JavaScript akan menghidupkannya dengan interaktiviti, HTML menyediakan struktur asas yang menjadikan segalanya mungkin.
Dalam pelajaran ini, anda akan mencipta struktur HTML untuk antara muka terrarium maya. Projek praktikal ini akan mengajar anda konsep asas HTML sambil membina sesuatu yang menarik secara visual. Anda akan belajar bagaimana mengatur kandungan menggunakan elemen semantik, bekerja dengan imej, dan mencipta asas untuk aplikasi web interaktif.
Menjelang akhir pelajaran ini, anda akan mempunyai halaman HTML yang berfungsi memaparkan imej tumbuhan dalam susunan kolum, sedia untuk dihias dalam pelajaran seterusnya. Jangan risau jika ia kelihatan asas pada mulanya – itulah yang HTML sepatutnya lakukan sebelum CSS menambah sentuhan visual.
## Kuiz Pra-Pelajaran
[Kuiz pra-pelajaran](https://ff-quizzes.netlify.app/web/quiz/15)
> 📺 **Tonton dan Belajar**: Lihat video ringkasan yang berguna ini
>
> [](https://www.youtube.com/watch?v=1TvxJKBzhyQ)
## Menyediakan Projek Anda
Sebelum kita mula dengan kod HTML, mari kita sediakan ruang kerja yang sesuai untuk projek terrarium anda. Mewujudkan struktur fail yang teratur dari awal adalah tabiat penting yang akan membantu anda sepanjang perjalanan pembangunan web anda.
### Tugasan: Cipta Struktur Projek Anda
Anda akan mencipta folder khusus untuk projek terrarium anda dan menambah fail HTML pertama anda. Berikut adalah dua pendekatan yang boleh anda gunakan:
**Pilihan 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. Cipta folder baru bernama `terrarium` dan pilihnya
4. Dalam panel Explorer, klik ikon "New File"
5. Namakan fail anda `index.html`

**Pilihan 2: Menggunakan Perintah Terminal**
```bash
mkdir terrarium
cd terrarium
touch index.html
code index.html
```
**Inilah yang dicapai oleh perintah ini:**
- **Mencipta** direktori baru bernama `terrarium` untuk projek anda
- **Navigasi** ke dalam direktori terrarium
- **Mencipta** fail kosong `index.html`
- **Membuka** fail dalam Visual Studio Code untuk penyuntingan
> 💡 **Tip Pro**: Nama fail `index.html` adalah istimewa dalam pembangunan web. Apabila seseorang melawat laman web, pelayar secara automatik mencari `index.html` sebagai halaman lalai untuk dipaparkan. Ini bermakna URL seperti `https://mysite.com/projects/` akan secara automatik menyajikan fail `index.html` dari folder `projects` tanpa perlu menentukan nama fail dalam URL.
## Memahami Struktur Dokumen HTML
Setiap dokumen HTML mengikuti struktur tertentu yang diperlukan oleh pelayar untuk memahami dan memaparkan dengan betul. Anggaplah struktur ini seperti surat rasmi – ia mempunyai elemen yang diperlukan dalam susunan tertentu yang membantu penerima (dalam kes ini, pelayar) memproses kandungan dengan betul.
Mari kita mulakan dengan menambah asas yang diperlukan oleh setiap dokumen HTML.
### Deklarasi DOCTYPE dan Elemen Root
Dua baris pertama mana-mana fail HTML berfungsi sebagai "pengenalan" dokumen kepada pelayar:
```html
```
**Memahami apa yang dilakukan oleh kod ini:**
- **Mengisytiharkan** jenis dokumen sebagai HTML5 menggunakan ``
- **Mencipta** elemen root `` yang akan mengandungi semua kandungan halaman
- **Menetapkan** piawaian web moden untuk paparan pelayar yang betul
- **Memastikan** paparan konsisten di pelbagai pelayar dan peranti
> 💡 **Tip VS Code**: Letakkan kursor pada mana-mana tag HTML dalam VS Code untuk melihat maklumat berguna daripada MDN Web Docs, termasuk contoh penggunaan dan butiran keserasian pelayar.
> 📚 **Ketahui Lebih Lanjut**: Deklarasi DOCTYPE menghalang pelayar daripada memasuki "quirks mode," yang digunakan untuk menyokong laman web yang sangat lama. Pembangunan web moden menggunakan deklarasi `` yang mudah untuk memastikan [paparan yang mematuhi piawaian](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode).
## Menambah Metadata Dokumen Penting
Bahagian `
` dalam dokumen HTML mengandungi maklumat penting yang diperlukan oleh pelayar dan enjin carian, tetapi tidak dilihat secara langsung oleh pelawat di halaman. Anggaplah ia sebagai maklumat "di belakang tabir" yang membantu laman web anda berfungsi dengan betul dan muncul dengan betul di pelbagai peranti dan platform.
Metadata ini memberitahu pelayar bagaimana untuk memaparkan halaman anda, pengekodan watak yang hendak digunakan, dan bagaimana untuk mengendalikan saiz skrin yang berbeza – semua ini penting untuk mencipta laman web yang profesional dan boleh diakses.
### Tugasan: Tambah Bahagian Kepala Dokumen
Masukkan bahagian `` ini di antara tag pembuka dan penutup `` anda:
```html
Welcome to my Virtual Terrarium
```
**Memecahkan apa yang dicapai oleh setiap elemen:**
- **Menetapkan** tajuk halaman yang muncul di tab pelayar dan hasil carian
- **Menentukan** pengekodan watak UTF-8 untuk paparan teks yang betul di seluruh dunia
- **Memastikan** keserasian dengan versi moden Internet Explorer
- **Mengkonfigurasi** reka bentuk responsif dengan menetapkan viewport untuk sepadan dengan lebar peranti
- **Mengawal** tahap zum awal untuk memaparkan kandungan pada saiz semula jadi
> 🤔 **Fikirkan Ini**: Apa yang akan berlaku jika anda menetapkan tag meta viewport seperti ini: ``? Ini akan memaksa halaman sentiasa menjadi lebar 600 piksel, memecahkan reka bentuk responsif! Ketahui lebih lanjut tentang [konfigurasi viewport yang betul](https://developer.mozilla.org/docs/Web/HTML/Viewport_meta_tag).
## Membina Badan Dokumen
Elemen `` mengandungi semua kandungan yang boleh dilihat pada laman web anda – segala-galanya yang pengguna akan lihat dan berinteraksi. Walaupun bahagian `` memberikan arahan kepada pelayar, bahagian `` mengandungi kandungan sebenar: teks, imej, butang, dan elemen lain yang mencipta antara muka pengguna anda.
Mari kita tambah struktur badan dan fahami bagaimana tag HTML bekerjasama untuk mencipta kandungan yang bermakna.
### Memahami Struktur Tag HTML
HTML menggunakan tag berpasangan untuk menentukan elemen. Kebanyakan tag mempunyai tag pembuka seperti `
` dan tag penutup seperti `
`, dengan kandungan di antara: `
Hello, world!
`. Ini mencipta elemen perenggan yang mengandungi teks "Hello, world!".
### Tugasan: Tambah Elemen Badan
Kemas kini fail HTML anda untuk memasukkan elemen ``:
```html
Welcome to my Virtual Terrarium
```
**Inilah yang disediakan oleh struktur lengkap ini:**
- **Menetapkan** rangka kerja dokumen HTML5 asas
- **Termasuk** metadata penting untuk paparan pelayar yang betul
- **Mencipta** badan kosong yang sedia untuk kandungan yang boleh dilihat
- **Mengikuti** amalan terbaik pembangunan web moden
Sekarang anda bersedia untuk menambah elemen yang boleh dilihat pada terrarium anda. Kami akan menggunakan elemen `
` sebagai bekas untuk mengatur bahagian kandungan yang berbeza, dan elemen `` untuk memaparkan imej tumbuhan.
### Bekerja dengan Imej dan Bekas Susun Atur
Imej adalah istimewa dalam HTML kerana ia menggunakan tag "self-closing". Tidak seperti elemen seperti `` yang membungkus kandungan, tag `` mengandungi semua maklumat yang diperlukan dalam tag itu sendiri menggunakan atribut seperti `src` untuk laluan fail imej dan `alt` untuk kebolehaksesan.
Sebelum menambah imej ke HTML anda, anda perlu mengatur fail projek anda dengan betul dengan mencipta folder imej dan menambah grafik tumbuhan.
**Pertama, sediakan imej anda:**
1. Cipta folder bernama `images` di dalam folder projek terrarium anda
2. Muat turun imej tumbuhan dari [folder penyelesaian](../../../../3-terrarium/solution/images) (14 imej tumbuhan keseluruhan)
3. Salin semua imej tumbuhan ke dalam folder `images` baru anda
### Tugasan: Cipta Susun Atur Paparan Tumbuhan
Sekarang tambahkan imej tumbuhan yang diatur dalam dua kolum di antara tag `` anda:
```html
```
**Langkah demi langkah, inilah yang berlaku dalam kod ini:**
- **Mencipta** bekas halaman utama dengan `id="page"` untuk memegang semua kandungan
- **Menetapkan** dua bekas kolum: `left-container` dan `right-container`
- **Mengatur** 7 tumbuhan dalam kolum kiri dan 7 tumbuhan dalam kolum kanan
- **Membungkus** setiap imej tumbuhan dalam div `plant-holder` untuk kedudukan individu
- **Menggunakan** nama kelas yang konsisten untuk penggayaan CSS dalam pelajaran seterusnya
- **Menetapkan** ID unik kepada setiap imej tumbuhan untuk interaksi JavaScript kemudian
- **Termasuk** laluan fail yang betul menunjuk ke folder imej
> 🤔 **Pertimbangkan Ini**: Perhatikan bahawa semua imej kini mempunyai teks alt yang sama "plant". Ini tidak ideal untuk kebolehaksesan. Pengguna pembaca skrin akan mendengar "plant" diulang 14 kali tanpa mengetahui tumbuhan spesifik yang ditunjukkan oleh setiap imej. Bolehkah anda memikirkan teks alt yang lebih baik dan deskriptif untuk setiap imej?
> 📝 **Jenis Elemen HTML**: Elemen `
` adalah "block-level" dan mengambil lebar penuh, manakala elemen `` adalah "inline" dan hanya mengambil lebar yang diperlukan. Apa yang anda fikir akan berlaku jika anda menukar semua tag `
` ini kepada tag ``?
Dengan markup ini ditambah, tumbuhan akan muncul di skrin, walaupun ia belum kelihatan menarik – itulah tujuan CSS dalam pelajaran seterusnya! Buat masa ini, anda mempunyai asas HTML yang kukuh yang mengatur kandungan anda dengan betul dan mengikuti amalan terbaik kebolehaksesan.
## Menggunakan HTML Semantik untuk Kebolehaksesan
HTML semantik bermaksud memilih elemen HTML berdasarkan makna dan tujuannya, bukan hanya penampilannya. Apabila anda menggunakan markup semantik, anda menyampaikan struktur dan makna kandungan anda kepada pelayar, enjin carian, dan teknologi bantuan seperti pembaca skrin.
Pendekatan ini menjadikan laman web anda lebih mudah diakses oleh pengguna kurang upaya dan membantu enjin carian memahami kandungan anda dengan lebih baik. Ia adalah prinsip asas pembangunan web moden yang mencipta pengalaman yang lebih baik untuk semua orang.
### Menambah Tajuk Halaman Semantik
Mari kita tambahkan tajuk yang sesuai untuk halaman terrarium anda. Masukkan baris ini betul-betul selepas tag pembuka `` anda:
```html
My Terrarium
```
**Mengapa markup semantik penting:**
- **Membantu** pembaca skrin menavigasi dan memahami struktur halaman
- **Meningkatkan** pengoptimuman enjin carian (SEO) dengan menjelaskan hierarki kandungan
- **Memperbaiki** kebolehaksesan untuk pengguna dengan masalah penglihatan atau perbezaan kognitif
- **Mencipta** pengalaman pengguna yang lebih baik di semua peranti dan platform
- **Mengikuti** piawaian web dan amalan terbaik untuk pembangunan profesional
**Contoh pilihan semantik vs. tidak semantik:**
| Tujuan | ✅ Pilihan Semantik | ❌ Pilihan Tidak Semantik |
|--------|---------------------|--------------------------|
| Tajuk utama | `
` |
> 🎥 **Lihat Ia Beraksi**: Tonton [bagaimana pembaca skrin berinteraksi dengan laman web](https://www.youtube.com/watch?v=OUDV1gqs9GA) untuk memahami mengapa markup semantik penting untuk kebolehaksesan. Perhatikan bagaimana struktur HTML yang betul membantu pengguna menavigasi dengan cekap.
## Mencipta Bekas Terrarium
Sekarang mari kita tambahkan struktur HTML untuk terrarium itu sendiri – bekas kaca di mana tumbuhan akhirnya akan diletakkan. Bahagian ini menunjukkan konsep penting: HTML menyediakan struktur, tetapi tanpa penggayaan CSS, elemen-elemen ini belum kelihatan.
Markup terrarium menggunakan nama kelas deskriptif yang akan menjadikan penggayaan CSS intuitif dan mudah diselenggara dalam pelajaran seterusnya.
### Tugasan: Tambah Struktur Terrarium
Masukkan markup ini di atas tag `
` terakhir (sebelum tag penutup bekas halaman):
```html
```
**Memahami struktur terrarium ini:**
- **Mencipta** bekas terrarium utama dengan ID unik untuk penggayaan
- **Menentukan** elemen berasingan untuk setiap komponen visual (atas, dinding, tanah, bawah)
- **Termasuk** elemen bersarang untuk kesan pantulan kaca (elemen glossy)
- **Menggunakan** nama kelas deskriptif yang jelas menunjukkan tujuan setiap elemen
- **Menyediakan** struktur untuk penggayaan CSS yang akan mencipta penampilan terrarium kaca
> 🤔 **Perhatikan Sesuatu?**: Walaupun anda menambah markup ini, anda tidak melihat apa-apa yang baru di halaman! Ini dengan sempurna menggambarkan bagaimana HTML menyediakan struktur sementara CSS menyediakan penampilan. Elemen `
` ini wujud tetapi belum mempunyai penggayaan visual – itu akan datang dalam pelajaran seterusnya!
---
## Cabaran Ejen GitHub Copilot
Gunakan mod Ejen untuk menyelesaikan cabaran berikut:
**Penerangan:** Cipta struktur HTML semantik untuk bahagian panduan penjagaan tumbuhan yang boleh ditambah kepada projek terrarium.
**Prompt:** Buat bahagian HTML semantik yang merangkumi tajuk utama "Panduan Penjagaan Tumbuhan", tiga subseksyen dengan tajuk "Penyiraman", "Keperluan Cahaya", dan "Penjagaan Tanah", setiap satu mengandungi perenggan maklumat penjagaan tumbuhan. Gunakan tag HTML semantik yang sesuai seperti ``, `
`, `
`, dan `
` untuk menyusun kandungan dengan betul.
Ketahui lebih lanjut tentang [mod ejen](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) di sini.
## Cabaran Sejarah HTML
**Mempelajari Evolusi Web**
HTML telah berkembang dengan ketara sejak Tim Berners-Lee mencipta pelayar web pertama di CERN pada tahun 1990. Beberapa tag lama seperti `