सबसे पहले ध्यान दें कि vertical-align
केवल तालिका कोशिकाओं और इनलाइन-स्तरीय तत्वों पर लागू होता है।
ऊर्ध्वाधर संरेखण प्राप्त करने के कुछ तरीके हैं जो आपकी आवश्यकताओं को पूरा कर सकते हैं या नहीं कर सकते हैं। हालाँकि मैं आपको अपने पसंदीदा में से दो तरीके दिखाऊंगा :
1. का उपयोग करना transform
औरtop
.valign {
position: relative;
top: 50%;
transform: translateY(-50%);
/* vendor prefixes omitted due to brevity */
}
<div style="position: absolute; left: 50px; top: 50px;">
<div style="text-align: left; position: absolute;height: 56px;background-color: pink;">
<div class="valign" style="background-color: lightblue;">test</div>
</div>
</div>
मुख्य बिंदु यह है कि एक प्रतिशत मान युक्त ब्लॉक के top
सापेक्ष है height
; जबकि transform
s पर एक प्रतिशत मूल्य बॉक्स के आकार (बाउंडिंग बॉक्स) के सापेक्ष है।
यदि आप फ़ॉन्ट रेंडरिंग मुद्दों (धुंधली फ़ॉन्ट) का अनुभव करते हैं , तो फिक्स को घोषणा में जोड़ना perspective(1px)
है, transform
इसलिए यह बन जाता है:
transform: perspective(1px) translateY(-50%);
यह ध्यान देने योग्य है कि CSS transform
IE9 + में समर्थित है ।
2. inline-block
तत्वों का उपयोग करना (छद्म-)
इस पद्धति में, हमारे पास दो सिबलिंग inline-block
तत्व हैं जो vertical-align: middle
घोषणा के द्वारा मध्य में लंबवत रूप से संरेखित होते हैं ।
उनमें से एक height
में 100%
इसके माता-पिता हैं और दूसरा हमारा वांछित तत्व है जिसे हम इसे बीच में संरेखित करना चाहते थे।
.parent {
text-align: left;
position: absolute;
height: 56px;
background-color: pink;
white-space: nowrap;
font-size: 0; /* remove the gap between inline level elements */
}
.dummy-child { height: 100%; }
.valign {
font-size: 16px; /* re-set the font-size */
}
.dummy-child, .valign {
display: inline-block;
vertical-align: middle;
}
<div style="position: absolute; left: 50px; top: 50px;">
<div class="parent">
<div class="dummy-child"></div>
<div class="valign" style="background-color: lightblue;">test</div>
</div>
</div>
अंत में, हमें इनलाइन-स्तरीय तत्वों के बीच के अंतर को दूर करने के लिए उपलब्ध तरीकों में से एक का उपयोग करना चाहिए ।
position: absolute
हर जगह उपयोग क्यों कर रहे हैं ?