# Proyekto ng Terrarium Bahagi 1: Panimula sa HTML ```mermaid journey title Your HTML Learning Journey section Foundation Create HTML file: 3: Student Add DOCTYPE: 4: Student Structure document: 5: Student section Content Add metadata: 4: Student Include images: 5: Student Organize layout: 5: Student section Semantics Use proper tags: 4: Student Enhance accessibility: 5: Student Build terrarium: 5: Student ``` ![Panimula sa HTML](../../../../translated_images/webdev101-html.4389c2067af68e98280c1bde52b6c6269f399eaae3659b7c846018d8a7b0bbd9.tl.png) > Sketchnote ni [Tomomi Imura](https://twitter.com/girlie_mac) Ang HTML, o HyperText Markup Language, ang pundasyon ng bawat website na iyong binisita. Isipin ang HTML bilang balangkas na nagbibigay ng istruktura sa mga web page – ito ang nagtatakda kung saan ilalagay ang nilalaman, paano ito iaayos, at ano ang kinakatawan ng bawat bahagi. Habang ang CSS ang magpapaganda sa iyong HTML gamit ang mga kulay at layout, at ang JavaScript ang magdadagdag ng interaktibidad, ang HTML ang nagbibigay ng mahalagang istruktura na nagpapahintulot sa lahat ng iba pang aspeto na maging posible. Sa araling ito, gagawa ka ng istruktura ng HTML para sa isang virtual na interface ng terrarium. Ang proyektong ito ay magtuturo sa iyo ng mga pangunahing konsepto ng HTML habang gumagawa ng isang bagay na kaakit-akit sa paningin. Matututuhan mo kung paano ayusin ang nilalaman gamit ang mga semantic na elemento, magtrabaho gamit ang mga imahe, at gumawa ng pundasyon para sa isang interaktibong web application. Sa pagtatapos ng araling ito, magkakaroon ka ng gumaganang HTML page na nagpapakita ng mga imahe ng halaman sa maayos na mga kolum, handa na para sa pag-istilo sa susunod na aralin. Huwag mag-alala kung mukhang simple ito sa simula – ganito talaga ang HTML bago magdagdag ng visual na polish ang CSS. ```mermaid mindmap root((HTML Fundamentals)) Structure DOCTYPE Declaration HTML Element Head Section Body Content Elements Tags & Attributes Self-closing Tags Nested Elements Block vs Inline Content Text Elements Images Containers (div) Lists Semantics Meaningful Tags Accessibility Screen Readers SEO Benefits Best Practices Proper Nesting Valid Markup Descriptive Alt Text Organized Structure ``` ## Pre-Lecture Quiz [Pre-lecture quiz](https://ff-quizzes.netlify.app/web/quiz/15) > 📺 **Manood at Matuto**: Tingnan ang kapaki-pakinabang na video overview > > [![HTML Fundamentals Video](https://img.youtube.com/vi/1TvxJKBzhyQ/0.jpg)](https://www.youtube.com/watch?v=1TvxJKBzhyQ) ## Pagsisimula ng Iyong Proyekto Bago tayo sumabak sa HTML code, mag-set up muna tayo ng maayos na workspace para sa iyong proyekto ng terrarium. Ang paggawa ng organisadong istruktura ng file mula sa simula ay isang mahalagang ugali na magagamit mo sa buong paglalakbay mo sa web development. ### Gawain: Gumawa ng Istruktura ng Proyekto Gagawa ka ng dedikadong folder para sa iyong proyekto ng terrarium at magdadagdag ng iyong unang HTML file. Narito ang dalawang paraan na maaari mong gamitin: **Opsyon 1: Gamit ang Visual Studio Code** 1. Buksan ang Visual Studio Code 2. I-click ang "File" → "Open Folder" o gamitin ang `Ctrl+K, Ctrl+O` (Windows/Linux) o `Cmd+K, Cmd+O` (Mac) 3. Gumawa ng bagong folder na tinatawag na `terrarium` at piliin ito 4. Sa Explorer pane, i-click ang "New File" icon 5. Pangalanan ang iyong file na `index.html` ![VS Code Explorer na nagpapakita ng paggawa ng bagong file](../../../../translated_images/vs-code-index.e2986cf919471eb984a0afef231380c8b132b000635105f2397bd2754d1b689c.tl.png) **Opsyon 2: Gamit ang Terminal Commands** ```bash mkdir terrarium cd terrarium touch index.html code index.html ``` **Narito ang ginagawa ng mga command na ito:** - **Gumagawa** ng bagong direktoryo na tinatawag na `terrarium` para sa iyong proyekto - **Nag-navigate** sa terrarium directory - **Gumagawa** ng walang laman na `index.html` file - **Binubuksan** ang file sa Visual Studio Code para sa pag-edit > 💡 **Pro Tip**: Ang filename na `index.html` ay espesyal sa web development. Kapag may bumisita sa isang website, awtomatikong hinahanap ng mga browser ang `index.html` bilang default na page na ipapakita. Nangangahulugan ito na ang URL tulad ng `https://mysite.com/projects/` ay awtomatikong magsisilbi sa `index.html` file mula sa `projects` folder nang hindi kailangang tukuyin ang filename sa URL. ## Pag-unawa sa Istruktura ng HTML Document Ang bawat HTML document ay sumusunod sa isang partikular na istruktura na kailangan ng mga browser upang maunawaan at maipakita nang tama. Isipin ang istruktura na ito tulad ng isang pormal na liham – mayroon itong mga kinakailangang elemento sa partikular na pagkakasunod-sunod na tumutulong sa tatanggap (sa kasong ito, ang browser) na iproseso ang nilalaman nang maayos. ```mermaid flowchart TD A[""] --> B[""] B --> C[""] C --> D[""] C --> E["<meta charset>"] C --> F["<meta viewport>"] B --> G["<body>"] G --> H["<h1> Heading"] G --> I["<div> Containers"] G --> J["<img> Images"] style A fill:#e1f5fe style B fill:#f3e5f5 style C fill:#fff3e0 style G fill:#e8f5e8 ``` Simulan natin sa pagdaragdag ng mahalagang pundasyon na kailangan ng bawat HTML document. ### Ang DOCTYPE Declaration at Root Element Ang unang dalawang linya ng anumang HTML file ay nagsisilbing "panimula" ng dokumento sa browser: ```html <!DOCTYPE html> <html></html> ``` **Pag-unawa sa ginagawa ng code na ito:** - **Idinedeklara** ang uri ng dokumento bilang HTML5 gamit ang `<!DOCTYPE html>` - **Gumagawa** ng root `<html>` element na maglalaman ng lahat ng nilalaman ng page - **Itinatakda** ang modernong web standards para sa tamang pag-render ng browser - **Tinitiyak** ang pare-parehong pagpapakita sa iba't ibang browser at device > 💡 **VS Code Tip**: I-hover ang anumang HTML tag sa VS Code upang makita ang kapaki-pakinabang na impormasyon mula sa MDN Web Docs, kabilang ang mga halimbawa ng paggamit at detalye ng compatibility ng browser. > 📚 **Matuto Pa**: Ang DOCTYPE declaration ay pumipigil sa mga browser na pumasok sa "quirks mode," na ginamit upang suportahan ang mga lumang website. Ang modernong web development ay gumagamit ng simpleng `<!DOCTYPE html>` declaration upang matiyak ang [standards-compliant rendering](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode). ### 🔄 **Pedagogical Check-in** **Huminto at Magnilay**: Bago magpatuloy, tiyakin na nauunawaan mo: - ✅ Bakit kailangan ng bawat HTML document ng DOCTYPE declaration - ✅ Ano ang nilalaman ng `<html>` root element - ✅ Paano nakakatulong ang istrukturang ito sa tamang pag-render ng mga browser **Mabilis na Pagsusuri**: Kaya mo bang ipaliwanag sa sarili mong mga salita kung ano ang ibig sabihin ng "standards-compliant rendering"? ## Pagdaragdag ng Mahalagang Metadata ng Dokumento Ang `<head>` na seksyon ng isang HTML document ay naglalaman ng mahalagang impormasyon na kailangan ng mga browser at search engine, ngunit hindi direktang nakikita ng mga bisita sa page. Isipin ito bilang "behind-the-scenes" na impormasyon na tumutulong sa iyong webpage na gumana nang maayos at lumitaw nang tama sa iba't ibang device at platform. Ang metadata na ito ay nagsasabi sa mga browser kung paano ipapakita ang iyong page, anong character encoding ang gagamitin, at kung paano haharapin ang iba't ibang laki ng screen – lahat ng ito ay mahalaga para sa paggawa ng propesyonal at accessible na mga web page. ### Gawain: Idagdag ang Document Head Ipasok ang `<head>` na seksyon sa pagitan ng iyong pagbubukas at pagsasara ng `<html>` tags: ```html <head> <title>Welcome to my Virtual Terrarium ``` **Pag-unawa sa ginagawa ng bawat elemento:** - **Itinatakda** ang pamagat ng page na lumalabas sa mga tab ng browser at resulta ng paghahanap - **Tinutukoy** ang UTF-8 character encoding para sa tamang pagpapakita ng teksto sa buong mundo - **Tinitiyak** ang compatibility sa mga modernong bersyon ng Internet Explorer - **Kinokontrol** ang disenyo ng responsive sa pamamagitan ng pagtatakda ng viewport na tumutugma sa lapad ng device - **Kinokontrol** ang initial zoom level upang ipakita ang nilalaman sa natural na laki > 🤔 **Pag-isipan Ito**: Ano ang mangyayari kung magtakda ka ng viewport meta tag tulad nito: ``? Pipilitin nitong palaging maging 600 pixels ang lapad ng page, na sisira sa disenyo ng responsive! Matuto pa tungkol sa [tamang configuration ng viewport](https://developer.mozilla.org/docs/Web/HTML/Viewport_meta_tag). ## Pagbuo ng Document Body Ang `` element ay naglalaman ng lahat ng nakikitang nilalaman ng iyong webpage – lahat ng makikita at makikipag-ugnayan ang mga user. Habang ang `` na seksyon ay nagbibigay ng mga tagubilin sa browser, ang `` na seksyon ay naglalaman ng aktwal na nilalaman: teksto, mga imahe, mga button, at iba pang elemento na bumubuo sa iyong user interface. Simulan natin ang pagdaragdag ng istruktura ng body at unawain kung paano nagtutulungan ang mga HTML tag upang lumikha ng makabuluhang nilalaman. ### Pag-unawa sa Istruktura ng HTML Tag Ang HTML ay gumagamit ng mga paired tags upang tukuyin ang mga elemento. Karamihan sa mga tag ay may opening tag tulad ng `

` at closing tag tulad ng `

`, na may nilalaman sa pagitan: `

Hello, world!

`. Ito ay lumilikha ng isang paragraph element na naglalaman ng teksto na "Hello, world!". ### Gawain: Idagdag ang Body Element I-update ang iyong HTML file upang isama ang `` element: ```html Welcome to my Virtual Terrarium ``` **Narito ang ibinibigay ng kumpletong istrukturang ito:** - **Itinatakda** ang pangunahing HTML5 document framework - **Kasama** ang mahalagang metadata para sa tamang pag-render ng browser - **Gumagawa** ng walang laman na body na handa para sa iyong nakikitang nilalaman - **Sumusunod** sa modernong web development best practices Ngayon handa ka nang magdagdag ng mga nakikitang elemento ng iyong terrarium. Gagamit tayo ng mga `
` na elemento bilang mga lalagyan upang ayusin ang iba't ibang seksyon ng nilalaman, at mga `` na elemento upang ipakita ang mga imahe ng halaman. ### Paggamit ng Mga Imahe at Layout Containers Ang mga imahe ay espesyal sa HTML dahil gumagamit sila ng "self-closing" na mga tag. Hindi tulad ng mga elemento tulad ng `

` na bumabalot sa nilalaman, ang `` tag ay naglalaman ng lahat ng impormasyong kailangan nito sa loob ng tag mismo gamit ang mga attributes tulad ng `src` para sa file path ng imahe at `alt` para sa accessibility. Bago magdagdag ng mga imahe sa iyong HTML, kailangan mong ayusin nang maayos ang iyong mga file ng proyekto sa pamamagitan ng paggawa ng folder ng mga imahe at pagdaragdag ng mga graphics ng halaman. **Una, i-set up ang iyong mga imahe:** 1. Gumawa ng folder na tinatawag na `images` sa loob ng iyong terrarium project folder 2. I-download ang mga imahe ng halaman mula sa [solution folder](../../../../3-terrarium/solution/images) (14 na imahe ng halaman lahat) 3. Kopyahin ang lahat ng mga imahe ng halaman sa iyong bagong `images` folder ### Gawain: Gumawa ng Layout ng Display ng Halaman Ngayon, idagdag ang mga imahe ng halaman na nakaayos sa dalawang kolum sa pagitan ng iyong `` tags: ```html
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
``` **Hakbang-hakbang, narito ang nangyayari sa code na ito:** - **Gumagawa** ng pangunahing lalagyan ng page na may `id="page"` upang maglaman ng lahat ng nilalaman - **Nagtatakda** ng dalawang lalagyan ng kolum: `left-container` at `right-container` - **Inaayos** ang 7 halaman sa kaliwang kolum at 7 halaman sa kanang kolum - **Binabalot** ang bawat imahe ng halaman sa isang `plant-holder` div para sa indibidwal na pagpoposisyon - **Nag-aaplay** ng pare-parehong class names para sa CSS styling sa susunod na aralin - **Nag-aassign** ng unique IDs sa bawat imahe ng halaman para sa interaksyon ng JavaScript sa hinaharap - **Kasama** ang tamang file paths na tumuturo sa images folder > 🤔 **Pag-isipan Ito**: Pansinin na ang lahat ng mga imahe ay kasalukuyang may parehong alt text na "plant". Hindi ito ideal para sa accessibility. Ang mga gumagamit ng screen reader ay maririnig ang "plant" na inuulit ng 14 na beses nang hindi nalalaman kung aling partikular na halaman ang ipinapakita ng bawat imahe. Maiisip mo ba ang mas mahusay, mas detalyadong alt text para sa bawat imahe? > 📝 **Mga Uri ng HTML Element**: Ang `
` na mga elemento ay "block-level" at kumukuha ng buong lapad, habang ang `` na mga elemento ay "inline" at kumukuha lamang ng kinakailangang lapad. Ano sa tingin mo ang mangyayari kung papalitan mo ang lahat ng mga `
` tags ng `` tags? ### 🔄 **Pedagogical Check-in** **Pag-unawa sa Istruktura**: Maglaan ng sandali upang suriin ang iyong istruktura ng HTML: - ✅ Kaya mo bang tukuyin ang mga pangunahing lalagyan sa iyong layout? - ✅ Nauunawaan mo ba kung bakit ang bawat imahe ay may unique ID? - ✅ Paano mo ilalarawan ang layunin ng mga `plant-holder` divs? **Visual na Inspeksyon**: Buksan ang iyong HTML file sa browser. Dapat mong makita: - Isang simpleng listahan ng mga imahe ng halaman - Mga imahe na nakaayos sa dalawang kolum - Simpleng layout na walang istilo **Tandaan**: Ang simpleng hitsura na ito ay eksaktong kung ano ang dapat na hitsura ng HTML bago ang pag-istilo ng CSS! Sa markup na ito, lilitaw na ang mga halaman sa screen, kahit na hindi pa ito mukhang maganda – para diyan ang CSS sa susunod na aralin! Sa ngayon, mayroon kang solidong pundasyon ng HTML na maayos na nag-aayos ng iyong nilalaman at sumusunod sa mga best practices ng accessibility. ## Paggamit ng Semantic HTML para sa Accessibility Ang Semantic HTML ay nangangahulugan ng pagpili ng mga HTML elemento batay sa kanilang kahulugan at layunin, hindi lamang sa kanilang hitsura. Kapag gumamit ka ng semantic markup, ipinapahayag mo ang istruktura at kahulugan ng iyong nilalaman sa mga browser, search engines, at mga assistive technologies tulad ng screen readers. ```mermaid flowchart TD A[Need to add content?] --> B{What type?} B -->|Main heading| C["

"] B -->|Subheading| D["

,

, etc."] B -->|Paragraph| E["

"] B -->|List| F["

    ,
      "] B -->|Navigation| G["