2012-05-03 10 views
8

मुझे अपने लिंक और बटन देखने की आवश्यकता है, लेकिन मैं टेक्स्ट को "ए" टैग के समान रूप से संरेखित करने में असमर्थ हूं "बटन" टैग। यह ध्यान रखना महत्वपूर्ण है कि टैग को टेक्स्ट की कई पंक्तियों को संभालने में सक्षम होना चाहिए (इसलिए लाइन-ऊंचाई काम नहीं करेगी)।एक इनलाइन-ब्लॉक एंकर टैग पर वर्टिकल संरेखित

http://jsfiddle.net/bZsaw/3/

आप, देखना मैं इसे अंदर और स्थापना के एक स्पैन टैग के संयोजन के साथ काम करने के लिए प्राप्त कर सकते हैं कर सकते हैं: करने के लिए "प्रदर्शन: तालिका"

a,button { 
    display: inline-block; 
    -moz-box-sizing: border-box; 
    width: 150px; 
    height: 150px; 
    vertical-align: middle; 
    border: 1px solid #000; 
    text-align: center; 
} 

नीचे jsfiddle देखें "ए" और सेटिंग "डिस्प्ले: टेबल-सेल" और "लंबवत-संरेखण: मध्य" अवधि के लिए, लेकिन यह IE7 में काम नहीं करता है।

a,button { 
    width: 150px; 
    height: 150px; 
    border: 1px solid #000; 
    text-align: center; 
} 

a { 
    display: table; 
    -moz-box-sizing: border-box; 
} 

a span, button span { 
    vertical-align: middle; 
    text-align: center; 
} 

a span { 
    display: table-cell; 
} 

एक साधारण सीएसएस केवल समाधान की तलाश में है।

+0

मैं बहुत खेद है कि आपको IE7 के बारे में हमारी साइट पर सभी आईई उपयोग भर में 20% फिर भी चिंता करने की :) –

+0

है कि कर रहा हूँ। मैं खुद को उस संख्या को साप्ताहिक आधार पर देखता हूं। :) – Travis

उत्तर

11

केवल विश्वसनीय तरीका मैं संरेखित करें खड़ी मिल गया है और अगर यह बहुत लंबा हो जाता है पाठ की रैपिंग की अनुमति देने की है करने के लिए एक 2 कंटेनर दृष्टिकोण के साथ है।

बाहरी कंटेनर में आंतरिक कंटेनर के लिए निर्दिष्ट कम से कम डबल की रेखा ऊंचाई होनी चाहिए। आपके मामले में, जो निम्न अर्थ है:

a { 
    width: 150px; 
    height: 150px; 
    border: 1px solid #000; 
    text-align: center; 
    line-height: 150px; 
    display: block; 
} 

a span { 
    display:inline; 
    display:inline-table; 
    display:inline-block; 
    vertical-align:middle; 
    line-height: 20px; 
    *margin-top: expression(this.offsetHeight < this.parentNode.offsetHeight ? parseInt((this.parentNode.offsetHeight - this.offsetHeight)/2) + "px" : "0"); 
} 

छोड़ दिया नाव जोड़े एक टैग पर आप सब कुछ इनलाइन चाहते हैं। यहाँ टैग बहुत में लंबे पाठ के साथ अद्यतन उदाहरण है .. http://jsfiddle.net/bZsaw/13/

आप अवधि जो कुछ भी करने के लिए आप की तरह पर लाइन ऊंचाई सेट कर सकते हैं और अगर यह माता पिता की पंक्ति की ऊंचाई के आधे से भी कम है, यह केंद्र और टेक्स्ट टेक्स्ट रैपिंग की अनुमति दें यदि आपका टेक्स्ट पैरेंट कंटेनर चौड़ाई से अधिक है। जहां तक ​​मुझे पता है, यह सभी आधुनिक ब्राउज़रों पर काम करता है।

+0

इसे उत्तर के रूप में चिह्नित करने के करीब। क्या आप "प्रदर्शन" सेटिंग्स की श्रृंखला को समझा सकते हैं? – Travis

+0

विभिन्न ब्राउज़रों को लक्षित करता है। – Gats

+0

आईलाइन 7 में हैलाउट ट्रिगर करने के लिए इनलाइन ब्लॉक का उपयोग किया जाता है, जिसके लिए यह होना आवश्यक है कि इसका मोज़िला पर कोई प्रभाव नहीं पड़ेगा। यह वास्तव में काफी हद तक सचमुच है, लेकिन हमने हाल ही में इनपुट लेबल के लिए इसे पार कर लिया है जिसे केंद्र में संरेखित करने की आवश्यकता है और जहां लेबल बहुत लंबा हो जाता है। बहुत अच्छी तरह से काम करता है। – Gats

4

यदि आपका टेक्स्ट बॉक्स की चौड़ाई से बड़ा नहीं होगा तो आप बॉक्स की ऊंचाई के बराबर रेखा-ऊंचाई सेट कर सकते हैं।

line-height:150px;

+0

क्षमा करें, मुझे यह उल्लेख करना चाहिए था कि बटन और टैग को टेक्स्ट की कई पंक्तियों को संभालने में सक्षम होना चाहिए। मैं सवाल संपादित करूंगा। – Travis

-2

उपयोगline-height:150px; और display-inline:block;

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