Sobes.tech
Middle

CSS'de öğeleri merkezlemenin farklı yolları nelerdir ve her birini ne zaman kullanmak daha iyidir?

sobes.tech yapay zeka

AI'dan gelen yanıt

CSS'te öğeleri ortalamak için birkaç yaklaşım vardır ve hangisinin kullanılacağı bağlama bağlıdır: öğe tipi (satır içi vs blok), içeriğin dikkate alınması gerekliliği, belge akışındaki konumu ve gereken uyarlanabilirlik.

  1. Satır içi öğeler için: text-align: center; özelliği ebeveyn blok üzerinde kullanılır.

    • Ne zaman kullanılır: Metin, resim veya diğer satır içi veya satır içi blok öğeleri bir blok kapsayıcı içinde ortalamak istediğinizde.

    • Örnek:

      .container {
        text-align: center; /* Satır içi öğeleri ortalar */
      }
      
  2. Satır içi blok öğeleri için: Ayrıca text-align: center; ebeveyn blok üzerinde uygundur.

    • Ne zaman kullanılır: Satır gibi davranan blokları (örneğin, düğmeler, ikonlar, display: inline-block; olan listeler) ortalamak istediğinizde.
  3. Blok öğeleri için:

    • margin: auto; kullanımı: Bu, blok öğenin kendisine uygulanır. Öğenin genişliğinin belirtilmesi gerekir (width: auto; ile blok ortalanamaz).
      • Ne zaman kullanılır: Belirli veya maksimum genişliğe sahip blokların yatayda ortalanması için en basit ve yaygın yöntem.

      • Örnek:

        .centered-block {
          width: 50%; /* veya sabit genişlik, örn. 300px */
          margin: 0 auto; /* Yatay ortalama */
        }
        
    • Flexbox kullanımı: Hem yatay hem de dikey ortalamayı sağlar.
      • Ne zaman kullanılır: Esnek hizalama ve düzenleme gerektiğinde. Bir veya birkaç öğeyi ortalamak için idealdir.

      • Örnek: (Çocuk öğeyi ebeveynin ortasında ortalamak)

        .container {
          display: flex;
          justify-content: center; /* Yatay ortalama */
          align-items: center; /* Dikey ortalama */
          height: 100vh; /* Örnek, konteyner yüksekliği */
        }
        
    • Grid Layout kullanımı: Ayrıca iki boyutlu hizalama için güçlü imkanlar sunar.
      • Ne zaman kullanılır: Daha karmaşık iki boyutlu düzenler veya bir öğeyi belirli bir ızgara hücresinde ortalamak istiyorsanız.

      • Örnek: (Bir ızgara hücresinde ortalama)

        .container {
          display: grid;
          place-items: center; /* align-items ve justify-items için kısaltma */
          height: 100vh;
        }
        
  4. Dikey ortalama (bloklar için ek yöntemler):

    • Mutlak konumlandırma ve transform kullanımı: Öğeyi mutlak konumlandırılır, ebeveynin üst ve sol kenarından %50 kaydırılır, sonra transform ile öğenin genişliğinin ve yüksekliğinin yarısına ayarlanır. position: relative; ebeveyn üzerinde gereklidir.
      • Ne zaman kullanılır: Bir öğeyi başka bir öğenin üzerine bindirmek veya diğer yöntemlerin uygun olmadığı durumlarda (örneğin, modal pencereler, açılır ipuçları). Öğeyi normal akıştan çıkarır.

      • Örnek:

        .parent {
          position: relative; /* Çocuk öğe için önemli */
          height: 200px; /* Örnek */
        }
        
        .child {
          position: absolute;
          top: 50%;
          left: 50%;
          transform: translate(-50%, -50%); /* Yükseklik ve genişliğin %50'sine kaydırma */
          width: 100px;
          height: 100px;
        }
        
    • line-height kullanımı: Sadece tek satırlık metni dikeyde ortalamak için uygundur. Blok yüksekliği ile line-height eşit olmalıdır.
      • Ne zaman kullanılır: Basit durumlar için, tek satır metni dikey olarak hizalamak istiyorsanız (örneğin, düğmeler veya ikonlar ile etiketler).

      • Örnek:

        .single-line {
          height: 50px;
          line-height: 50px; /* height ile aynı olmalı */
        }
        
    • Hayalet öğe ve vertical-align kullanımı: :before veya :after pseudo-elementleri ile display: inline-block; ve height: 100%; kullanımı, vertical-align: middle; ile öğeyi ortalamak için.
      • Ne zaman kullanılır: Daha az yaygın olmakla birlikte, belirli durumlarda faydalı olabilir, özellikle Flexbox veya Grid kullanılamadığı veya uygun olmadığı eski tarayıcı desteği gibi durumlarda.

Özet tablo:

Yöntem Yatay Dikey Öğe Türü Özellikler
text-align: center; Evet Hayır Satır içi, inline-block Ebeveyn üzerinde.
margin: auto; Evet Hayır Blok (genişlik ile) Öğenin kendisinde. Basit ve güvenilir yöntem.
Flexbox Evet Evet Flex öğeleri Esnek hizalama, tek bir eksen veya tek öğe ortalamak için iyi.
Grid Layout Evet Evet Grid öğeleri Güçlü, karmaşık iki boyutlu düzenler ve hücrede ortalamalar için uygun.
Mutlak konum + transform Evet Evet Herhangi Akıştan çıkarır. Üst üste bindirme için uygundur.
line-height Hayır Evet Tek satır metin Sadece tek satır için, sabit yükseklik gerektirir.
Hayalet öğe + vertical-align Hayır Evet Çeşitli Daha az yaygın, uyumluluk için kullanılabilir.

Yöntem seçimi, görevin özel durumuna bağlıdır. Modern geliştirmede, Flexbox ve Grid, esneklikleri ve her iki yönde de hizalama kapasiteleri nedeniyle tercih edilir. margin: auto; yatay blok ortalamada standart kalır. text-align: center; satır içi öğeler için kullanılır.