সবার আগে এটি নোট করুন 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
কোথাও ব্যবহার করছেন এমন কোনও কারণ আছে ?