Mutlak div, CSS kullanarak yatay olarak nasıl ortalanır?


177

Bir div'ım var ve yatay olarak ortalanmasını istiyorum - her ne kadar vermeme rağmen margin:0 auto;ortalanmış değil ...

.container {
    position: absolute;
    top: 15px;
    z-index: 2;
    width:40%;
    max-width: 960px;
    min-width: 600px;
    height: 60px;
    overflow: hidden;
    background: #fff; 
    margin:0 auto;
}


@LoganMzz, bu sorunun genişliğini bildiği için değil.
Davbog

Yanıtlar:


409

Sen ayarlamanız gerekir left: 0ve right: 0.

Bu, kenar boşluklarının pencerenin kenarlarından ne kadar uzaklacağını belirtir.

'Üst' gibi, ancak bir kutunun sağ kenar boşluğunun kutunun bulunduğu bloğun [sağ / sol] kenarının [sol / sağ] ile ne kadar uzak olduğunu belirtir.

Kaynak: http://www.w3.org/TR/CSS2/visuren.html#position-props

Not: Öğenin pencereden daha küçük bir genişliği olmalıdır, aksi takdirde pencerenin tüm genişliğini kaplar.

Minimum kenar boşluğu belirtmek için medya sorgularını kullanabilir ve daha autobüyük ekran boyutları için bu konuma geçebilirsiniz .


.container {
  left:0;
  right:0;

  margin-left: auto;
  margin-right: auto;

  position: absolute;
  width: 40%;

  outline: 1px solid black;
  background: white;
}
<div class="container">
  Donec ullamcorper nulla non metus auctor fringilla.
  Maecenas faucibus mollis interdum.
  Sed posuere consectetur est at lobortis.
  Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
  Sed posuere consectetur est at lobortis.
</div>


38
Not: widthbir zorunluluktur!
Ijas Ameenudeen

2
Evet. Bu doğrudur ... bir "text-align: center;" ve bir "sol: 0; sağ: 0;" yatay konumdayken div değerini mutlak konumlamanızı sağlar.
Sterling Bourne

3
@AlexG IE11'de kemanı yeni yükledim ve işe yarıyor. Açıklayabilir misin?
Brian Webster

1
Bu IE11 içinde çalışır @AlexG ancak olmayacak işin bir beyan yoksa genişliği . Ben de aynı problemi yaşadım. Örnekte gösterildiği gibi bir genişlik kullanmanız gerekir.
Panama Jack

1
da margin: autobizim durumumuzda çalışması için gerekli
Crashalot

124

Bu IE8'de çalışmaz, ancak dikkate alınması gereken bir seçenek olabilir. Bir genişlik belirtmek istemiyorsanız öncelikle kullanışlıdır.

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

Bu muhtemelen projesinin gereksinimlerine bağlı olacaktır.
Kris Selbekk

3
Bu noktada, Safari'de çalışması için yine de -webkit- önekine sahip bir kural olması gerekir.
Shikkediel

Ne yazık ki bir şekilde çevredeki div şeffaflığını da içindeki metne
uygular

1
Bu kesinlikle cevap. Benim için, genişliğin özellikle ayarlanmış olması mutlak bir hareket etmektir.
Mike

14

Yukarıdaki cevaplar doğru olmakla birlikte, yeni başlayanlar için basitleştirmek için tek yapmanız gereken sol ve sağ kenar boşluğu ayarlamaktır. genişliğin ayarlanması ve konumun mutlak olması şartıyla aşağıdaki kod yapılır:

margin: 0 auto;
left: 0;
right: 0;

Demo:

.centeredBox {
    margin: 0 auto;
    left: 0;
    right: 0;
   
   
   /** Position should be absolute */
    position: absolute;
    /** And box must have a width, any width */
    width: 40%;
    background: #faebd7;
   
   }
<div class="centeredBox">Centered Box</div>


1
Bu, bir dizi bootstrap sütunundaki mutlak görüntüler için mükemmel çalıştı
ZachNag

5

Flexbox'a? Flexbox kullanabilirsiniz.

.box {
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  
  -webkit-justify-content: center;
  justify-content: center;

}

.box div {
  border:1px solid grey;
  flex: 0 1 auto;
  align-self: auto;
  background: grey;
}
<div class="box">
  <div class="A">I'm horizontally centered.</div>
</div>


Bu gerçekten benim eşsiz durumum için güzel çalıştı. left: 0; right: 0;alt öğenin arka plan rengine sahip olduğu ve left: 50%; transform: translateY(-50%);% 50 genişlikle sınırlandırıldığı için çalışmadığı için % 100'e genişletildi . Bu, çocuğun esnek boyutlarını koruyan tek çözümdü (sadece tarayıcı desteği ile sınırlı). Teşekkürler!
Ben Dyer

3
.centerDiv {
    position: absolute;
    left: 0;
    right: 0;
    margin: 0 auto;
    text-align:center;
}


0

İşte bir bağlantı konum mutlak ise div div yapmak için kullanın.

HTML:

<div class="bar"></div>

CSS:

.bar{
  width:200px;
  border-top:4px solid red;
  position:absolute;
  margin-left:auto;
  margin-right:auto;
  left:0;
  right:0;
}

Örnek jsfiddle


-1

Elemanlar margin:auto;üzerinde kullanamazsınız position:absolute;, sadece ihtiyacınız yoksa kaldırın, ancak eğer yaparsanız left:30%;, maks. Ve min değerleri için ((% 100 -% 40) / 2) ve medya sorgularını kullanabilirsiniz:

.container {
    position: absolute;
    top: 15px;
    left: 30%;
    z-index: 2;
    width:40%;
    height: 60px;
    overflow: hidden;
    background: #fff;
}

@media all and (min-width:960px) {

    .container {
        left: 50%;
        margin-left:-480px;
        width: 960px;
    }

}

@media all and (max-width:600px) {

    .container {
        left: 50%;
        margin-left:-300px;
        width: 600px;
    }

}
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.