Satır içi / satır içi blok öğelerinin CSS dikey hizalaması


142

Birkaç inlineve inline-blockbileşenleri dikey olarak hizalanmış almaya çalışıyorum div. Nasıl olur spanbu örnekte itiliyorsa ısrar? Her iki denedim vertical-align:middle;ve vertical-align:top;fakat hiçbir şey değişiklikleri.

HTML:

<div>
  <a></a><a></a>
  <span>Some text</span>
</div>

CSS:

a {
    background-color:#FFF;
    width:20px;
    height:20px;
    display:inline-block;
    border:solid black 1px;
}

div {
    background:yellow;
    vertical-align:middle;
}
span {
    background:red;
}

SONUÇ:
resim açıklamasını buraya girin

VAKTİNİ BOŞA HARCAMAK


eğer bu olmayacak o notu <a>elemanları miktar metin onları içeride bu bağlantıya bakınız
S.Serpooshan

Yanıtlar:


270

vertical-alignüst öğelerine değil, hizalanan öğelere uygulanır. Div'ın çocuklarını dikey olarak hizalamak için bunun yerine şunu yapın:

div > * {
    vertical-align:middle;  // Align children to middle of line
}

Bkz. Http://jsfiddle.net/dfmx123/TFPx8/1186/

NOT : vertical-alignana metnin tam yüksekliğine değil, geçerli metin satırına göredir div. Ebeveyni isterse divuzun olması ve hala dikey merkezli unsurları var ayarlamak için div'ın line-heightyerine onun malı height. Örnek için yukarıdaki jsfiddle bağlantısını takip edin .


Dış kısım için bir yükseklik belirtirseniz, bu işlem durur div.
Abhranil Das

4
@AbhranilDas vertical-align, üst öğeye değil, geçerli metin satırına göredir . Bu işi istediğiniz gibi yapmak için div line-heightyerine onun div değerlerini ayarlayın height.
Diego


5

Her iki elemanın da solda kalması aynı sonucu verir.

div {
background:yellow;
vertical-align:middle;
margin:10px;
}

a {
background-color:#FFF;
width:20px;
height:20px;
display:inline-block;
border:solid black 1px;
float:left;
}

span {
background:red;
display:inline-block;
float:left;
}

Onları sola doğru kaydırmayla ilgili sorun, tarayıcı çok küçük olduğunda bir sonraki satıra sarılmalarıdır. Bazen tarayıcı sınırlarının ötesinde bile satırda kalmak için öğelere ihtiyacınız vardır ve bu nedenle inline-blocktek çözüm budur.
Jake Wilson

Bu sarma problemi bir sorun olsa da, bunun ambalajın iyi olduğu durumlar için gerçekten iyi bir çözüm olduğunu söyleyebilirim. Zarif, istenen etkinin ruhuyla konuşuyor ve ebeveyn üzerinde değişiklik gerektirmiyor.
Crispen Smith

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.