2010-11-04 11 views
17

मेरे पास पृष्ठभूमि-छवि सेट के साथ एक अनियमित सूची है। सभी सूची-वस्तुओं में समान ऊंचाई होती है, पृष्ठभूमि-छवि बाईं ओर स्थित होती है।केंद्र एकल- और बहु-लाइन ली टेक्स्ट लंबवत

प्रत्येक आइटम का पाठ को लंबवत पर केंद्रित होना चाहिए। यह सिंगल-लाइन टेक्स्ट (ली की ऊंचाई के अनुसार लाइन-ऊंचाई सेट करके) के साथ अच्छी तरह से काम करता है, लेकिन के साथ टेक्स्ट की दो पंक्तियां नहीं हैं।

मैं दो पंक्ति वस्तु में "रेखा-ऊंचाई: सामान्य" जोड़ सकता हूं, लेकिन मुझे एक समाधान चाहिए जो सभी वस्तुओं के लिए काम करता है।

मैं यह कैसे कर सकता हूं?

उदाहरण:

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

पर सशर्त टिप्पणियों का उपयोग करता है क्या आपके पास कुछ कोड है जिसे हम देख सकते हैं? यह हमारे लिए बहुत बेहतर है अगर आप अब तक जो कोशिश कर चुके हैं उसे पोस्ट कर सकते हैं :) – Kyle

+0

किस ब्राउज़र में आपको इसे काम करने की आवश्यकता है? आईई 6/7 भी? –

+0

एक सीएसएस उदाहरण: ली { सूची-शैली-प्रकार: कोई नहीं; पैडिंग-बाएं: 40 पीएक्स; ऊंचाई: 36 पीएक्स; लाइन-ऊंचाई: 36 पीएक्स; पृष्ठभूमि: url ('tick.png') दो-दोहराना 0 50%; } यदि मेरे पास ली में टेक्स्ट की एक पंक्ति है, तो यह काम करता है, लेकिन दो पंक्तियों के साथ यह नहीं करता है। –

उत्तर

43

देखने के लिए अद्यतन यह एक सबसे crossbrowser समाधान

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 */ 

एचटीएमएल

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

मैं स्टार इस्तेमाल किया संक्षिप्तता के लिए हैक है, तो आप से बचना चाहिए। बस html5boilerplate समाधान का उपयोग करें, यह शरीर टैग

+1

इसके लिए धन्यवाद , मुझे मिला सबसे अच्छा समाधान, क्या नायक! – DanC

+0

इस उदाहरण में निश्चित ऊंचाई के बिना बेहतर काम, 'ऊंचाई: 100 पीएक्स;'। अधिक लाइनों पाठ का आकार बदलना क्षेत्र। ऊपर और नीचे आवश्यक अंतराल को परिभाषित करने के लिए 'पैडिंग' या' मार्जिन 'का भी उपयोग करें। मेरा प्रश्न है, स्पैन लपेटे बिना समाधान यहां मौजूद है? –

+0

दुर्भाग्यवश आईई के साथ एक बग है (कम से कम आईई 9 के साथ); जब आप सूची-शैली सेट करते हैं: कोई नहीं, यह शीर्ष पर वापस कूदता है। तो या तो मेरा पाठ स्क्रीन के शीर्ष पर बेवकूफ बैठता है, या मेरे पास एक बदसूरत बुलेट बिंदु है जिसे मैं छुटकारा नहीं पा सकता हूं। धन्यवाद, आईई। – 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> 

यह काम करना चाहिए।

संपादित करें: परिवर्तन

+2

उदाहरण: http://jsfiddle.net/Kyle_Sevenoaks/STM5q/ – Kyle

+0

कुछ शैलियों को उदाहरण के लिए जोड़ा गया है jsfiddle: http://jsfiddle.net/STM5q/155/ –

संबंधित मुद्दे