Metin hizalama merkezi kullanarak görüntüyü ortala?


Yanıtlar:


1087

Bu text-alignözellik, satır içi öğelere değil, satır kaplarına uygulandığı ve imgsatır içi bir öğe olduğu için çalışmaz . W3C teknik özelliklerine bakın .

Bunun yerine şunu kullanın:

img.center {
    display: block;
    margin: 0 auto;
}
<div style="border: 1px solid black;">
<img class="center" src ="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png?v=c78bd457575a">

</div>


5
Bu yöntemi denedim ve işe yarıyor! ama 2 resim denediğimde işe yaramadı, sadece bir totem gibi üst üste istiflendi, ortadaki aynı çizgide 2 görüntüyü nasıl hizalayacağına dair herhangi bir fikir var mı?
PatrickGamboa

1
W3C tarafından nasıl desteklenmez? Bu iddiayı destekleyecek bağlantılar sağlayabilir misiniz?
Madara'nın Hayaleti

1
@SecondRikudo: text-alignadından da anlaşılacağı gibi metni ortalamak içindir. Blok elemanlar margin: 0 auto;için önerilen yaklaşımdır.
Mrchief

4
@Mrchief Görüntüler bloklar değil satır içi öğelerdir. text-alignonlar üzerinde iyi çalışır.
Madara'nın Hayaleti

4
Bu açıklama biraz garip değil mi? 'Metin hizalama', satırlar için değil, satırlar için geçerli olduğunu söylüyorsunuz. Kodunuz işe yarıyor, ama bu paragrafın tamamen yeniden yazılması gerekiyor, imo.
Ahtapot

118

Bu her zaman işe yaramaz ... eğer işe yaramazsa, şunu deneyin:

img {
    display: block;
    margin: 0 auto;
}

87

Ben rastladım bu yazı , ve benim için çalıştı:

img {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  margin: auto;
}
<div style="border: 1px solid black; position:relative; min-height: 200px">
  <img src="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png?v=c78bd457575a">

</div>

(Dikey ve yatay hizalama)


48

Bunu yapmanın başka bir yolu da ekteki paragrafı ortalamak olacaktır:

<p style="text-align:center; border:1px solid black"><img src="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png?v=c78bd457575a"></p>


19
Kabul etmiyorum, bence bu soruya cevap veriyor. OP, özelliğin text-align: centerbir resmi ortalamak için iyi bir yol olup olmadığını sordu ve özelliğin img etiketinin bir parçası olması gerektiğini belirtmedi . Bu cevap, söz konusu mülkü bir çözüm (bu işe yarar) sağlamak için kullanır.
MandM

2
Ekran: blok vb. Olmazsa bu benim için çalıştı.
matthewsheets

14

Yapabilirsin:

<center><img src="..." /></center>


9
ne yazık ki, <center>html5'te desteklenmiyor, ama lanet, işe yarıyor.
Ayrat

13

Aslında, kodunuzdaki tek sorun, text-alignözelliğin etiketin içindeki metne (evet, resimler metin olarak sayılır) uygulanmasıdır. spanGörüntünün çevresine bir etiket koymak ve stilini şu şekilde ayarlamak istersiniz text-align: center:

span.centerImage {
     text-align: center;
}
<span class="centerImage"><img src="http://placehold.it/60/60" /></span>

Görüntü ortalanacaktır. Sorunuza yanıt olarak, kuralı görüntünün içeren span(veya div) öğesine uygulamayı hatırladığınız sürece, görüntüleri ortalamanın en kolay ve en kusursuz yoludur .


2
Bir spanunsurdur display: inline;bu koşular böylece yerleştirerek aynı problem haline varsayılan olarak text-align: center;üzerinde imgkendisi. Sen ayarlamalısınız spaniçin display: block;ya bir ile değiştirin divişe bunun için.
Web_Designer

10

Önerebileceğim bir öğeyi ortalamak için üç yöntem vardır:

  1. kullanılması text-alignözelliği

        .parent {
        text-align: center;
    }
        <div class="parent">
        <img src="https://placehold.it/60/60" />
    </div>

  2. kullanılması marginözelliği

    img {
        display: block;
        margin: 0 auto;
    }
    <img src="https://placehold.it/60/60" />

  3. kullanılması positionözelliği

    img {
        display: block;
        position: relative;
        left: -50%;
    }
    .parent {
        position: absolute;
        left: 50%;
    }
    <div class="parent">
        <img src="https://placehold.it/60/60" />
    </div>


Birinci ve ikinci yöntemler yalnızca üst öğe görüntü kadar genişse çalışır. Görüntü üst öğesinden daha geniş olduğunda görüntü ortada kalmaz !!!

Ancak: Üçüncü yöntem bunun için iyi bir yoldur!

İşte bir örnek:

img {
    display: block;
    position: relative;
    left: -50%;
}
.parent {
    position: absolute;
    left: 50%;
}
<div class="parent">
    <img src="http://imgsv.imaging.nikon.com/lineup/lens/zoom/normalzoom/af-s_dx_18-140mmf_35-56g_ed_vr/img/sample/img_01.jpg" />
</div>


# 3 o kadar hassas ki , bir CSS enjeksiyonlu bir imgiçinde haklı bir iç merkezli olabilir . Teşekkür ederim! divWebView
JorgeAmVF

8

Yalnızca Internet Explorer'ın eski sürümlerini desteklemeniz gerekiyorsa.

Modern yaklaşım margin: 0 autoCSS'nizde yapmaktır .

Burada örnek: http://jsfiddle.net/bKRMY/

HTML:

<p>Hello the following image is centered</p>
<p class="pic"><img src="https://twimg0-a.akamaihd.net/profile_images/440228301/StackoverflowLogo_reasonably_small.png"/></p>
<p>Did it work?</p>

CSS:

p.pic {
    width: 48px;
    margin: 0 auto;
}

Buradaki tek sorun , paragrafın genişliğinin görüntünün genişliği ile aynı olması gerektiğidir . Paragraf üzerine bir genişlik koymazsanız, çalışmaz, çünkü% 100 olduğu varsayılır ve elbette kullanmadığınız sürece görüntünüz sola hizalanır text-align:center.

Kemanı deneyin ve isterseniz deneyin.


6
img{
    display: block;
    margin-right: auto;
    margin-left: auto;      
 }

1
rüya avcısı, css kullanarak bir görüntüyü ortalamanın alternatif bir yolunu öneriyorsanız, sorunuzu biraz genişletmeniz gerekir. Bu önerilen alternatifin, belki de ilgili belgelere bir bağlantı da dahil olmak üzere, sorucının hedefine ulaşmak için nasıl ve neden daha iyi bir yol olacağını açıklayabilirsiniz. Bu, onlar için daha yararlı ve aynı sorunlara çözüm arayan diğer site okuyucuları için daha yararlı olacaktır.
Vince Bowdren

6

Görüntü içeren bir sınıf kullanıyorsanız, aşağıdakiler yapılacaktır

class {
    display: block;
    margin: 0 auto;
}

Yalnızca belirli bir sınıftaki hizalamayı ortalamak istediğiniz bir görüntü ise aşağıdakiler yapılır:

class img {
    display: block;
    margin: 0 auto;
}

Alt olanı değiştiririm img.classveya bir img.classsürüm de eklerdim. Bunun için teşekkürler.
Chuck Savage

6

Kapsayıcı görüntüsünde görüntüyü hem dikey hem de yatay olarak mükemmel bir şekilde ortalamak için bir CSS 3 Flexbox kullanabilirsiniz.

Görüntü tutucu olarak <div class = "container"> olduğunu varsayalım:

Sonra CSS olarak kullanmanız gerekir:

.container {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
}

Bu da div içindeki tüm içeriğinizi mükemmel bir şekilde ortalayacak.


justify-içeriğinde whate <p> set hizalama için kullanabilirsiniz ??
Manjitha teshara

İstediğim bu. Teşekkür ederim.
Dionne Kim

5

Bulduğum en basit çözüm bunu img-elementime eklemekti:

style="display:block;margin:auto;"

Başkaları tarafından önerilen "otomatik" önce "0" eklemek gerekmez gibi görünüyor. Belki de bu doğru yoldur, ama "0" olmadan da benim amacım için yeterince iyi çalışıyor. En azından en yeni Firefox, Chrome ve Edge'de .


yalnızca otomatik ortalama auto auto auto autove 0 autoaraçlar 0 auto 0 auto... ve varsayılan olarak alt ve üst kenar boşluğu için otomatik olarak 00 eklenmesi ya da
eklenmemesi

Yorumunuz neden işe yaradığını açıklıyor. Harika. Ama önceki cevaplardan hangisi '0' olmadan düz 'otomatik' ifadesinin işe yaradığını söyledi? Bu gerçekten bahsetmeye değmez mi?
Panu Logic

bu durumda bu bir yorum olmalıdır, çünkü bu özel durumda ikisi de aynıdır. : Hepimiz eşdeğer değerlere, biz yazabiliriz bu durumda ilişkin bir cevap vermesi gerekiyor sanmıyorum auto, auto auto, auto auto auto, auto auto auto auto, 0 auto 0, 0 auto, 0 auto 0 auto, vb ... Her biri farklı bir cevabı hak düşünüyorsun? Ben öyle düşünmüyorum.
Temani Afif

İki farklı CSS segmenti aynı son sonucu üretirse, bu iki CSS segmentinin "aynı" olduğunu söyleyemem. Çıktıları aynı, ancak kaynak kodları aynı değil. Aynı genel olarak, aynı çıktıyı üreten herhangi bir sayıda farklı program yazabilirsiniz. O zaman bu "eşdeğer" programlardan hangisinin yazmak için en basit ve en kısa olduğunu bilmek (ve soran insanlara söylemek) değerlidir.
Panu Logic

ve bütün bunlar tek bir cevap içinde yazılmalıdır. Bu yüzden bu cevap bir yorum olarak tamamen yeni bir cevaptan daha uygundur. Tüm eşdeğer şeyleri bir arada sunmalı ve tamamen farklı olduklarına dair ayrı bir özellik yapmamalıyız çünkü durum böyle değil [benim görüşüme göre, onunla anlaşmaya veya tersini savunmaya gerek yok]. Ve aynı çıktıyı üreten farklı programlardan bahsetmiyorum, mantık aynı olmayabilir gibi tamamen farklı bir şey. Burada aynı mülkten ve aynı değerden bahsediyoruz (olduğu gibi i++aynı i+=1)
Temani Afif

4

Üst hizalamayı değiştirin :)

Bunu üst özelliklerde deneyin:

text-align:center

3

Sen kullanabilirsiniz text-align: centerebeveyn ve değiştirmek imgiçin display: inline-blockbu nedenle bir metin elemanı gibi davranır ve ebeveyn bir genişliğe sahipse merkezli olacak olan →!

img {
    display: inline-block
}

2

Bir görüntüyü ortalamak için bir div kullanırdım. De olduğu gibi:

<div align="center"><img src="your_image_source"/></div>

2

Görüntüyü arka plan olarak ayarlamak istiyorsanız, bir çözümüm var:

.image {
    background-image: url(yourimage.jpg);
    background-position: center;
}

2

Merkeze bir sigara arkaplan görüntüsü bir satır içi (varsayılan davranış) olarak resim veya blok elemanı görüntülemek isteyip bağlıdır.

Satır içi

Görüntünün görüntü CSS özelliğinin varsayılan davranışını korumak istiyorsanız, görüntünüzü ayarlamanız gereken başka bir blok öğesinin içine sarmanız gerekir. text-align: center;

Blok örneği

Görüntüyü kendi başına bir blok öğesi olarak değerlendirmek istiyorsanız, text-alignözellik bir anlam ifade etmez ve bunun yerine bunu yapmalısınız:

IMG.display {
    display: block;
    margin-left: auto;
    margin-right: auto;
}

Sorunuzun cevabı:

Özellik text-align: center; CSS kullanarak bir görüntüyü ortalamanın iyi bir yolu nedir?

Evet ve hayır.

  • Görüntü, sarmalayıcının içindeki tek öğeyse evet.
  • Hayır, görüntünün sarıcısının içinde başka öğeler varsa, görüntünün kardeşleri olan tüm alt öğeler text-alignözelliği devralır : ve bu yan etkiyi beğenmeyebilirsiniz.

Referanslar

  1. Satır içi öğelerin listesi
  2. Bir şeyleri merkezleme

1

Ölçeklendirmenin bir yolu daha - görüntülemek:

img {
  width: 60%; /* Or required size of image. */
  margin-left: 20% /* Or scale it to move image. */
  margin-right: 20% /* It doesn't matters much if using left and width */
}

1

Bunu imgCSS'niz için kullanın :

img {
  margin-right: auto;
  margin-left: auto;
}

0

display: blockile margin: 0bir benim için işe yaramadı, ne sarma text-align: centerelemanı.

Bu benim çözümüm:

img.center {
    position: absolute;
    transform: translateX(-50%);
    left: 50%;
}

translateX çoğu tarayıcı tarafından desteklenir


1
Bunu mu demek istediniz margin: 0 auto;? Anahtar ayarı margin-leftve margin-rightiçin auto. margin: 0 auto;bunun için bir kısayoldur.
Web_Designer

1
@Web_Designer Denedim margin: 0 auto, margin: 0ve margin: autohiçbiri işe yaramadı. Chrome'un müfettişinde, kullanırken margin: 0 auto, bir ünlem işareti söyleyerek invalid property value(veya bunun ne anlama
geliyorsa

Bence "konum: mutlak;" "display: absolute;" yerine
WebDevDaniel

@WebDevDaniel yazım hatası işaret ettiğiniz için teşekkür ederiz. Oh bu arada , her ikisi de oldukça iyi çalışıyor, relativeyerine konumlandırma kullanmak isteyebilirsiniz absolute.
OverCoder

0

Eğer içinde bir resim ve bir metin varsa div, o zaman kullanabilirsiniztext-align:center , metni ve görüntüyü tek bir geçişte hizalamak için .

HTML:

    <div class="picture-group">
        <h2 class="picture-title">Picture #1</h2>
        <img src="http://lorempixel.com/99/100/" alt="" class="picture-img" />
        <p class="picture-caption">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Temporibus sapiente fuga, quia?</p>
    </div>

CSS:

.picture-group {
  border: 1px solid black;
  width: 25%;
  float: left;
  height: 300px;
  #overflow:scroll;
  padding: 5px;
  text-align:center;
}

CodePen: https://codepen.io/artforlife/pen/MoBzrL?editors=1100


0

Bazen içeriği ve görüntüleri doğrudan sayfaların içindeki WordPress yöneticisine ekleriz. Görüntüleri içeriğin içine eklediğimizde ve o merkeze hizalamak istediğimizde. Kod şu şekilde görüntülenir:

 **<p><img src="https://abcxyz.com/demo/wp-content/uploads/2018/04/1.jpg" alt=""></p>**

Bu durumda, aşağıdaki gibi CSS içeriği ekleyebilirsiniz:

article p img{
    margin: 0 auto;
    display: block;
    text-align: center;
    float: none;
}

0

kullanın:

<dev class="col-sm-8" style="text-align: center;"><img src="{{URL('image/car-trouble-with-clipping-path.jpg')}}" ></dev>

Bence bu görüntüyü Laravel çerçevesinde ortalamanın yolu.


0
.img-container {
  display: flex;
}

img {
  margin: auto;
}

bu görüntü merkezini hem dikey hem de yatay olarak yapar

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.