Menu

HTML ve CSS ile Resim Ortalama

Bir <img> satır içidir, bu yüzden metin gibi ortalanır: ebeveynine text-align: center. Ya da onu margin: 0 auto ile bir blok yap ya da dikey dahil flexbox veya grid ile ortala. Her yöntem canlı çalışıyor ve sonucu ölçüyor.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

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ı

DurumKullan
Bir paragraftaki ya da basit bir bloktaki resimEbeveynde text-align: center
Yalnızca resme stil verebiliyorsundisplay: block; margin: 0 auto;
Bir kutunun içinde iki yönde ortalamakKutuda grid place-items: center (ya da flexbox)
Bir resim satırıjustify-content: center ile flexbox
Altyazılı bir resimtext-align: center ile <figure>
İçerik değil, bir arka plan resmibackground-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> üzerinde text-align: center. Onu ebeveyne ver.
  • Satır içi bir resimde margin: 0 auto. display: block ekle.
  • 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 width hem height değerlerini farklı bir orana sahip değerlere ayarlamak onu bozar. Birini ayarla ve height: auto kullan ya da object-fit: cover ekle.

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.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA