2 farklı boyuttaki metni dikey olarak nasıl hizalarsınız?


92

Metni bir bloğun ortasına dikey olarak hizalamayı biliyorum, satır yüksekliğini bloğun aynı yüksekliğine ayarlarsınız.

Bununla birlikte, ortasında bir kelime olan bir cümle varsa 2em. Tüm cümlenin satır yüksekliği içeren blokla aynı ise, daha büyük metin dikey olarak hizalanır, ancak daha küçük metin büyük metinle aynı taban çizgisindedir.

Her iki metin boyutu da dikey olarak hizalanacak, böylece daha büyük metin, küçük metinden daha düşük bir taban çizgisinde olacak şekilde nasıl ayarlayabilirim?

Yanıtlar:


149

vertical-align:middle;Satır içi kapsayıcıları denemek ister misiniz?

DÜZENLEME: işe yarıyor ancak metninizin tamamı aşağıdaki gibi bir satır içi kapsayıcıda olmalıdır:

    <div style="height:100px; line-height:100px; background:#EEE;">
        <span style="vertical-align:middle;">test</span>
        <span style="font-size:2em; vertical-align:middle;">test</span>
    </div>


5
Ve her zaman sadece onlar vertical-align: middleiçin olduğunu düşünmüştüm table-cell!
Robin van Baalen

1
İkinci aralığın doğru süzülmesini istiyorsam bu başarısız görünüyor. Sonra üste hizalanır: jsfiddle Float ile nasıl çalıştırılacağına dair bir fikriniz var mı?
philk

2
Üst div'in yükseklik ve satır yüksekliği stillerini ayarlamak gerekli midir?
lexeek

6

Gördüğünüz işlevsellik doğrudur çünkü "dikey hizalama" için varsayılan değer taban çizgisidir. Görünüşe göre istiyorsun vertical-align:top. Başka seçenekler de var. W3Schools'ta buraya bakın .

Edit W3Schools eylemlerini temizlemedi ve hala kalitesiz (en iyi ihtimalle) bir bilgi kaynağı gibi görünüyor. Şimdi site noktası kullanıyorum . Referans bölümlerine erişmek için site noktası ön sayfasının altına kaydırın.


11
O zamandan beri W3Schools'un iyi bir referans sitesi olmadığını öğrendim. Daha fazla bilgi için w3fools.com adresine bakın .
DwB

2
+1 W3S'nin bir hurda parçası olduğu sonucuna varmak için bir olumlu oy alın.
aefxx

4

iki metin kümesi aynı sabit satır yüksekliğine ve dikey hizalama kümesine sahip olmalıdır

 span{
     vertical-align: bottom;
     line-height: 50px;
}

1

Teknik olarak yapamazsınız, ancak sabit metin boyutlarınız varsa, daha büyük metni aşağı taşımak ve satır yüksekliğini daha küçük metne ayarlamak için konumlandırmayı (göreceli) kullanabilirsiniz (bu daha büyük metnin bu şekilde işaretlendiğini varsayıyorum. böylece bunu bir CSS seçici olarak kullanabilirsiniz)


1

Yüzde boyutlarını üst öğenin line-height

.big {
  font-size: 200%;
  line-height: 25%;
  display: inline-block;
  vertical-align: middle;
}
Utque aegrum corpus <span class="big">etiam</span> levibus solet offensis 


1

Kolay yol - esnek kullanın:

<div>
        abcde
        &nbsp;&nbsp;
        <span>efghai</span>
</div>

<style>
    div {
        padding: 20px;
        background-color: orange;
        display: flex;
        align-items: center; }

    span {
        font-size: 1.5em; }
</style>

0

Bir seçenek, farklı boyuttaki metinlerin kendi hücrelerinde bulunduğu bir tablo kullanmak ve her hücrede align: middle özelliğini kullanmaktır.

Güzel değil ve her durumda işe yaramıyor, ancak basit ve her metin boyutunda çalışıyor.


9
Yeniden düzen için bir tablo kullanmadan önce yenilgiyi kabul etmeyi tercih ederim.
JD Isaacks

0

Bu çalışıyor

header > span {
    margin: 0px 12px 0px 12px;
    vertical-align:middle;
}
.responsive-title{
    font-size: 12vmin;
    line-height: 1em;
}
.responsive-subtitle{
    font-size: 6vmin;
    line-height: 2em;
}
<header>
  <span class="responsive-title">Foo</span>
  <span class="responsive-subtitle">Bar</span>
</header>

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.