2011-10-10 28 views
8

Örnek: jsfiddle.net/h5sE6/Çok satırlı metni bir listede dikey olarak nasıl hizalayabilirsiniz?

CSS:

ul { 
    float: left; 
    margin-right:20px; 
} 
ul li { 
    height: 3em; 
    border: 1px solid #ff0000; 
    width:200px; 
} 

html: Bu, bir çizgi varsa dikey metin hizalama ve satır yüksekliği eşit yükseklik yapma önemsiz

<ul> 
    <li> Some text</li> 
    <li>Some text<br />some more text</li> 
    <li>some test text3</li> 
    <li>even more text<br />and more</li> 
</ul> 
<ul> 
    <li> Some text</li> 
    <li>Some text<br />some more text</li> 
    <li>some test text</li> 
    <li>even more text<br />and more</li> 
</ul> 

sadece ama bundan daha fazlası, işler gerçekten iğrenç görünüyor.

cevap

12

Bir yardımcı ile yapabilirsin :before elemanı ve iç içe bir <span> ekleyerek:

ul li span { 
    display: inline-block; 
    vertical-align: middle;  
} 

ul li:before{ 
    content: ''; 
    display: inline-block; 
    vertical-align: middle; 
    height: 100%;  
} 

Burada eylem bunun a demo bu.

Bu, iki satır içi blok elemanın birbiriyle dikey hizalanacağı için çalışır. :before kuralı, üst öğesiyle aynı yükseklikte, <span> değişken yüksekliğinin dikey olarak hizalanabildiği bir satır içi blok öğesi oluşturur.

Görüntülerin dikey olarak hizalanması hakkında, see this answer işleyişinin tam bir açıklaması için.

+0

Tamamen ilginç ve çok iyi çalıştı. –

+0

@Pat Bu güzel bir oyun. Teşekkür ederim. – sinanakyazici

5

Sen İşaretlemenize bir span ekleyerek ve ardından css display:table vb kullanarak bunu yapabilirsiniz:

<ul> 
    <li><span>Some text</span></li> 
    <li><span>Some text<br />some more text</span></li> 
    <li><span>some test text</span></li> 
    <li><span>even more text<br />and more</span></li> 
</ul> 

CSS

ul { 
    display: table; 
    border-collapse: collapse; 
    width: 100%; 
} 

ul li { 
    height: 3em; 
    border: 1px solid #ff0000; 
    display: table-row; 
} 

ul li span{ 
    display:table-cell; 
    vertical-align: middle; 
} 

Örnek:http://jsfiddle.net/jasongennaro/nePt6/

+0

Bu çözüm çok iyi çalışır ve çok sezgiseldir. Bununla ilgili tek hıçkırıklık, bazı ek CSS3 stilleriyle birlikte çalışırken birkaç garip görsel nüansa neden oldu. –

İlgili konular