2012-01-10 9 views
11

मुझे समझ में क्यों line-height सीएसएस संपत्ति इस बटन के बीच में खड़ी पाठ देता है कोशिश कर रहा हूँ:लाइन-ऊंचाई लंबवत केंद्र टेक्स्ट कैसे करता है?

.btn-order { 
 
    width: 220px; 
 
    height: 58px; 
 
    font-size: 24px; 
 
    padding: 0; 
 
    text-align: center; 
 
    vertical-align: middle; 
 
    line-height: 58px; 
 
    border: 1px solid black; 
 
}
<div class="btn-order">Complete Order</div>

+0

क्योंकि यही 'लाइन-ऊंचाई' करने का मतलब है? – BoltClock

+4

@ बोल्टक्लॉक 'लाइन-ऊंचाई' उपस्थिति संपादन के लिए एक नियम है, जरूरी नहीं कि बटन के भीतर लंबवत संरेखण के लिए। वह पूछ रहा है कि बटन के अंदर टेक्स्ट केंद्रित करने की यह तकनीक क्यों काम करती है। –

+0

@ माइकल राडर: स्पष्टीकरण के लिए धन्यवाद। – BoltClock

उत्तर

0

यह डिजाइन कर रहा है। यदि सीएसएस पार्सर (यानी ब्राउजर) नहीं जानता है कि आपका टेक्स्ट कितना लंबा है, तो वह आपके टेक्स्ट को लंबवत रूप से संरेखित नहीं कर सकता है।

नोट line-height संपत्ति का डिफ़ॉल्ट मान है।

0

रेखा-ऊंचाई टेक्स्ट की ऊंचाई को परिभाषित करती है जो पैराग्राफ को साफ दिखता है ताकि रेखा ऊंचाई के संबंध में ऊर्ध्वाधर-संरेखण कार्य हो, जब आप ऊंचाई ऊंचाई बढ़ाते हैं तो ऊंचाई बढ़ जाती है और आप लंबवत के प्रभावों को और अधिक स्पष्ट रूप से देख सकते हैं पाठ की -alignment

एक नोटबुक है जो हम बच्चों

+1

यह नहीं करता है। यह पाठ के अंदर की इनलाइन बॉक्स की ऊंचाई को परिभाषित करता है, पाठ की ऊंचाई नहीं। – Rob

+0

मेरी खराब अंग्रेजी के लिए खेद है, लेकिन मेरा भी मतलब यह है कि –

11

line-height संपत्ति अनिवार्य रूप से ऊपर एक 29px(29 + 29 = 58) पाठ लाइन स्थापित कर रही है नर्सरी कक्षा में अंग्रेजी -writing जानने के लिए उपयोग करने के रूप में इस बारे में सोच और अपने पाठ के नीचे, "पूर्ण आदेश"। यदि आपने नीचे टेक्स्ट की एक और पंक्ति जोड़ दी है तो आपको इस पाठ के नीचे 58px मिलेगा। आप केवल मध्य में अपने पाठ को केंद्रित करने के लिए लाइन-ऊंचाई डाल रहे हैं।

यहाँ आप इस अवधारणा को और अधिक समझने में मदद करने के लिए एक अच्छा स्लाइड शो line-height

यहाँ है ... और के अपने कोड का उपयोग एक उदाहरण है कि मैं क्या बात कर रहा हूँ: http://jsfiddle.net/YawDF/14/

line-height करने की स्थापना करके 58px आप ब्राउजर को टेक्स्ट लाइन के ऊपर और नीचे आधा छोड़ने के लिए कह रहे हैं, प्रत्येक पंक्ति के बीच '58 पीएक्स' अंतर और पहली पंक्ति के ऊपर केवल '2 9 पीएक्स' अंतर बनाते हैं।

साइड नोट: vertical-align: middle का उपयोग आपके द्वारा दिखाए जा रहे कोड में बेकार है। यह सब एक साथ बाहर ले जाया जा सकता है।

+0

यह सच नहीं है कि लंबवत-संरेखण: मध्य केवल टेबल के लिए है। सारणी के बिना काम करने वाले लंबवत-संरेखण का एक सरल डेमो यहां दिया गया है: http://jsfiddle.net/YZUTM/ – Alohci

+0

@Alohci No, माइकल का मतलब था कि ओपी के पहेली में लंबवत-संरेखण बेकार था, क्योंकि यह कुछ भी नहीं करेगा उस मामले में। ऊर्ध्वाधर-संरेखण तालिका कोशिकाओं में कहीं भी अलग करता है, यह हर जगह करता है। माइकल का शब्द बहुत स्पष्ट नहीं है ... –

+0

@Mrlister - दरअसल। वाक्य सबसे भ्रामक है। इसे किसी प्रकार की स्पष्टीकरण की आवश्यकता है। – Alohci

1

The text you generate is inside its own line box और लंबवत-संरेखण उस बॉक्स के अंदर प्लेसमेंट के लिए उपयोग किया जाता है। हालांकि, उस बॉक्स के पास पाठ के चारों ओर लिपटे div के साथ कुछ लेना देना नहीं है। आप div की ऊंचाई 58px पर सेट करते हैं लेकिन इससे लाइन टेक्स्ट बॉक्स की ऊंचाई प्रभावित नहीं होती है। यही कारण है कि आपको div की ऊंचाई से मेल खाने के लिए लाइन-ऊंचाई की आवश्यकता है।

+0

"... ** ** बॉक्स के अंदर प्लेसमेंट"। काफी नहीं। लंबवत-संरेखण का उपयोग ** लाइन बॉक्स ** के भीतर इनलाइन बॉक्स के प्लेसमेंट के लिए किया जाता है जो प्रत्येक इनलाइन बॉक्स फैलता है। कड़ाई से, [सीएसएस 2.1 कहता है] (http://www.w3.org/TR/2011/REC-CSS2-20110607/visudet.html#propdef-line-height) "ब्लॉक कंटेनर तत्व पर जिसकी सामग्री इनलाइन से बना है -लेवल तत्व, 'रेखा-ऊंचाई' तत्व के भीतर लाइन बक्से की न्यूनतम ऊंचाई निर्दिष्ट करता है। – Alohci

+0

@Alohci - आप इसे गलत पढ़ रहे हैं। आप ब्लॉक स्तर तत्व के अंदर लाइन बॉक्स के लिए उद्धरण देते हैं। मैं कड़ाई से बोल रहा हूं लाइन बॉक्स स्वयं। – Rob

+0

** इनलाइन बॉक्स ** ** ** बॉक्स बॉक्स ** की आपकी उत्तर वार्ता। आपकी टिप्पणी लाइन बक्से की वार्तालाप है। वे बहुत अलग चीजें हैं। आपको स्पष्ट होना चाहिए कि आप इसका जिक्र कर रहे हैं। – Alohci

0

जब भी किसी विभाजन में अनुच्छेद डाला जाता है तो पहली पंक्ति के बीच की दूरी और div की शीर्ष सीमा रेखा-ऊंचाई का आधा होता है यानी यदि डिफ़ॉल्ट रेखा-ऊंचाई 1px है तो पहली पंक्ति के बीच की दूरी और div की शीर्ष सीमा 0.5px है।

यदि आपके पास height:58px के साथ एक विभाजन है तो रेखा के बीच की दूरी और div की शीर्ष सीमा 2 9 पीएक्स है और रेखा के बीच की दूरी और नीचे div की सीमा होगी = (कुल div ऊंचाई-दूरी बी/डब्ल्यू लाइन और शीर्ष सीमा) जो 58 पीएक्स -29 पीएक्स = 2 9 पीएक्स है। इसका परिणाम केंद्र में लंबवत रूप से गठबंधन किया जा रहा है।

इसके अलावा, vertical align:middle (टेक्स्ट के लिए एक से अधिक पंक्ति वाले पाठ के लिए) का उपयोग करने की आवश्यकता नहीं है, यदि आप पाठ को केंद्रीय रूप से संरेखित करने के लिए लाइन-ऊंचाई का उपयोग कर रहे हैं।

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