यदि यह पाठ और / या छवि की एक पंक्ति है, तो यह करना आसान है। महज प्रयोग करें:
text-align: center;
vertical-align: middle;
line-height: 90px; /* The same as your div height */
बस। यदि यह कई लाइनें हो सकती हैं, तो यह कुछ अधिक जटिल है। लेकिन http://pmob.co.uk/ पर समाधान हैं । "वर्टिकल अलाइन" के लिए देखें।
चूँकि वे हैक होते हैं या कॉम्प्लेक्स डिवीज़न जोड़ते हैं ... मैं आमतौर पर ऐसा करने के लिए एक एकल कक्ष के साथ एक तालिका का उपयोग करता हूं ... इसे यथासंभव सरल बनाने के लिए।
2020 के लिए अपडेट करें:
जब तक आपको इंटरनेट एक्सप्लोरर 10 जैसे पहले के ब्राउज़रों पर काम करने की आवश्यकता न हो, तब तक आप फ्लेक्सबॉक्स का उपयोग कर सकते हैं। यह सभी मौजूदा प्रमुख ब्राउज़रों द्वारा व्यापक रूप से समर्थित है । मूल रूप से, कंटेनर को एक फ्लेक्स कंटेनर के रूप में निर्दिष्ट किया जाना चाहिए, साथ में इसके मुख्य और क्रॉस अक्ष के साथ केंद्रित होना चाहिए:
#container {
display: flex;
justify-content: center;
align-items: center;
}
बच्चे के लिए एक निश्चित चौड़ाई निर्दिष्ट करने के लिए, जिसे "फ्लेक्स आइटम" कहा जाता है:
#content {
flex: 0 0 120px;
}
उदाहरण: http://jsfiddle.net/2woqsef1/1/
सामग्री को सिकोड़ने-लपेटने के लिए, यह और भी सरल है: बस flex: ...
फ्लेक्स आइटम से लाइन हटा दें , और यह स्वचालित रूप से हटना-लिपटे है।
उदाहरण: http://jsfiddle.net/2woqsef1/2/
ऊपर के उदाहरणों को एमएस एज और इंटरनेट एक्सप्लोरर 11 सहित प्रमुख ब्राउज़रों पर परीक्षण किया गया है।
एक तकनीकी नोट यदि आपको इसे अनुकूलित करने की आवश्यकता है: फ्लेक्स आइटम के अंदर, क्योंकि यह फ्लेक्स आइटम स्वयं एक फ्लेक्स कंटेनर नहीं है, सीएसएस का पुराना गैर-फ्लेक्सबॉक्स तरीका उम्मीद के मुताबिक काम करता है। हालांकि, यदि आप वर्तमान फ्लेक्स कंटेनर में एक अतिरिक्त फ्लेक्स आइटम जोड़ते हैं, तो दो फ्लेक्स आइटम क्षैतिज रूप से रखे जाएंगे। उन्हें खड़ी रखने के flex-direction: column;
लिए, फ्लेक्स कंटेनर में जोड़ें । यह एक फ्लेक्स कंटेनर और उसके तत्काल बाल तत्वों के बीच काम करता है ।
केंद्र करने की एक वैकल्पिक विधि है: center
फ्लेक्स कंटेनर के लिए मुख्य और क्रॉस अक्ष पर वितरण के लिए निर्दिष्ट नहीं करके , बल्कि margin: auto
सभी चार दिशाओं में अतिरिक्त जगह लेने के लिए फ्लेक्स आइटम पर निर्दिष्ट करें , और समान रूप से वितरित मार्जिन। फ्लेक्स आइटम को सभी दिशाओं में केंद्रित कर देगा। यह तब काम करता है, जब कई फ्लेक्स आइटम हों। इसके अलावा, यह तकनीक MS Edge पर काम करती है लेकिन इंटरनेट एक्सप्लोरर 11 पर नहीं।
2016/2017 के लिए अपडेट:
यह आमतौर पर अधिक के साथ किया जा सकता है transform
, और यह इंटरनेट एक्सप्लोरर 10 और इंटरनेट एक्सप्लोरर 11 जैसे पुराने ब्राउज़रों में भी अच्छा काम करता है। यह कई लाइनों का समर्थन कर सकता है:
position: relative;
top: 50%;
transform: translateY(-50%);
उदाहरण: https://jsfiddle.net/wb8u02kL/1/
चौड़ाई को छोटा करने के लिए:
ऊपर दिए गए समाधान ने सामग्री क्षेत्र के लिए एक निश्चित चौड़ाई का उपयोग किया। एक लिपटे-लपेटे चौड़ाई का उपयोग करने के लिए, का उपयोग करें
position: relative;
float: left;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
उदाहरण: https://jsfiddle.net/wb8u02kL/2/
यदि Internet Explorer 10 के लिए समर्थन की आवश्यकता है, तो flexbox काम नहीं करेगा और ऊपर विधि और line-height
विधि काम करेगी। अन्यथा, Flexbox काम करेगा।
text-align:center
"ऊर्ध्वाधर भाग" नहीं करते हैं?