# Terrarium Projesi Bölüm 1: HTML'e Giriş
```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
```

> Sketchnote: [Tomomi Imura](https://twitter.com/girlie_mac)
HTML, yani HyperText Markup Language, ziyaret ettiğiniz her web sitesinin temelini oluşturur. HTML'i web sayfalarına yapı kazandıran bir iskelet olarak düşünebilirsiniz – içeriklerin nereye gideceğini, nasıl organize edileceğini ve her bir parçanın neyi temsil ettiğini tanımlar. CSS daha sonra HTML'inizi renkler ve düzenlerle "süsler" ve JavaScript interaktivite ile "canlandırır", ancak HTML her şeyin mümkün olmasını sağlayan temel yapıyı sunar.
Bu derste, sanal bir teraryum arayüzü için HTML yapısını oluşturacaksınız. Bu uygulamalı proje, temel HTML kavramlarını öğretirken görsel olarak ilgi çekici bir şey inşa etmenizi sağlayacak. İçeriği semantik öğelerle nasıl organize edeceğinizi, resimlerle nasıl çalışacağınızı ve interaktif bir web uygulaması için temel oluşturmayı öğreneceksiniz.
Dersin sonunda, bitki resimlerini düzenli sütunlar halinde gösteren çalışan bir HTML sayfasına sahip olacaksınız ve bir sonraki derste stil eklemeye hazır olacaksınız. İlk başta basit görünüyorsa endişelenmeyin – CSS görsel cilayı eklemeden önce HTML tam olarak böyle görünmelidir.
```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
```
## Ders Öncesi Test
[Ders öncesi test](https://ff-quizzes.netlify.app/web/quiz/15)
> 📺 **İzle ve Öğren**: Bu faydalı video özetine göz atın
>
> [](https://www.youtube.com/watch?v=1TvxJKBzhyQ)
## Projenizi Kurma
HTML koduna dalmadan önce, teraryum projeniz için uygun bir çalışma alanı oluşturalım. Başlangıçtan itibaren düzenli bir dosya yapısı oluşturmak, web geliştirme yolculuğunuz boyunca size iyi bir alışkanlık kazandıracaktır.
### Görev: Proje Yapınızı Oluşturun
Teraryum projeniz için özel bir klasör oluşturacak ve ilk HTML dosyanızı ekleyeceksiniz. İşte kullanabileceğiniz iki yaklaşım:
**Seçenek 1: Visual Studio Code Kullanarak**
1. Visual Studio Code'u açın
2. "File" → "Open Folder" seçeneğine tıklayın veya `Ctrl+K, Ctrl+O` (Windows/Linux) ya da `Cmd+K, Cmd+O` (Mac) kısayolunu kullanın
3. `terrarium` adında yeni bir klasör oluşturun ve seçin
4. Explorer panelinde "New File" simgesine tıklayın
5. Dosyanıza `index.html` adını verin

**Seçenek 2: Terminal Komutlarını Kullanarak**
```bash
mkdir terrarium
cd terrarium
touch index.html
code index.html
```
**Bu komutların yaptığı şeyler:**
- Projeniz için `terrarium` adında yeni bir dizin oluşturur
- Teraryum dizinine geçiş yapar
- Boş bir `index.html` dosyası oluşturur
- Düzenleme için dosyayı Visual Studio Code'da açar
> 💡 **İpucu**: Web geliştirmede `index.html` dosya adı özeldir. Birisi bir web sitesini ziyaret ettiğinde, tarayıcılar otomatik olarak `index.html` dosyasını varsayılan sayfa olarak görüntülemek için arar. Bu, `https://mysite.com/projects/` gibi bir URL'nin, dosya adını URL'de belirtmeye gerek kalmadan `projects` klasöründeki `index.html` dosyasını otomatik olarak sunacağı anlamına gelir.
## HTML Belge Yapısını Anlama
Her HTML belgesi, tarayıcıların doğru bir şekilde anlaması ve görüntülemesi için belirli bir yapıyı takip eder. Bu yapıyı resmi bir mektup gibi düşünün – belirli bir sırada gerekli öğeler vardır ve bu öğeler alıcının (bu durumda tarayıcı) içeriği düzgün bir şekilde işlemesine yardımcı olur.
```mermaid
flowchart TD
A[""] --> B[""]
B --> C["
"]
C --> D[""]
C --> E[""]
C --> F[""]
B --> G[""]
G --> H["
Heading"]
G --> I["
Containers"]
G --> J[" Images"]
style A fill:#e1f5fe
style B fill:#f3e5f5
style C fill:#fff3e0
style G fill:#e8f5e8
```
Her HTML belgesinin ihtiyaç duyduğu temel yapıyı ekleyerek başlayalım.
### DOCTYPE Bildirimi ve Kök Eleman
Her HTML dosyasının ilk iki satırı, belgenin tarayıcıya "tanıtımı" olarak hizmet eder:
```html
```
**Bu kodun ne yaptığını anlamak:**
- Belge türünü `` kullanarak HTML5 olarak ilan eder
- Tüm sayfa içeriğini barındıracak kök `` öğesini oluşturur
- Modern web standartlarını doğru tarayıcı işleme için belirler
- Farklı tarayıcılar ve cihazlar arasında tutarlı bir görüntüleme sağlar
> 💡 **VS Code İpucu**: VS Code'da herhangi bir HTML etiketinin üzerine geldiğinizde, MDN Web Docs'tan kullanım örnekleri ve tarayıcı uyumluluk detayları gibi faydalı bilgiler görebilirsiniz.
> 📚 **Daha Fazla Bilgi Edinin**: DOCTYPE bildirimi, tarayıcıların çok eski web sitelerini desteklemek için kullanılan "quirks mode"a girmesini engeller. Modern web geliştirme, [standartlara uygun işleme](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode) sağlamak için basit `` bildirimini kullanır.
### 🔄 **Pedagojik Kontrol**
**Dur ve Düşün**: Devam etmeden önce şunları anladığınızdan emin olun:
- ✅ Her HTML belgesinin neden bir DOCTYPE bildirimine ihtiyaç duyduğu
- ✅ `` kök öğesinin ne içerdiği
- ✅ Bu yapının tarayıcıların sayfaları doğru bir şekilde işlemesine nasıl yardımcı olduğu
**Hızlı Kendini Test Et**: "Standartlara uygun işleme"nin ne anlama geldiğini kendi kelimelerinizle açıklayabilir misiniz?
## Temel Belge Meta Verilerini Eklemek
Bir HTML belgesinin `` bölümü, tarayıcıların ve arama motorlarının ihtiyaç duyduğu ancak ziyaretçilerin doğrudan sayfada görmediği önemli bilgileri içerir. Bunu, web sayfanızın düzgün çalışmasını ve farklı cihazlar ve platformlar arasında doğru şekilde görünmesini sağlayan "sahne arkası" bilgileri olarak düşünün.
Bu meta veriler, tarayıcılara sayfanızı nasıl görüntüleyeceğini, hangi karakter kodlamasını kullanacağını ve farklı ekran boyutlarını nasıl işleyeceğini söyler – profesyonel, erişilebilir web sayfaları oluşturmak için gerekli olan her şey.
### Görev: Belge Başlığını Ekleyin
Açılış ve kapanış `` etiketlerinizin arasına bu `` bölümünü ekleyin:
```html
Welcome to my Virtual Terrarium
```
**Her öğenin ne yaptığını açıklamak:**
- Tarayıcı sekmelerinde ve arama sonuçlarında görünen sayfa başlığını ayarlar
- Dünya çapında doğru metin görüntüleme için UTF-8 karakter kodlamasını belirtir
- Modern Internet Explorer sürümleriyle uyumluluğu sağlar
- Görüntüleme içeriğini doğal boyutta göstermek için başlangıç yakınlaştırma seviyesini ayarlar
> 🤔 **Bunu Düşünün**: Eğer şu şekilde bir viewport meta etiketi ayarlarsanız: `` ne olurdu? Bu, sayfanın her zaman 600 piksel genişliğinde olmasını zorlar ve duyarlı tasarımı bozar! [Doğru viewport yapılandırması](https://developer.mozilla.org/docs/Web/HTML/Viewport_meta_tag) hakkında daha fazla bilgi edinin.
## Belge Gövdesini Oluşturmak
Bir HTML belgesinin `` öğesi, web sayfanızın tüm görünen içeriğini – kullanıcıların göreceği ve etkileşimde bulunacağı her şeyi – içerir. `` bölümü tarayıcıya talimatlar verirken, `` bölümü gerçek içeriği içerir: metin, resimler, düğmeler ve kullanıcı arayüzünüzü oluşturan diğer öğeler.
Haydi gövde yapısını ekleyelim ve HTML etiketlerinin anlamlı içerik oluşturmak için nasıl birlikte çalıştığını anlayalım.
### HTML Etiket Yapısını Anlama
HTML, öğeleri tanımlamak için eşleştirilmiş etiketler kullanır. Çoğu etiket, `
` gibi bir açılış etiketi ve `
` gibi bir kapanış etiketi içerir ve arasında içerik bulunur: `
Merhaba, dünya!
`. Bu, "Merhaba, dünya!" metnini içeren bir paragraf öğesi oluşturur.
### Görev: Gövde Elemanını Ekleyin
HTML dosyanızı `` öğesini içerecek şekilde güncelleyin:
```html
Welcome to my Virtual Terrarium
```
**Bu tam yapı ne sağlar:**
- Temel HTML5 belge çerçevesini oluşturur
- Doğru tarayıcı işleme için gerekli meta verileri içerir
- Görünen içeriğiniz için boş bir gövde oluşturur
- Modern web geliştirme en iyi uygulamalarını takip eder
Artık teraryumunuzun görünen öğelerini eklemeye hazırsınız. Farklı içerik bölümlerini organize etmek için `
` öğelerini konteyner olarak kullanacağız ve bitki resimlerini göstermek için `` öğelerini ekleyeceğiz.
### Resimlerle ve Düzen Konteynerleriyle Çalışmak
Resimler HTML'de özeldir çünkü "kendini kapatan" etiketler kullanırlar. `` gibi içerik etrafında sarılan öğelerden farklı olarak, `` etiketi, `src` gibi dosya yolu ve `alt` gibi erişilebilirlik bilgilerini içeren tüm bilgileri kendi içinde barındırır.
Resimleri HTML'ye eklemeden önce, proje dosyalarınızı düzgün bir şekilde organize etmeniz gerekir. Bunun için bir `images` klasörü oluşturup bitki grafiklerini ekleyeceksiniz.
**Önce resimlerinizi ayarlayın:**
1. Teraryum proje klasörünüzün içinde `images` adında bir klasör oluşturun
2. [çözüm klasöründen](../../../../3-terrarium/solution/images) bitki resimlerini indirin (toplamda 14 bitki resmi)
3. Tüm bitki resimlerini yeni `images` klasörünüze kopyalayın
### Görev: Bitki Görüntüleme Düzeni Oluşturun
Şimdi `` etiketlerinizin arasına iki sütunda düzenlenmiş bitki resimlerini ekleyin:
```html
```
**Adım adım bu kodda neler oluyor:**
- Tüm içeriği barındıracak `id="page"` ile bir ana sayfa konteyneri oluşturur
- İki sütun konteyneri oluşturur: `left-container` ve `right-container`
- Sol sütunda 7 bitki ve sağ sütunda 7 bitki düzenler
- Her bitki resmini bireysel konumlandırma için bir `plant-holder` div içine sarar
- Bir sonraki derste CSS stil uygulaması için tutarlı sınıf adları kullanır
- Her bitki resmine JavaScript etkileşimi için benzersiz kimlikler atar
- Resim klasörüne işaret eden doğru dosya yollarını içerir
> 🤔 **Bunu Düşünün**: Tüm resimlerin şu anda "plant" şeklinde aynı alt metni olduğunu fark ettiniz mi? Bu erişilebilirlik için ideal değil. Ekran okuyucu kullanıcıları "bitki" kelimesini 14 kez tekrar tekrar duyacak ve her bir resmin hangi bitkiyi gösterdiğini bilemeyecek. Her resim için daha iyi, daha açıklayıcı alt metinler düşünebilir misiniz?
> 📝 **HTML Eleman Türleri**: `
` öğeleri "blok düzeyinde"dir ve tam genişlik kaplar, `` öğeleri ise "satır içi"dir ve yalnızca gerekli genişliği kaplar. Tüm bu `
` etiketlerini `` etiketlerine değiştirirseniz ne olacağını düşünüyorsunuz?
### 🔄 **Pedagojik Kontrol**
**Yapı Anlayışı**: HTML yapınızı gözden geçirmek için bir an durun:
- ✅ Düzeninizdeki ana konteynerleri tanımlayabilir misiniz?
- ✅ Her resmin neden benzersiz bir kimliğe sahip olduğunu anlıyor musunuz?
- ✅ `plant-holder` divlerinin amacını nasıl tanımlarsınız?
**Görsel İnceleme**: HTML dosyanızı bir tarayıcıda açın. Şunları görmelisiniz:
- Basit bir bitki resimleri listesi
- İki sütunda düzenlenmiş resimler
- Basit, stil verilmemiş bir düzen
**Unutmayın**: Bu sade görünüm, CSS stil eklenmeden önce HTML'in tam olarak nasıl görünmesi gerektiğidir!
Bu işaretleme eklendiğinde, bitkiler ekranda görünecek, ancak henüz cilalı görünmeyecek – bunun için bir sonraki derste CSS kullanılacak! Şimdilik, içeriğinizi düzgün bir şekilde organize eden ve erişilebilirlik en iyi uygulamalarını takip eden sağlam bir HTML temeline sahipsiniz.
## Erişilebilirlik için Semantik HTML Kullanımı
Semantik HTML, HTML öğelerini yalnızca görünümlerine göre değil, anlamlarına ve amaçlarına göre seçmek anlamına gelir. Semantik işaretleme kullandığınızda, içeriğinizin yapısını ve anlamını tarayıcılara, arama motorlarına ve ekran okuyucular gibi yardımcı teknolojilere iletiyorsunuz.
```mermaid
flowchart TD
A[Need to add content?] --> B{What type?}
B -->|Main heading| C["