Elemanları ekran üzerinde istediğimiz yere konumlandırmak ve modern, esnek düzenler (layout) oluşturmak için neler yapabiliriz inceleyelim.

1. Display Özelliği: Elementler Nasıl Davranır?

Her HTML elementinin varsayılan bir display değeri vardır. Bu özellik, bir elementin kutu modeline göre nasıl davranacağını ve diğer elementlerle nasıl yan yana geleceğini kontrol eder. En önemli üç değeri:

block: Element bir blok kutu gibi davranır.

Her zaman bir alt satırdan başlar.

width ve height değerleri verilebilir.

Örnekler: <div>, <h1> - <h6>, <p>, <header>, <footer>

inline: Element bir metin parçası gibi davranır.

Bir sonraki element hemen yanında yer alır.

width ve height değerleri verilemez.

Örnekler: <span>, <a>, <strong>, <em>

inline-block: İki dünyanın en iyisi!

Elementler yan yana dizilir (inline gibi).

width ve height değerleri verilebilir (block gibi).

Örnekler: <img>, <button>, <input>

.blok-element {
    display: block;
    width: 200px;
    height: 100px;
    background-color: lightblue;
    margin: 10px;
}

.inline-element {
    display: inline; /* width ve height çalışmaz */
    background-color: lightcoral;
    margin: 10px;
}

.inline-blok-element {
    display: inline-block; /* width ve height ÇALIŞIR! */
    width: 100px;
    height: 50px;
    background-color: lightgreen;
    margin: 10px;
}

2. Position Özelliği: Elementleri Konumlandırma Sanatı

position özelliği, bir elementin sayfa akışı içinde veya bir diğer elemente göre nasıl konumlandırılacağını belirler.

static (Varsayılan): Element normal sayfa akışında konumlanır. top, right, bottom, left özellikleri işe yaramaz.

relative: Elementi normal konumuna göreceli olarak kaydırır.

top, right, bottom, left özellikleri kullanılır.

Orijinal yerini korur, diğer elementler kaydırılmış halini görmezden gelir.

absolute: Elementi en yakın konumlandırılmış (positioned) atağına (position değeri static olmayan) göre mutlak olarak konumlandırır.

Eğer yoksa, sayfanın başlangıcına (<html>) göre konumlanır.

Normal akıştan tamamen çıkar, yerini başka elementler doldurur.

fixed: Elementi görünür alana (ekrana) göre sabitler. Sayfa kaydırılsa bile hep aynı yerde kalır (örneğin, sabit menüler).

sticky: relative ve fixed arasında geçiş yapar. Belirli bir kaydırma noktasına kadar relative gibi davranır, sonra fixed gibi sabitlenir (örneğin, yapışkan başlıklar).

.kutu {
    position: relative; /* Ata element */
    width: 400px;
    height: 200px;
    background-color: #eee;
}

.icerdeki-kutu {
    position: absolute;
    bottom: 20px;
    right: 20px;
    width: 100px;
    height: 50px;
    background-color: coral;
}

3. Flexbox'a Kısa Bir Giriş (Modern Layout'un Süper Kahramanı)

Geleneksel float ve position ile layout oluşturmak zordu. Flexbox, elementleri tek boyutlu (ya yatay ya dikey) olarak esnek bir şekilde hizalamak ve dağıtmak için tasarlanmış çok daha güçlü bir modüldür.

Temel prensip: Bir container (taşıyıcı) display: flex; yapılır. İçindeki direkt çocuk elementler (items - öğeler) otomatik olarak esnek hale gelir.

<div class="flex-container">
    <div class="flex-item">1</div>
    <div class="flex-item">2</div>
    <div class="flex-item">3</div>
</div>

 

.flex-container {
    display: flex; /* Flexbox'ı etkinleştir */
    background-color: DodgerBlue;
    justify-content: center; /* Yatayda hizala (main axis) */
    align-items: center; /* Dikeyde hizala (cross axis) */
    height: 200px;
}

.flex-item {
    background-color: #f1f1f1;
    margin: 10px;
    padding: 20px;
    font-size: 30px;
}

Önemli Flex Container Özellikleri:

justify-content: Öğeleri ana eksende (genellikle yatay) hizalar.

align-items: Öğeleri çapraz eksende (genellikle dikey) hizalar.

flex-direction: Ana eksenin yönünü belirler (row, column).

4. Hover Pseudo-Classı: Fareyle Üzerine Gelince

Bir elementin fare imleciyle üzerine gelindiğinde stil değiştirmesini sağlar. Etkileşimli ve dinamik arayüzler oluşturmanın temel taşıdır.

/* Normal durum */
.btn {
    background-color: blue;
    color: white;
    padding: 10px 20px;
    transition: background-color 0.3s; /* Geçiş efekti için */
}

/* Fare üzerine geldiğinde (HOVER) */
.btn:hover {
    background-color: darkblue;
    cursor: pointer; /* İmleci el işaretine çevirir */
}