2010-12-11 11 views
14

मेरे पास div है जो मैं क्षैतिज और लंबवत केंद्र बनाना चाहता हूं।लंबवत div को कैसे केंद्रित करें?

क्षैतिज समस्या के लिए सबकुछ बढ़िया है, लेकिन मुझे लंबवत संरेखण में समस्या है।

#parent { 
    display: table; 
} 

#child { 
    display: table-row; 
    vertical-align: middle; 
} 

लेकिन यह काम नहीं करता:

मैं इस कोशिश की।

+0

मैंने Google की कोशिश की ...धन्यवाद आपकी मदद के लिए – trrrrrrm

+0

अगर यह आप के लिए काम करता है देखने के लिए मेरा उत्तर जाँच .. @ra_htial .... हाँ उम्र पुराने सवाल है, लेकिन अभी भी एक मुश्किल एक है कि स्पष्ट किया जाना चाहिए की [कैसे खड़ी सभी के लिए एक div केंद्र के लिए – juanm55

+0

संभव डुप्लिकेट ब्राउज़रों?] (http://stackoverflow.com/questions/396145/how-to-vertically-center-a-div-for-all-browsers) – Carpetsmoker

उत्तर

27

यदि आपको केवल transform (या इसके विक्रेता प्रीफ़िक्स्ड संस्करणों) का समर्थन करने वाले ब्राउज़र का समर्थन करना है, तो तत्वों को लंबवत रूप से संरेखित करने के लिए इस अजीब पुरानी चाल का उपयोग करें।

#child { 
    position: relative; 
    top: 50%; 
    transform: translateY(-50%); 
} 

आप पुराने ब्राउज़र का समर्थन करने के लिए है, तो आप इन के संयोजन का उपयोग कर सकते हैं, लेकिन वे block बनाम table प्रतिपादन में अंतर के कारण एक दर्द हो सकता है।

#parent { 
    display: table; 
} 

#child { 
    display: table-cell; 
    vertical-align: middle; 
} 

अपनी ऊंचाई तय हो गई है और आप उन वास्तव में वर्ष, परेशान करने ब्राउज़रों का समर्थन करने के लिए की जरूरत है ...

#parent { 
    position: relative; 
} 

#child { 
    height: 100px; 
    position: absolute; 
    top: 50%; 
    margin-top: -50px; 
} 

अपनी ऊंचाई तय नहीं है, तो वहाँ एक workaround है।

See it on jsFiddle

+0

बहुत बहुत शुक्रिया मेरे दोस्त लेकिन यह है कि केवल काम करता है, तो मुझे पता है क्या है #child ऊंचाई ... लेकिन यह हमेशा एक ही, अंगूठे उत्तर प्रदेश में नहीं है !! अपने उपयोगी जवाब के लिए धन्यवाद !! – trrrrrrm

+0

http://jsfiddle.net/RQznA/ उदाहरण – trrrrrrm

+0

के लिए इस जाँच @ From.ME.to.YOU देखें [वैकल्पिक हल] (http://www.jakpsatweb.cz/css/css-vertical-center-solution। एचटीएमएल)। दुर्भाग्य से, IE6 + 7 अतिरिक्त कंटेनर आवश्यक हैं। – alex

0

सबसे पहले, टेबल के रूप में गैर-टेबल मार्कअप का इलाज (प्रदर्शन: तालिका और दोस्तों के साथ) क्रॉस-ब्राउज़र नहीं है। मुझे नहीं पता कि आपको कौन से ब्राउज़र का समर्थन करने की आवश्यकता है लेकिन निश्चित रूप से आईई 6 ऐसा नहीं करेगा। लेकिन, यदि आपका लक्षित ब्राउज़र सभी समर्थन प्रदर्शन: तालिका मैं आपको कुछ सुझाव दे सकता हूं।

लंबवत केंद्रित दृष्टिकोण जिसे आप ढूंढ रहे हैं (तालिका लेआउट का उपयोग करके) लंबवत-संरेखण के साथ एक टीडी होने पर निर्भर करता है: मध्य, फिर उस ब्लॉक तत्व के अंदर लंबवत केंद्र होगा। तो मुझे लगता है कि तुम क्या चाहते हैं:

#parent { display:table-cell; vertical-align:middle; } 
#child { /* nothing necessary, assuming it's a DIV it's already display:block */ } 

यह कोई आसपास तालिका पंक्ति और तालिका के साथ तालिका सेल का उपयोग करने के ठीक है, ब्राउज़र आप के लिए आवश्यक तालिका रैपिंग तत्वों infers।

0

यहाँ एक और तरीका है जब आप भीतरी div आकार या जो कुछ भी पता नहीं है है, तो आप% यहाँ का उपयोग कर सकते हैं और वहाँ ठीक करने के लिए "केंद्रित" ....

विचार है कि अपने शीर्ष मूल्य है आधा अपने बच्चे तत्व की ऊंचाई केंद्रित भ्रम

यहाँ बनाने के लिए के रूप में कोड है:

#parent { 
    position: relative; 
    height: 300px; 
    width:200px; 
    background-color:green; 
} 

#child { 
    height: 50%; 
    width: 50%; 
    position:relative; 
    top:25%; 
    left:25%; 
    background-color:red; 
} 
:

<div id="parent"> 
    <div id="child"> 
      hello 
    </div> 
</div> 

और स्टाइल के लिए

यहाँ आप यह कार्रवाई में http://jsfiddle.net/Wabxv/

+0

ध्यान दें कि यह उपलब्ध स्थान है कि यह के लिए शेष है में div (यदि माता पिता div कुछ पाठ है, इस तरह से शेष अंतरिक्ष, न कि पूरी मूल आइटम आकार में केंद्रित हो जाएगा ... कि उपयोग पूर्ण स्थिति के लिए) केंद्रित कर देगा – juanm55

+0

इस लिंक पर सवाल का जवाब कर सकते हैं, यह जवाब के आवश्यक हिस्से में शामिल हैं और संदर्भ के लिए लिंक प्रदान करने के लिए बेहतर है। लिंक किए गए पृष्ठ में परिवर्तन होने पर लिंक-केवल उत्तर अमान्य हो सकते हैं। – NathanOliver

+0

ऊपर सिर के लिए धन्यवाद @NathanOliver सही किया! – juanm55

3

display: table-cell के रूप में के रूप में, display:table मूल प्रॉपर्टी और बच्चे संपत्ति होने देख सकते हैं और vertical-align: middle मेरे लिए काम किया।

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