Bir <div> yatay olarak nasıl ortalanır


4286

CSS kullanarak <div>diğerini yatay olarak nasıl ortalayabilirim <div>?

<div id="outer">
  <div id="inner">Foo foo</div>
</div>

13
Bu harika cevaplardan sadece "#inner" a "genişlik" vermeniz gerektiğini veya "% 100" olacağını vurgulamak istiyorum ve zaten ortalanmış olup olmadığını söyleyemezsiniz.
Jony

Joma Tech beni buraya getirdi
Barbu Barbu

@Barbu Barbu: Ne şekilde? Hangi bağlamda?
Peter Mortensen

Yanıtlar:


4726

Bu CSS'yi iç kısma uygulayabilirsiniz <div>:

#inner {
  width: 50%;
  margin: 0 auto;
}

Tabii ki, ayarlamak gerekmez widthiçin 50%. Kapsayıcıdan daha az herhangi bir genişlik <div>işe yarayacaktır. margin: 0 autoGerçek merkezlenmesini yaptığı iştir.

Internet Explorer 8'i (ve daha yenisini) hedefliyorsanız , bunun yerine bunun olması daha iyi olabilir:

#inner {
  display: table;
  margin: 0 auto;
}

İç elemanı yatay olarak ortalayacak ve belirli bir ayar yapmadan çalışacaktır width.

Burada çalışma örneği:

#inner {
  display: table;
  margin: 0 auto;
  border: 1px solid black;
}

#outer {
  border: 1px solid red;
  width:100%
}
<div id="outer">
  <div id="inner">Foo foo</div>
</div>


12
Dikey merkezleme için genellikle "satır yüksekliği" kullanıyorum (satır yüksekliği == yükseklik). Bu basit ve güzel ama sadece bir satır içerik metni ile çalışıyor :)
Nicolas Guillaume

98
IE üzerinde iyi çalışması için html sayfanızda! DOCTYPE etiketini kullanmanız gerekir.
Fabio

15
"Float: none;" ifadesinin eklenmesi gerekebileceğini unutmayın. #inner için.
Mert Mertce

15
Üst ve alt kenar boşluklarını da alakasız olarak 0 olarak ayarlarsınız. Daha iyi koyarak margin-left: auto; margin-right: autodüşünüyorum.
Emmanuel Touzery

13
Mutlaka değil margin:0 auto: margin: <whatever_vertical_margin_you_need> autoikinci yatay kenar boşluğu olabilir.
YakovL

1246

İç kısımda sabit bir genişlik ayarlamak istemiyorsanız div, böyle bir şey yapabilirsiniz:

#outer {
  width: 100%;
  text-align: center;
}

#inner {
  display: inline-block;
}
<div id="outer">  
    <div id="inner">Foo foo</div>
</div>

Bu, iç divkısmı ortalanabilir bir satır içi öğeye dönüştürür text-align.


13
Olurdu için doğru sözdizimi @SabaAhang float: none;ve #inner bir miras çünkü muhtemelen sadece ihtiyaç vardır floatya leftveya rightbaşka bir yerde CSS'nizde gelen.
Doug McLean

8
Bu güzel bir çözüm. Sadece iç irade devralır unutmayın text-alignEğer iç 's ayarlamak isteyebilirsiniz böylece text-alignetmek initialveya başka bir değer.
pmoleri

güzel bir çözüm sanırım
simon

381

En iyi yaklaşımlar CSS 3 ile .

Kutu modeli:

#outer {
  width: 100%;
  /* Firefox */
  display: -moz-box;
  -moz-box-pack: center;
  -moz-box-align: center;
  /* Safari and Chrome */
  display: -webkit-box;
  -webkit-box-pack: center;
  -webkit-box-align: center;
  /* W3C */
  display: box;
  box-pack: center;
  box-align: center;
}

#inner {
  width: 50%;
}
<div id="outer">
  <div id="inner">Foo foo</div>
</div>

Kullanılabilirliğinize göre box-orient, box-flex, box-direction özellikleri .

Esnek :

#outer {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
}

Alt öğelerin ortalanması hakkında daha fazla bilgi edinin

Ve bu, kutu modelinin neden en iyi yaklaşım olduğunu açıklıyor :


25
Bu çözümü uygulamaya başlamadan önce bu yanıtı okuduğunuzdan emin olun .
cimmanon

4
Safari, şu an -webkitiçin hala flexbox ( display: -webkit-flex;ve -webkit-align-items: center;ve -webkit-justify-content: center;) için bayraklar gerektiriyor
Joseph Hansen

Ben her zaman çok kod kullanımı bu uygulama ile örneğin div: display: table; kenar boşluğu: otomatik; basit ve kolay
simon

Benim mi yoksa bu kod pasajı ortalanmış değil mi
Mike

2020'de flexbox'ı kullanabiliriz caniuse.com/#feat=flexbox
tonygatta

251

Div'inizin 200 piksel genişliğinde olduğunu varsayalım:

.centered {
  position: absolute;
  left: 50%;
  margin-left: -100px;
}

Üst öğenin konumlandırıldığından , yani göreli, sabit, mutlak veya yapışkan olduğundan emin olun .

Div'inizin genişliğini bilmiyorsanız transform:translateX(-50%);, negatif kenar boşluğu yerine kullanabilirsiniz .

https://jsfiddle.net/gjvfxxdj/

İle CSS kalk () , kod daha basit alabilirsiniz:


.centered {
  width: 200px;
  position: absolute;
  left: calc(50% - 100px);
}

İlke hala aynı; öğeyi ortaya koyun ve genişliği telafi edin.


Bu çözümü sevmiyorum çünkü iç eleman ekran için çok geniş olduğunda, tüm elemanı yatay olarak kaydıramazsınız. kenar boşluğu: 0 otomatik daha iyi çalışır.
Aloso

sol kenar boşluğu: otomatik; sağ kenar boşluğu: otomatik; bir blok seviyesi elemanı merkezler
killscreen

Çoğu blok seviyesi elemanı için varsayılan genişlik, ekrandaki kullanılabilir alanı dolduran otomatiktir. Sadece ortalanmak, onu sola hizalamakla aynı konuma yerleştirir. Görsel olarak ortalanmasını istiyorsanız, bir genişlik ayarlamanız gerekir (veya Internet Explorer 6 ve önceki sürümleri bunu desteklemese de maksimum genişlik ve IE 7 yalnızca standart modda desteklese de).
killscreen

228

Bu örneği dikey ve yatay olarak nasıl göstereceğimizi göstermek için oluşturdum align.

Kod temelde şudur:

#outer {
  position: relative;
}

ve...

#inner {
  margin: auto;
  position: absolute;
  left:0;
  right: 0;
  top: 0;
  bottom: 0;
}

Ve ekranınızı yeniden boyutlandırdığınızdacenter bile kalacaktır .


12
Bu yöntem için + 1, ben cevap vermek üzereydim. Yatay olarak ortalamak istediğiniz öğe üzerinde bir genişlik (veya dikey olarak ortalanıyorsa yükseklik) belirtmeniz gerektiğini unutmayın. İşte kapsamlı bir açıklama: codepen.io/shshaw/full/gEiDt . Elemanları dikey ve / veya yatay olarak ortalamak için daha çok yönlü ve yaygın olarak desteklenen yöntemlerden biri.
stvnrynlds

6
Div içinde dolgu kullanamazsınız, ancak yanılsama vermek istiyorsanız aynı renkteki bir kenarlık kullanın.
Squirrl

Bu yöntemin işe yarayacağını düşünüyorum, iç div'in yüksekliğini ve yüksekliğini ayarlamanız gerekiyor
Nicolas S.Xu

212

Bazı posterler, CSS 3'ün display:box .

Bu sözdizimi modası geçmiş ve artık kullanılmamalıdır. [Ayrıca bu gönderiye bakınız ] .

Tam esneklik için, Esnek Kutu Yerleşimi Modülünü kullanarak CSS 3'te ortalamanın en yeni yolu budur .

Yani basit işaretlemeniz varsa:

<div class="box">
  <div class="item1">A</div>
  <div class="item2">B</div>
  <div class="item3">C</div>
</div>

... ve öğelerinizi kutu içinde ortalamak istiyorsanız, ana öğede (.box) ihtiyacınız olan şey:

.box {
    display: flex;
    flex-wrap: wrap; /* Optional. only if you want the items to wrap */
    justify-content: center; /* For horizontal alignment */
    align-items: center; /* For vertical alignment */
}

Eğer flexbox'a için eski sözdizimini kullanın eski tarayıcıları desteklemek için gerekirse burada bakmak için iyi bir yerdir.


"sözdizimi modası geçmiş" ile ne demek, kullanımdan kaldırıldı mı?
Konga Raju

6
Flexbox spesifikasyonu 3 büyük revizyondan geçti. En son taslak, önceki taslakları resmen tasfiye eden Eylül 2012'den alınmıştır. Ancak, tarayıcı desteği sivilceli (özellikle eski Android tarayıcıları): stackoverflow.com/questions/15662578/…
cimmanon

Justin Poliey'in sürümü olmadığında bu benim için Chrome'da çalıştı.
Vern Jensen

"Haklı içerik: merkez;" dikey hizalama ve "hizalama öğeleri: orta;" yatay hizalama için?
Wouter Vanherck

3
@WouterVanherck bu flex-directiondeğere bağlıdır . Eğer 'satır' ise (varsayılan) - o zaman justify-content: center; yatay hizalama içindir (cevapta bahsettiğim gibi) Eğer 'sütun' ise - o zaman justify-content: center;dikey hizalama içindir.
Mart'ta Danield

140

Sabit bir genişlik ayarlamak istemiyorsanız ve fazladan kenar boşluğu istemiyorsanız öğenize ekleyin display: inline-block.

Kullanabilirsiniz:

#element {
    display: table;
    margin: 0 auto;
}

3
ekranla aynı gereksinimler: satır içi blok da ( quirksmode.org/css/display.html )
montrealmike

Ben de kullandım ama daha önce hiç karşılaşmadım display: table;. Bu ne işe yarıyor?
Matt Cremeens

97

Yüksekliği ve genişliği bilinmeyen bir div'ı merkezleme

Yatay ve dikey. Oldukça modern tarayıcılarla (Firefox, Safari / WebKit, Chrome, Internet Explorer 10, Opera vb.)

.content {
  position: absolute;
  left: 50%;
  top: 50%;
  -webkit-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
}
<div class="content">This works with any content</div>

Codepen veya JSBin üzerinde daha da tamir edin .


89

Genişlik vermezseniz ortalanamaz. Aksi takdirde, varsayılan olarak tüm yatay alanı alır.


49
ve genişliği bilmiyorsanız? Söyleyin çünkü içerik dinamik mi?
gman

maksimum genişlik? buna ne dersin?

1
Kullandığım width: fit-content;ve margin: 0 auto. Bunun bilinmeyen genişlikte çalışabileceğini düşünüyorum.
Rick


88

Set widthve seti margin-leftve margin-rightiçin auto. Yine de bu sadece yatay içindir . Her iki yolu da istiyorsanız, her iki şekilde de yaparsınız. Denemekten korkmayın; hiçbir şeyi kıramayacaksınız gibi değil.


62

Son zamanlarda display:none;içinde sayfa merkezli olması gereken tablolanmış bir formu olan bir "gizli" div (yani ) ortalamak zorunda kaldı. Gizli div görüntülemek ve daha sonra tablonun otomatik oluşturulan genişliği için CSS içeriğini güncelleştirmek ve ortalamak için kenar boşluğunu değiştirmek için aşağıdaki jQuery kodu yazdım. (Görüntü geçişi bir bağlantıyı tıklatarak tetiklenir, ancak bu kodun görüntülenmesi gerekli değildir.)

NOT: Google beni bu Yığın Taşması çözümüne getirdiğinden ve gizli öğelerin herhangi bir genişliğe sahip olmadığı ve görüntülenene kadar yeniden boyutlandırılamadığı / ortalanamadığı için her şey işe yarayacağından bu kodu paylaşıyorum.

$(function(){
  $('#inner').show().width($('#innerTable').width()).css('margin','0 auto');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="inner" style="display:none;">
  <form action="">
    <table id="innerTable">
      <tr><td>Name:</td><td><input type="text"></td></tr>
      <tr><td>Email:</td><td><input type="text"></td></tr>
      <tr><td>Email:</td><td><input type="submit"></td></tr>
    </table>
  </form>
</div>


59

Genellikle bunu yapmak mutlak pozisyon kullanmaktır:

#inner{
    left: 0;
    right: 0;
    margin-left: auto;
    margin-right: auto;
    position: absolute;
}

Dış div'in çalışması için ekstra bir özelliğe ihtiyacı yoktur.


Ortalanmış div'ın altında başka div'ler varsa bu işe yaramayabilir.
NoChance

54

Firefox ve Chrome için:

<div style="width:100%;">
  <div style="width: 50%; margin: 0px auto;">Text</div>
</div>

Internet Explorer, Firefox ve Chrome için:

<div style="width:100%; text-align:center;">
  <div style="width: 50%; margin: 0px auto; text-align:left;">Text</div>
</div>

text-align:Mülkiyet modern tarayıcılar için isteğe bağlıdır, ancak eski tarayıcıları desteği için Internet Explorer Süslemeler Modunda gereklidir.


5
Metin hizalama özelliğine gerek yoktur. Tamamen gerekli değil.
Touhid Rahman

metin hizalama aslında IE hızlı modda çalışması için gereklidir, bu yüzden eski tarayıcıları desteklemek için küçük bir ifade eklemenin sakıncası yoksa orada tutun. (IE8 kuralları ve IE7 kuralları olan IE8 hem metin hizalama olmadan çalışır, bu yüzden ilgili sadece IE6 ve daha eski olabilir)
heytools

52

kullanın:

#outerDiv {
  width: 500px;
}

#innerDiv {
  width: 200px;
  margin: 0 auto;
}
<div id="outerDiv">
  <div id="innerDiv">Inner Content</div>
</div>


47

Öğelerden biri için genişlik ayarlamak zorunda kalmadan bunun için başka bir çözüm CSS 3 transformözniteliğini kullanmaktır.

#outer {
  position: relative;
}

#inner {
  position: absolute;
  left: 50%;

  transform: translateX(-50%);
}

İşin püf noktası translateX(-50%), #innerelemanı kendi genişliğinin yüzde 50 soluna ayarlıyor . Dikey hizalama için aynı hileyi kullanabilirsiniz.

İşte yatay ve dikey hizalamayı gösteren bir Keman .

Daha fazla bilgi Mozilla Geliştirici Ağı hakkındadır .


2
Bir de satıcı önekleri gerekebilir:-webkit-transform: translate(-50%,0); -moz-transform: translate(-50%,0); -ms-transform: translate(-50%,0); -khtml-transform: translate(-50%,0); -o-transform: translate(-50%,0);
Skippy le Grand Gourou

45

Blogunda 'Bilinmeyen Merkezleme' üzerine mükemmel bir yazı yazan Chris Coyier . Birden fazla çözümün bir toplamı. Bu soruya gönderilmemiş bir tane yayınladım. Flexbox çözümünden daha fazla tarayıcı desteğine sahip ve display: table;başka şeyleri kırabilecek olan kullanmıyorsunuz .

/* This parent can be any width and height */
.outer {
  text-align: center;
}

/* The ghost, nudged to maintain perfect centering */
.outer:before {
  content: '.';
  display: inline-block;
  height: 100%;
  vertical-align: middle;
  width: 0;
  overflow: hidden;
}

/* The element to be centered, can
   also be of any width and height */
.inner {
  display: inline-block;
  vertical-align: middle;
  width: 300px;
}

39

Son zamanlarda bir yaklaşım buldum:

#outer {
    position: absolute;
    left: 50%;
}

#inner {
    position: relative;
    left: -50%;
}

Düzgün çalışması için her iki öğenin de aynı genişlikte olması gerekir.


Sadece bu kural ayarlayabilirsiniz #innersadece: #inner { position:relative; left:50%; transform:translateX(-50%); }. Bu, herhangi bir genişlik için çalışır.
Jose Rui Santos

33

Örneğin, bu bağlantıya ve aşağıdaki snippet'e bakın:

div#outer {
  height: 120px;
  background-color: red;
}

div#inner {
  width: 50%;
  height: 100%;
  background-color: green;
  margin: 0 auto;
  text-align: center; /* For text alignment to center horizontally. */
  line-height: 120px; /* For text alignment to center vertically. */
}
<div id="outer" style="width:100%;">
  <div id="inner">Foo foo</div>
</div>

Bir ebeveynin altında çok fazla çocuğunuz varsa, CSS içeriğiniz kemandaki bu örnek gibi olmalıdır .

HTML içeriği görünümü şöyle:

<div id="outer" style="width:100%;">
    <div class="inner"> Foo Text </div>
    <div class="inner"> Foo Text </div>
    <div class="inner"> Foo Text </div>
    <div class="inner"> </div>
    <div class="inner"> </div>
    <div class="inner"> </div>
    <div class="inner"> </div>
    <div class="inner"> </div>
    <div class="inner"> Foo Text </div>
</div>

O zaman kemandaki bu örneğe bakın .


28

Yalnızca yatay merkezleme

Deneyimlerime göre, bir kutuyu yatay olarak ortalamanın en iyi yolu aşağıdaki özellikleri uygulamaktır:

Konteyner:

  • sahip olmalı text-align: center;

İçerik kutusu:

  • sahip olmalı display: inline-block;

Demo:

.container {
  width: 100%;
  height: 120px;
  background: #CCC;
  text-align: center;
}

.centered-content {
  display: inline-block;
  background: #FFF;
  padding: 20px;
  border: 1px solid #000;
}
<div class="container">
  <div class="centered-content">
    Center this!
  </div>
</div>

Ayrıca bkz bu Fiddle !


Hem yatay hem de dikey olarak merkezleme

Tecrübelerime göre en iyi yolu bir kutu merkezi hem dikey yatay olarak ortalamanın ek bir kap kullanmak ve aşağıdaki özellikleri uygulamaktır:

Dış konteyner:

  • sahip olmalı display: table;

İç konteyner:

  • sahip olmalı display: table-cell;
  • sahip olmalı vertical-align: middle;
  • sahip olmalı text-align: center;

İçerik kutusu:

  • sahip olmalı display: inline-block;

Demo:

.outer-container {
  display: table;
  width: 100%;
  height: 120px;
  background: #CCC;
}

.inner-container {
  display: table-cell;
  vertical-align: middle;
  text-align: center;
}

.centered-content {
  display: inline-block;
  background: #FFF;
  padding: 20px;
  border: 1px solid #000;
}
<div class="outer-container">
  <div class="inner-container">
    <div class="centered-content">
      Center this!
    </div>
  </div>
</div>

Ayrıca bkz bu Fiddle !


27

En kolay yol:

#outer {
  width: 100%;
  text-align: center;
}
#inner {
  margin: auto;
  width: 200px;
}
<div id="outer">
  <div id="inner">Blabla</div>
</div>


1
Kemanınızın belirttiği gibi, #inner üzerinde bir genişlik ayarlanmış olmalıdır.
Michael Terry

#outervarsayılan olarak her zaman olduğu width:100%;gibi herhangi bir gerekmez . ve hiç de gerekli değil. <div>width:100%text-align:center
Mobarak Ali

27

İçeriğin genişliği bilinmiyorsa, aşağıdaki yöntemi kullanabilirsiniz . Diyelim ki bu iki unsur var:

  • .outer -- Tam genişlik
  • .inner - genişlik ayarlanmadı (ancak maksimum genişlik belirtilebilir)

Öğelerin hesaplanan genişliğinin sırasıyla 1000 piksel ve 300 piksel olduğunu varsayalım. Aşağıdaki gibi devam edin:

  1. .innerİçeri sarın.center-helper
  2. Yap .center-helperbir satır içi blok; .inner300 piksel genişlikle aynı boyutta olur .
  3. it .center-helper için üst% 50 sağ göre; bu, solu 500 piksel wrt olarak yerleştirir. dış.
  4. İtin .inneriçin üst göre sol% 50; bu solu -150 piksel wrt olarak yerleştirir. orta yardımcısı, solunun 500-150 = 350 piksel wrt olduğu anlamına gelir. dış.
  5. .outerYatay kaydırma çubuğunu önlemek için taşmayı gizli olarak ayarlayın .

Demo:

body {
  font: medium sans-serif;
}

.outer {
  overflow: hidden;
  background-color: papayawhip;
}

.center-helper {
  display: inline-block;
  position: relative;
  left: 50%;
  background-color: burlywood;
}

.inner {
  display: inline-block;
  position: relative;
  left: -50%;
  background-color: wheat;
}
<div class="outer">
  <div class="center-helper">
    <div class="inner">
      <h1>A div with no defined width</h1>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.<br>
          Duis condimentum sem non turpis consectetur blandit.<br>
          Donec dictum risus id orci ornare tempor.<br>
          Proin pharetra augue a lorem elementum molestie.<br>
          Nunc nec justo sit amet nisi tempor viverra sit amet a ipsum.</p>
    </div>
  </div>
</div>


26

Böyle bir şey yapabilirsin

#container {
   display: table;
   width: <width of your container>;
   height: <height of your container>;
}

#inner {
   width: <width of your center div>;
   display: table-cell;
   margin: 0 auto;
   text-align: center;
   vertical-align: middle;
}

Bu aynı zamanda #innerdikey olarak hizalanacaktır . İstemiyorsanız, displayve vertical-alignözelliklerini kaldırın ;


25

İşte en kısa zamanda istediğiniz şey.

JSFIDDLE

#outer {
    margin - top: 100 px;
    height: 500 px; /* you can set whatever you want */
    border: 1 px solid# ccc;
}

#inner {
    border: 1 px solid# f00;
    position: relative;
    top: 50 % ;
    transform: translateY(-50 % );
}

3
Bu dikey olarak ortalar.
Michael Terry

22

Metin hizalama: merkez

text-align: centerSatır içi içeriklerin uygulanması satır kutusunun ortasındadır. Ancak iç div varsayılan olarak width: 100%belirli bir genişlik ayarlamanız veya aşağıdakilerden birini kullanmanız gerekir:


Kenar boşluğu: 0 otomatik

Kullanmak margin: 0 autobaşka bir seçenektir ve eski tarayıcıların uyumluluğu için daha uygundur. Birlikte çalışır display: table.


flexbox'a

display: flexbir blok elemanı gibi davranır ve içeriğini flexbox modeline göre düzenler. İle çalışırjustify-content: center .

Lütfen dikkat: Flexbox tüm tarayıcılarla uyumludur, ancak hepsi ile uyumlu değildir. Tarayıcı uyumluluğunun tam ve güncel bir listesi için buraya bakın .


dönüştürmek

transform: translateCSS görsel biçimlendirme modelinin koordinat alanını değiştirmenizi sağlar. Bunu kullanarak, ögeler çevrilebilir, döndürülebilir, ölçeklenebilir ve eğrilebilir. Yatay olarak ortalamak için position: absoluteve gerekir left: 50%.


<center> (Kaldırıldı)

Etiketi <center>, HTML'nin alternatifidir text-align: center. Eski tarayıcılarda ve yenilerinin çoğunda çalışır, ancak bu özellik eski olduğu ve Web standartlarından kaldırıldığı için iyi bir uygulama olarak kabul edilmez .


22

display: flexDış bölgeniz için kullanabilirsiniz ve yatay olarak merkeze eklemeniz gerekir.justify-content: center

#outer{
    display: flex;
    justify-content: center;
}

veya daha fazla fikir için w3schools - CSS flex Property'ni ziyaret edebilirsiniz .


21

Flex,% 97'den fazla tarayıcı destek kapsamına sahiptir ve bu tür sorunları birkaç satırda çözmenin en iyi yolu olabilir:

#outer {
  display: flex;
  justify-content: center;
}

21

Eh, tüm durumlara uygun bir çözüm bulmayı başardım, ancak JavaScript kullanıyor:

İşte yapı:

<div class="container">
  <div class="content">Your content goes here!</div>
  <div class="content">Your content goes here!</div>
  <div class="content">Your content goes here!</div>
</div>

İşte JavaScript snippet'i:

$(document).ready(function() {
  $('.container .content').each( function() {
    container = $(this).closest('.container');
    content = $(this);

    containerHeight = container.height();
    contentHeight = content.height();

    margin = (containerHeight - contentHeight) / 2;
    content.css('margin-top', margin);
  })
});

Duyarlı bir yaklaşımda kullanmak istiyorsanız, aşağıdakileri ekleyebilirsiniz:

$(window).resize(function() {
  $('.container .content').each( function() {
    container = $(this).closest('.container');
    content = $(this);

    containerHeight = container.height();
    contentHeight = content.height();

    margin = (containerHeight - contentHeight) / 2;
    content.css('margin-top', margin);
  })
});

21

Bu yöntem de iyi çalışıyor:

div.container {
   display: flex;
   justify-content: center; /* For horizontal alignment */
   align-items: center;     /* For vertical alignment   */
}

İç için <div>, tek koşul onun heightve widthkabınınkinden daha büyük olmaması gerektiğidir.


19

Bulduğum bir seçenek vardı:

Herkes şunu diyor:

margin: auto 0;

Ama başka bir seçenek daha var. Üst div için bu özelliği ayarlayın. Her zaman mükemmel çalışır:

text-align: center;

Ve bakın, çocuk merkeze git.

Ve son olarak sizin için CSS:

#outer{
     text-align: center;
     display: block; /* Or inline-block - base on your need */
}

#inner
{
     position: relative;
     margin: 0 auto; /* It is good to be */
}

üst öğesi için değil, kabındaki metin hizalaması için metin hizalama işi.
Lalit Kumar Maurya

Ben test, ben set çocuk merkezi ile ilgili sorun, daha fazla bir çocuk, daha fazla kenar boşluğu olduğunda 0 gerekir: 0 otomatik yazı cevap, ama, metin hizalama merkezi, ebeveyn için öğe olsa bile bu çocuk merkezi olun ve metin değil, test ve ne olduğunu görmek
Pnsadeghy

yalnızca metin hizalama merkezi metni. Şu anda doğru, ancak farklı genişlik ve renkte bir çocuk içeren bir kapsayıcı css yazdığınızda kodunuz çalışmıyor. Tekrar test edin !!!!
Lalit Kumar Maurya

Bu örneğe bakın jsfiddle.net/uCdPK/2 ve bana bunun hakkında ne düşündüğünü söyle !!!!!
Lalit Kumar Maurya
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.