Hızlı cevap: ebeveynde text-align
Bir <img> satır içi bir elementtir: bir metin satırında bir kelime gibi durur. Bu yüzden onu metni ortaladığın gibi, ebeveynine text-align: center vererek ortalarsın:
Stil resme değil, div'e verilir. text-align: center'ı <img>'nin kendisine vermek hiçbir şey yapmaz, çünkü resmin içinde hizalanacak metin yoktur.
Yöntem 2: display block ve margin auto
Resmin kendisine stil vermeyi tercih ediyorsan onu bir bloğa çevir ve otomatik yan margin'ler ver. İki taraftaki boş alan eşit paylaştırılır:
Gri resimde margin: 0 auto var ama satırın başında kalıyor: otomatik margin'ler satır içi bir elementte hiçbir şey yapmaz. Eksik parça display: block'tur. height: auto ile birlikte max-width: 100% resmin oranlarını koruyarak dar bir ekrandan taşmasını önler.
Yöntem 3: dikey ortalama dahil flexbox ya da grid
Bir resmi bir kutunun içinde iki yönde de ortalamak için kutuya bir yükseklik ver ve içeriğini grid ya da flexbox ile ortala:
Flexbox karşılığı display: flex; justify-content: center; align-items: center; şeklindedir. İki durumda da kutunun yüksekliği resimden büyük olmalıdır, yoksa ortalanacak boşluk olmaz. Aynı yöntemler her elementi ortalar; div ortalama sayfası hepsini karşılaştırıyor.
Altyazılı bir resmi ortalamak
Altyazılı bir fotoğrafın yeri bir <figure>'dır. Figure'ın içeriğini ortala, resim ve altyazı birlikte hizalanır:
Ortalanmış bir satırda birkaç resim
Bir logo ya da küçük resim satırı flexbox işidir. justify-content: center grubu ortalar, gap aralarını açar ve flex-wrap onun küçük ekranlarda ortalanmış kalarak alt satıra geçmesine izin verir:
Hangi yöntemi kullanmalı
| Durum | Kullan |
|---|---|
| Bir paragraftaki ya da basit bir bloktaki resim | Ebeveynde text-align: center |
| Yalnızca resme stil verebiliyorsun | display: block; margin: 0 auto; |
| Bir kutunun içinde iki yönde ortalamak | Kutuda grid place-items: center (ya da flexbox) |
| Bir resim satırı | justify-content: center ile flexbox |
| Altyazılı bir resim | text-align: center ile <figure> |
| İçerik değil, bir arka plan resmi | background-position: center, bkz. background-image |
Eski yollar ve neden kullanılmamalı
Eski eğitimlerde bunları hâlâ bulursun:
<!-- obsolete: do not use -->
<center><img src="logo.png" alt="Logo"></center>
<img src="logo.png" alt="Logo" align="center">
<center> ve align özniteliği HTML'den çıkarıldı. Tarayıcılar geriye uyumluluk için <center>'ı hâlâ çizer; bir resimdeki align="center" ise onu yatayda bile ortalamaz: tarayıcılar onu satır içinde dikey bir hizalama olarak ele alır. Yukarıdaki CSS yöntemlerinden birini kullan.
Sık yapılan hatalar
<img>üzerindetext-align: center. Onu ebeveyne ver.- Satır içi bir resimde
margin: 0 auto.display: blockekle. - Ebeveynde yükseklik olmadan dikey ortalama. Kutu resme göre küçülür ve ortalanacak boşluk kalmaz.
float: center. Böyle bir değer yoktur. Float'lar yalnızca bir tarafa gider.alt'ı unutmak. Ortalanmış bir resmin de alt metne ihtiyacı vardır;alt=""'ı yalnızca tamamen dekoratif resimler için kullan.- Gerilmiş bir resim. CSS'te hem
widthhemheightdeğerlerini farklı bir orana sahip değerlere ayarlamak onu bozar. Birini ayarla veheight: autokullan ya daobject-fit: coverekle.
Sıkça Sorulan Sorular
HTML'de resim nasıl ortalanır?
Onu içeren elemente text-align: center ver, örneğin <p style="text-align: center;"><img src="logo.png" alt="Logo"></p>. Bir resim varsayılan olarak satır içidir, bu yüzden metnin bir kelimesi gibi ortalanır.
margin auto ile resim nasıl ortalanır?
Önce resmi blok yap: img { display: block; margin: 0 auto; }. Otomatik margin'ler satır içi elementleri ortalamaz ve bir resim sen değiştirene kadar satır içidir.
Bir resim hem dikeyde hem yatayda nasıl ortalanır?
Kapsayıcısını yüksekliği olan bir grid (ya da flexbox) yap: .box { display: grid; place-items: center; height: 300px; }. Resim bu durumda kutunun tam ortasına oturur.
Resmi ortalamak için <center> etiketi ya da align="center" kullanılabilir mi?
Hayır. <center> ve <img> üzerindeki align özniteliği HTML5'te kullanımdan kalkmıştır. Tarayıcılar eski sayfalar için <center>'ı hâlâ çizer, ama bir resimdeki align="center" onu yatayda değil satır içinde dikeyde hizalar. CSS kullan.
Ortalanmış resmimin altında neden küçük bir boşluk var?
Satır içi bir resim metnin taban çizgisine oturur ve altında aşağı sarkan harfler için yer bırakır. Resme display: block ya da vertical-align: middle ver, boşluk kaybolur.