2010-11-04 30 views
17

Arka plan görüntüsü kümesine sahip sırasız bir listem var. Tüm liste öğeleri aynı yüksekliğe sahip, arka plan görüntüsü sol merkezde konumlandırılmıştır.Dikey olarak tek ve çok satırlı li metin merkezi

Her bir öğenin metninin, , dikey olarak için ortalanmış olması gerekir. Bu, tek satırlı metinle (satır yüksekliğini li'nin yüksekliğine göre ayarlayarak) iyi çalışır, ancak iki satırlık metinle.

İki satırlı öğeye "satır yüksekliği: normal" ekleyebilirim, ancak tüm öğeler için uygun bir çözüm istiyorum.

Bunu nasıl yapabilirim?

Örnek:

li { 
    list-style-type:none; 
    padding-left:40px; 
    height:36px; 
    line-height:36px; 
    background:url('tick.png') no-repeat 0 50%; 
} 
+1

Görebildiğimiz bir kodunuz var mı? Şimdiye kadar denediğin şeyleri yayınlayabiliyorsan, bizim için daha iyi olur :) – Kyle

+0

hangi tarayıcıda çalışmasını gerektiriyor? Ayrıca IE6/7? –

+0

A CSS örneği: li { liste stili-tür: yok; dolgu-sol: 40px; yükseklik: 36px; satır yüksekliği: 36px; background: url ('tick.png') tekrarlama yok 0% 50; } Eğer li içinde bir metin satırı varsa, işe yarıyor, ancak iki satırlı değil. –

cevap

43

görmek için güncellenmiş bu ben kısalık için kesmek yıldızı kullanılan bir çoğu crossbrowser çözüm

li { 
    width   : 200px; 
    line-height  : 100px; 
    height   : 100px; 
    border   : 1px blue solid;   
} 
li span { 
    display    : -moz-inline-box; /* FF2 or lower */ 
    display    : inline-block;  /* FF3, Opera, Safari */ 
    line-height   : normal; 
    vertical-align  : middle;  
} 

li span  { *display : inline;} /* haslayout for IE6/7 */ 

html

<ul> 
    <li><span>My text</span></li> 
    <li><span>My longer text</span></li> 
    <li><span>My text, but this time is really wide</span></li> 
    <li><span>My text, some thoughts about how much it will expand in this item.</span></li> 
</ul> 

, sen kaçınmalısınız. Sadece html5boilerplate çözümünü kullan, beden etiketindeki koşullu yorumları kullanır

+1

Bunun için teşekkürler kesinlikle bulduğum en iyi çözüm, ne kahraman! – DanC

+0

Bu örnekte sabit yükseklik olmadan daha iyi çalışır, yükseklik: 100px; Daha fazla satır metni yeniden boyutlandırma alanı. Üst ve alt kısımda gerekli boşlukları tanımlamak için 'padding' veya' margin' kullanın. Sorum şu: Buradaki çözüm, ambalaj açıklığı olmaksızın mevcut mu? –

+0

Ne yazık ki IE ile ilgili bir hata var (en azından IE9 ile); liste stilini ayarladığınızda: yok, en üste geri atlar. Bu yüzden ya metinlerim ekranın tepesinde aptalca oturuyor ya da kurtulamayacağım çirkin bir kurşun var. Tekrar teşekkürler, IE. – Inigo

3
li { 
    height:200px; 
    line-height:200px; 
    border:1px solid red; 
} 
li span { 
    vertical-align:middle; 
    display:inline-block; 
    line-height:1.2; 
} 

<li> 
    <span>two<br />lines</span> 
</li> 

O çalışmalıdır.

DÜZENLEME: Değişiklikleri

+2

Örnek: http://jsfiddle.net/Kyle_Sevenoaks/STM5q/ – Kyle

+0

Kyles örneğine bazı buzlanmalar eklendi jsfiddle: http://jsfiddle.net/STM5q/155/ –

İlgili konular