Açıklama ve Örnekler

Konteyner Yapılandırma Etiketleri

Web sayfasını yönetilebilir parçalara ayırarak, düzen (layout) oluşturmayı ve CSS ile stil vermeyi sağlayan temel gruplama araçlarıdır.

Ana Konu

HTML Konteyner Etiketleri Yapısal Gruplama ve Tasarım Esnekliği

Genel Açıklama

HTML5'in getirdiği modern vizyon, web sayfalarının semantik etiketlerle ( <header>, <article>, <nav> ) inşa edilmesini teşvik etse de, bir web sayfasının görsel düzenini ve dinamik davranışlarını yönetmek için "yapısal esnekliğe" ihtiyaç vardır.

İşte Konteyner Yapılandırma Etiketleri, bu esnekliği sağlayan, web sayfasını CSS ve JavaScript için kolayca hedef alınabilir, yönetilebilir ve stillendirilebilir küçük parçalara ayıran temel araçlardır.

Bu grup, içeriğin ne olduğunu değil, içeriğin nasıl gruplandığını belirler.

Anlamsızlığın Gücü ve Modern Web'deki Yeri

Bu grubun üyeleri ( özellikle <div> ve <span> ), teknik literatürde "anlamsız" veya "nötr" etiketler olarak tanımlanır.

Bu tanım olumsuz bir özellik değildir; aksine, bu etiketlerin en büyük gücüdür.

Bu etiketler, tarayıcılara veya arama motorlarına içlerindeki verinin bir makale, başlık veya adres olduğunu söylemezler.

Bunun yerine, sadece "burada bir grup element var" veya "burada ayrılması gereken bir metin parçası var" mesajını verirler.

Bu nötr yapı, geliştiricilere sayfa düzenini oluştururken sınırsız bir özgürlük alanı tanır.

Stil (CSS) ve Davranış (JavaScript) İçin Temel Kancalar

Modern web geliştirmede bu konteynerler, tasarım ve etkileşimin omurgasını oluşturur.

Bir geliştirici, sayfanın belirli bir bölümüne arka plan rengi vermek, bir ızgara sistemi kurmak veya metin içindeki bir kelimeyi renklendirmek istediğinde, bu etiketleri class ve id nitelikleri ile donatarak CSS için birer kanca haline getirir.

Benzer şekilde, JavaScript ile bir menüyü açıp kapatmak, bir uyarı kutusunu gizlemek veya dinamik verileri ekrana basmak için gereken hedef noktalar, genellikle bu konteyner etiketleri aracılığıyla belirlenir.

Semantik etiketler ( <article>, <section> ) sayfanın makro yapısını ve anlamını kurarken; <div> ve <span> gibi konteynerler, bu yapının içindeki mikro düzenlemeleri ve görsel süslemeleri üstlenir.

Yani bu etiketler semantik yapının alternatifi değil, onu tamamlayan ve görselleştiren yardımcı aktörlerdir.

Seviye 4

Html <div> Etiketleri Genel Amaçlı Blok Konteyner ve Düzen Yapıtaşı

Genel Açıklama

<div> ( Division - Bölümleme ) etiketi, HTML belgesi içerisindeki akışı mantıksal bölümlere ayırmak ve içerikleri gruplandırmak için kullanılan, blok seviyesinde çalışan genel amaçlı bir kapsayıcıdır.

Web sayfalarının görsel iskeletini oluştururken en sık başvurulan elementtir; ancak gücü, kendi taşıdığı anlamdan değil, taşıdığı "anlamsızlıktan" gelir.

Blok Seviyesi Davranış

<div> etiketi, blok seviyesinde çalışan bir elementtir.

Bu davranış, elementin bulunduğu satırın tamamını kaplaması ve kendisinden sonra gelen içeriği otomatik olarak yeni bir satıra itmesi anlamına gelir.

Bu özellik sayesinde <div> etiketleri, sayfa düzenlerinin oluşturulmasında doğal bir yapı taşı olarak kullanılır.

Semantik Olmayan (Non-Semantic) Yapı ve Son Çare Prensibi

<div> etiketi, tarayıcılara veya arama motorlarına içeriği hakkında hiçbir bilgi vermez.

İçinde bir makale mi, bir menü mü yoksa bir reklam mı olduğunu belirtmez; sadece "burada bir grup var" mesajını verir.

HTML5 standartlarında, <header> , <footer>, <article> veya <section> gibi semantik etiketlerin kullanımı önceliklidir.

<div> etiketi, yalnızca içeriği tanımlayacak daha uygun bir semantik etiket bulunamadığında veya sadece görsel stil ve düzenleme amacıyla bir kapsayıcıya ihtiyaç duyulduğunda kullanılmalıdır.

Bu prensip, kodun temizliği ve SEO kalitesi için kritiktir.

CSS Düzenleri ve Modern Mimarideki Rolü

Modern web tasarımında <div> etiketinin asıl görevi, CSS Flexbox ve CSS Grid gibi gelişmiş düzenleme sistemleri için bir "iskelet" oluşturmaktır.

Bir sayfayı sütunlara bölmek, içerikleri ortalamak veya karmaşık ızgara yapıları kurmak için elementler <div> kapsayıcıları içine alınır.

Ayrıca, id ve class nitelikleri ile donatıldığında, JavaScript için sayfadaki belirli bölgeleri hedefleme veya dinamik içerik yükleme , işlemlerinde birincil hedef noktası olarak işlev görür.

Yaygın Kullanım Deseni

Modern web uygulamalarında <div> etiketleri genellikle "layout wrapper" olarak kullanılır.

Bu yaklaşımda sayfanın belirli bölümleri ( header, content, sidebar, footer ) ayrı kapsayıcılar içinde düzenlenir.

Bu yapı, CSS ile karmaşık düzenlerin yönetilmesini ve bileşen tabanlı mimarilerin kurulmasını kolaylaştırır.

Bilinmeyen Yönler: "Div Çorbası" ve Erişilebilirlik Nötrlüğü

<div> etiketinin aşırı ve gereksiz kullanımı, "Div Soup" olarak adlandırılan, okunması zor ve performansı düşüren bir kod yapısına yol açabilir.

Gereksiz iç içe geçmiş onlarca <div>, tarayıcının sayfayı oluşturma süresini uzatabilir.

Erişilebilirlik açısından bakıldığında ise <div>, nötr bir elementtir.

Ekran okuyucular, <div> etiketlerini kullanıcıya duyurmazlar.

Ancak bir <div> etkileşimli bir öğe gibi kullanılacaksa, mutlaka role ( role="button" ) ve tabindex nitelikleri ile zenginleştirilmelidir.

</>
HTML <div> Etiketi Uygulama Örneği 1 ( )
<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <title>Div Etiketi Örneği</title>
    <style>
        .kapsayici { 
            width: 80%; 
            margin: 20px auto; 
            padding: 15px;
            border: 1px solid #ccc; 
        }
    </style>
</head>
<body>

    <div class="kapsayici">
        <h2>Hizmetlerimiz</h2>
        <p>Bu div, başlık ve paragrafı tek bir alanda gruplar.</p>
        <p>Tüm içeriğe kapsayici sınıfındaki stiller uygulanır.</p>
    </div>
    
    <p>Bu paragraf div'den sonra yeni bir satırda başlar.</p>

</body>
</html>
</>
HTML <div> Etiketi Uygulama Örneği 2 (+)
<!DOCTYPE html>
<html lang="tr">

<head>
    <meta charset="UTF-8">
    <title>Div Yapılandırma Örneği</title>
    <link rel="stylesheet" href="style.css?v=1.0.150">
</head>

<body>

    <div class="task-card">

        <div class="priority-strip"></div>

        <div class="card-content">
            <div class="task-id">#TASK-1024</div>
            <div class="task-title">Web Sitesi Ana Sayfa Tasarımı</div>

            <div class="tags-group">
                <div class="tag">Frontend</div>
                <div class="tag">Tasarım</div>
            </div>
        </div>

        <div class="divider"></div>

        <div class="card-footer">
            <div class="user-avatar">AD</div>
            <div class="date">2 gün kaldı</div>
        </div>

    </div>

</body>

</html>
body {
    font-family: 'Segoe UI', sans-serif;
    background-color: #f0f2f5;
    display: flex;
    justify-content: center;
    padding: 50px;
}

.task-card {
    background-color: #fff;
    width: 300px;
    border-radius: 8px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
    overflow: hidden;
    border: 1px solid #e1e4e8;
}

.priority-strip {
    height: 6px;
    background-color: #e74c3c;
    width: 100%;
}

.card-content {
    padding: 20px;
}

.task-id {
    color: #7f8c8d;
    font-size: 0.85em;
    margin-bottom: 5px;
}

.task-title {
    font-weight: bold;
    color: #2c3e50;
    margin-bottom: 15px;
    font-size: 1.1em;
}

.tags-group {
    display: flex;
    gap: 8px;
    margin-bottom: 20px;
}

.tag {
    background-color: #e8f6f3;
    color: #1abc9c;
    padding: 4px 10px;
    border-radius: 4px;
    font-size: 0.75em;
    font-weight: bold;
    text-transform: uppercase;
}

.divider {
    height: 1px;
    background-color: #f0f0f0;
    margin: 0 20px;
}

.card-footer {
    padding: 15px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.user-avatar {
    width: 30px;
    height: 30px;
    background-color: #3498db;
    color: white;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8em;
    font-weight: bold;
}

.date {
    font-size: 0.8em;
    color: #95a5a6;
}
Seviye 4

Html <span> Etiketi Satır İçi (Inline) Kapsayıcı ve Metin Manipülasyonu

Genel Açıklama

<span> etiketini anlamanın en iyi yolu, onu <div> ile kıyaslamaktır.

<div> etiketi blok seviyesinde çalışır, tüm satırı kaplar ve içeriği yeni bir satıra iter.

Ancak <span> etiketi, "Satır İçi" bir elementtir; akışın doğal şekilde korunmasını sağlar ve yalnızca kapsadığı içerik kadar genişlik kaplar.

<span>, tıpkı <div> gibi anlamsal bir değer taşımaz; CSS veya JavaScript ile stil ve işlevsellik eklemek için ideal bir nötr kapsayıcıdır.

Akışın Korunması: <span>, içerisine aldığı metni veya nesneyi yeni bir satıra taşımaz.

Sadece içeriği kadar ( kelime veya harf kadar) genişlik kaplar ve paragrafın doğal akışı içinde kalmayadevam eder.

Kapsam: Bir paragrafın tamamını değil, paragrafın içindeki tek bir kelimeyi, bir harfi veya bir simgeyi hedeflemek için kullanılır.

Semantik Olmayan (Nötr) Yapı ve Kullanım Gücü

Tıpkı <div> gibi, <span> etiketi de anlamsal bir değer taşımaz.

<strong> veya <em> etiketlerinin aksine, tarayıcıya veya arama motorlarına içeriğin ne olduğu hakkında bir mesaj vermez.

Bu nötr yapı, geliştiricilere içeriğin anlamını değiştirmeden sadece görsel stil veya işlevsellik eklemek istediklerinde büyük bir özgürlük sunar.

CSS Stil Kancası (Styling Hook):

Bir cümlenin ortasındaki tek bir kelimeyi renklendirmek, fontunu değiştirmek veya arka planına fosforlu kalem efekti vermek için o kelime <span> içine alınır ve CSS ile hedeflenir.

JavaScript Hedef Noktası:

Dinamik web uygulamalarında, sayfanın tamamını yenilemeden sadece belirli bir veriyi güncellemek için o veri <span> etiketi içinde tutulur.

( Sepetinizdeki ürün sayısını güncellemek. )

JavaScript, id veya class aracılığıyla doğrudan bu noktaya ulaşır ve içeriği anlık olarak değiştirir.

İkon ve Simgeler: Modern web tasarımlarında ikon setleri genellikle <span> etiketleri kullanılarak sayfa akışına yerleştirilir.

ARIA Rolleri ve Erişilebilirlik <span> etiketleri, etkileşimli öğe gibi kullanılacaksa role ve aria-label gibi ARIA nitelikleri ile zenginleştirilebilir.

Örnek:

</>
HTML <span> Etiketi Uygulama Örneği 1 ( )
<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <title>Span Etiketi Örneği</title>
    <style>
        .vurgu {
            color: #e74c3c; /* Kırmızı renk */
            font-weight: bold;
        }
    </style>
</head>
<body>

    <p>
        Bu cümlenin sadece 
        <span class="vurgu">çok önemli</span>
        olan bu kısmı kırmızı renkte görünecektir.
    </p>

</body>
</html>
</>
HTML <div> Etiketi Uygulama Örneği 2 (+)
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Span Temel Örnek</title>
    <link rel="stylesheet" href="style.css?v=1.0.150">
</head>

<body>
    <div class="container">
        <h3>Kullanıcı Paneli</h3>

        <p>
            Merhaba, <span class="kullanici-adi">Ahmet Yılmaz</span>.
        </p>

        <p>
            Hesap Durumunuz: <span class="durum">Aktif</span>
        </p>

        <p style="color: #666; font-size: 0.9em;">
            (Not: Span etiketleri satırı bölmedi, metin akışı devam ediyor.)
        </p>
    </div>
</body>

</html>
body {
    font-family: Arial, sans-serif;
    background-color: #f4f4f4;
    padding: 40px;
}

.container {
    background-color: #fff;
    padding: 20px;
    border-radius: 5px;
    border-left: 5px solid #3498db;
    width: 400px;
    margin: 0 auto;
}

.kullanici-adi {
    color: #3498db;
    font-weight: bold;
}

.durum {
    background-color: #2ecc71;
    color: white;
    padding: 3px 8px;
    border-radius: 4px;
    font-size: 0.85em;
}
Seviye 4

Html <iframe> Etiketi Sayfa İçinde Sayfa ve Harici İçerik

Genel Açıklama

<iframe> ( Inline Frame - Satır İçi Çerçeve ) etiketi, mevcut bir web sayfasının içerisine başka bir HTML belgesini , harici bir web sitesini veya medya kaynağını gömmek için kullanılan güçlü bir yapısal elementtir.

Bu etiket, kelimenin tam anlamıyla sayfanızda "bir pencere açar" ve bu pencerenin içinde tamamen farklı bir kaynaktan gelen içeriğin görüntülenmesini sağlar.

Bu yapı, ana sayfanın içeriği ile gömülen içeriğin ( bir YouTube videosu veya Google Haritası gibi ) birbirinden

izole bir şekilde çalışmasına olanak tanır.

Kullanım Alanları ve İçerik İzolasyonu

<iframe> etiketinin web ekosistemindeki en yaygın kullanım amacı, harici servisleri siteye entegre etmektir.

Bir geliştirici, karmaşık sistemleri sıfırdan yazmak yerine, YouTube , Vimeo veya Google Haritala gibi servislerin sağladığı hazır kodları kullanarak bu özellikleri saniyeler içinde sayfasına ekleyebilir.

Ayrıca, web sitelerindeki reklam alanları ve sosyal medya widget'ları da genellikle iframe teknolojisi ile çalışır.

Bunun temel nedeni izolasyon yapısından gelir, iframe içindeki CSS stilleri veya JavaScript kodları ana sayfayı etkilemez.

Bu, teknik çatışmaları önleyen güvenli bir bariyer oluşturur.

Temel Nitelikler ve Güvenlik Yönetimi

Bir <iframe> elementinin çalışabilmesi için en temel nitelik, gömülecek içeriğin adresini belirten src niteliğidir.

Çerçevenin sayfada kaplayacağı alan ise width ve height nitelikleri ile belirlenir.

Ancak iframe kullanımında en kritik konu güvenliktir.

Harici bir siteyi dahil etmek riskli olabilir; bu nedenle sandbox niteliği kullanılarak gömülen içeriğin yetkileri

( script çalıştırma, pop-up açma vb. ) kısıtlanabilir.

Benzer şekilde, allow niteliği ile bu çerçevenin kamera, mikrofon veya tam ekran özelliklerine erişip erişemeyeceği kontrol edilir.

Bu özellikler, iframe'i güvenli bir şekilde kullanmanızı ve sitenizin güvenliğini riske atmamanızı sağlar.

Performans ve Lazy Loading

<iframe> etiketleri, harici içerikleri yüklediği için sayfa performansını doğrudan etkileyebilir.

Özellikle video, harita veya reklam gibi ağır içerikler sayfanın ilk yüklenme süresini artırabilir.

Modern HTML standartlarında bu sorunu azaltmak için loading="lazy" niteliği kullanılabilir.

Bu özellik sayesinde iframe içeriği, kullanıcı sayfada o bölüme yaklaşana kadar yüklenmez ve sayfa performansı önemli ölçüde iyileştirilir.

Tarayıcı Güvenlik Politikaları

Modern tarayıcılar güvenlik nedeniyle her web sitesinin iframe içinde görüntülenmesine izin vermez.

Birçok site, X-Frame-Options veya Content Security Policy başlıkları kullanarak kendi içeriklerinin başka siteler içinde gömülmesini engelleyebilir.

Bu nedenle bazı web siteleri iframe içinde çalışmayabilir veya güvenlik hatası verebilir.

Bu mekanizma, clickjacking gibi saldırı türlerine karşı önemli bir güvenlik önlemidir.

</>
HTML <iframe> Etiketi Uygulama Örneği 1 ( )
<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <title>Iframe Etiketi Örneği</title>
</head>   
<body>

    <h2>Harici Sayfa Gömme Örneği</h2>
    
    <iframe 
        src="https://www.ornek-harici-site.com" 
        title="Harici İçerik Çerçevesi"
        width="800" 
        height="500" 
        style="border: 1px solid #333;">
        Tarayıcınız iframe'leri desteklemiyor.
    </iframe>
    
    <p>Gömülen sayfanın içeriği, bu çerçeve içinde bağımsız olarak görüntülenir.</p>

</body>
</html>
</>
HTML <iframe> Etiketi Uygulama Örneği 2 (+)
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>İframe Etiketi Örnek</title>
    <link rel="stylesheet" href="style.css?v=1.0.150">
</head>

<body>
    <div class="container-card">
        <h3>Ana Sayfa (Light Mode)</h3>

        <iframe srcdoc="
                    <!DOCTYPE html>
                    <html>
                    <head>
                        <style>
                            /* IFRAME İÇİ STİLLER (Dark Mode) */
                            body { 
                                font-family: 'Courier New', monospace; 
                                background: #2d3436; /* Koyu Arka Plan */
                                color: #dfe6e9; /* Açık Yazı */
                                padding: 20px; 
                                margin: 0; 
                                display: flex;
                                flex-direction: column;
                                justify-content: center;
                                height: 100%;
                                box-sizing: border-box;
                            }
                            h4 { 
                                color: #00cec9; /* Turkuaz Başlık */
                                margin-top: 0; 
                                border-bottom: 1px dashed #636e72;
                                padding-bottom: 10px;
                            }
                            ul {
                                list-style-type: square;
                                padding-left: 20px;
                            }
                            li { margin-bottom: 5px; }
                            .badge {
                                background-color: #e17055;
                                color: white;
                                padding: 2px 6px;
                                border-radius: 3px;
                                font-size: 0.8em;
                            }
                        </style>
                    </head>
                    <body>
                        <h4>Iframe Alanı (Dark Mode)</h4>
                        <p>Bu alan dış dünyadan izole edilmiştir.</p>
                        <ul>
                            <li>CSS Etkilenmez <span class='badge'>Güvenli</span></li>
                            <li>Bağımsız DOM Yapısı</li>
                            <li>Özel Scrollbar</li>
                        </ul>
                    </body>
                    </html>
                ">
        </iframe>

        <p class="note">
            Yukarıdaki koyu alan, <code>srcdoc</code> niteliği ile oluşturulmuş bağımsız bir belgedir.
        </p>
    </div>

</body>

</html>
body {
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    background-color: #f4f7f6;
    display: flex;
    justify-content: center;
    padding: 40px;
    color: #333;
}

.container-card {
    background-color: #fff;
    width: 500px;
    padding: 30px;
    border-radius: 12px;
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.05);
    border-top: 5px solid #3498db;
}

h3 {
    margin-top: 0;
    color: #2c3e50;
    border-bottom: 1px solid #eee;
    padding-bottom: 15px;
    margin-bottom: 20px;
}

iframe {
    width: 100%;
    height: 220px;
    border: 2px solid #e1e4e8;
    border-radius: 8px;
    display: block;
    transition: border-color 0.3s;
}

iframe:hover {
    border-color: #bdc3c7;
}

.note {
    margin-top: 15px;
    font-size: 0.85em;
    color: #7f8c8d;
    background-color: #f8f9fa;
    padding: 10px;
    border-radius: 5px;
    text-align: center;
}