उत्तरदायी समाधान
यदि आप IE8 और निम्न का समर्थन करने की आवश्यकता नहीं है, तो सामान्य रूप से उत्तरदायी डिज़ाइन या अज्ञात आयामों के लिए एक अच्छा समाधान है ।
.centered-axis-x {
position: absolute;
left: 50%;
transform: translate(-50%, 0);
}
.outer {
position: relative; /* or absolute */
/* unnecessary styling properties */
margin: 5%;
width: 80%;
height: 500px;
border: 1px solid red;
}
.inner {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
/* unnecessary styling properties */
max-width: 50%;
text-align: center;
border: 1px solid blue;
}
<div class="outer">
<div class="inner">I'm always centered<br/>doesn't matter how much text, height or width i have.<br/>The dimensions or my parent are irrelevant as well</div>
</div>
यहाँ एक JS Fiddle है
सुराग है, कि left: 50%
माता पिता के सापेक्ष है जबकि translate
परिवर्तन तत्वों की चौड़ाई / ऊंचाई के सापेक्ष है।
इस तरह आपके पास बच्चे और माता-पिता दोनों पर एक लचीली चौड़ाई के साथ, एक पूरी तरह से केंद्रित तत्व है। बोनस: यह काम करता है भले ही बच्चा माता-पिता से बड़ा हो।
आप इसे इसके साथ लंबवत भी केन्द्रित कर सकते हैं (और फिर से, माता-पिता और बच्चे की चौड़ाई और ऊंचाई पूरी तरह से लचीली हो सकती है (और / या अज्ञात)):
.centered-axis-xy {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
}
ध्यान रखें कि आपको transform
वेंडर के साथ ही उपसर्ग की आवश्यकता हो सकती है । उदाहरण के लिए-webkit-transform: translate(-50%,-50%);