সবার আগে এটি নোট করুন 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এস এর বাক্সের আকারের সাথে (সীমানা বাক্স) তুলনামূলক।
আপনি অনুভব করেন, তাহলে ফন্ট রেন্ডারিং সমস্যা (ঝাপসা ফন্ট), ফিক্স যোগ হয় perspective(1px)করার transformঘোষণা তাই এটি হয়ে:
transform: perspective(1px) translateY(-50%);
এটি লক্ষণীয় যে সিএসএস 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কোথাও ব্যবহার করছেন এমন কোনও কারণ আছে ?