এই উত্তরের দুটি প্রধান বিভাগ রয়েছে:
- সিএসএস গ্রিডে কীভাবে প্রান্তিককরণ কাজ করে তা বোঝা যাচ্ছে।
- সিএসএস গ্রিডে কেন্দ্রীকরণের জন্য ছয়টি পদ্ধতি।
আপনি যদি কেবল সমাধানগুলিতে আগ্রহী হন তবে প্রথম বিভাগটি এড়িয়ে যান।
গ্রিড লেআউটটির গঠন এবং ব্যাপ্তি
গ্রিড পাত্রে কেন্দ্রীকরণ কীভাবে কাজ করে তা পুরোপুরি বুঝতে, প্রথমে গ্রিড বিন্যাসের কাঠামো এবং সুযোগটি বোঝা গুরুত্বপূর্ণ।
গ্রিড ধারকটির HTML কাঠামোর তিনটি স্তর রয়েছে:
গ্রিড বৈশিষ্ট্য প্রয়োগের ক্ষেত্রে এই স্তরগুলির প্রত্যেকটি অন্যের থেকে স্বতন্ত্র।
সুযোগ একটি গ্রিড ধারক একটি পিতা বা মাতা সন্তান সম্পর্ক সীমাবদ্ধ।
এর অর্থ হ'ল গ্রিডের ধারক সর্বদা পিতামাতার এবং গ্রিড আইটেমটি সর্বদা শিশু। গ্রিডের বৈশিষ্ট্যগুলি কেবল এই সম্পর্কের মধ্যেই কাজ করে।
বাচ্চাদের বাইরে গ্রিড ধারকের উত্সগুলি গ্রিড বিন্যাসের অংশ নয় এবং গ্রিডের বৈশিষ্ট্যগুলি গ্রহণ করবে না। ( subgrid
বৈশিষ্ট্যটি কার্যকর না হওয়া পর্যন্ত কমপক্ষে নয় , যা গ্রিড আইটেমগুলির বংশধরদের প্রাথমিক ধারকের লাইনের প্রতি সম্মান জানাবে))
উপরে বর্ণিত কাঠামো এবং স্কোপ ধারণাগুলির উদাহরণ এখানে।
টিক-ট্যাক-টো-এর মতো গ্রিডটি কল্পনা করুন।
article {
display: inline-grid;
grid-template-rows: 100px 100px 100px;
grid-template-columns: 100px 100px 100px;
grid-gap: 3px;
}
আপনি প্রতিটি কক্ষে এক্স এবং ও এর কেন্দ্রিক চান।
সুতরাং আপনি ধারক স্তরে কেন্দ্রীকরণ প্রয়োগ করুন:
article {
display: inline-grid;
grid-template-rows: 100px 100px 100px;
grid-template-columns: 100px 100px 100px;
grid-gap: 3px;
justify-items: center;
}
তবে গ্রিড লেআউটের কাঠামো এবং সুযোগের কারণে, ধারকটিতে justify-items
গ্রিড আইটেমগুলি কেন্দ্র করে, সামগ্রী নয় (কমপক্ষে সরাসরি নয়)।
article {
display: inline-grid;
grid-template-rows: 100px 100px 100px;
grid-template-columns: 100px 100px 100px;
grid-gap: 3px;
justify-items: center;
}
section {
border: 2px solid black;
font-size: 3em;
}
<article>
<section>X</section>
<section>O</section>
<section>X</section>
<section>O</section>
<section>X</section>
<section>O</section>
<section>X</section>
<section>O</section>
<section>X</section>
</article>
একই সমস্যা align-items
: সামগ্রীটি উপ-পণ্য হিসাবে কেন্দ্রিক হতে পারে তবে আপনি বিন্যাসের নকশাটি হারিয়ে ফেলেছেন lost
article {
display: inline-grid;
grid-template-rows: 100px 100px 100px;
grid-template-columns: 100px 100px 100px;
grid-gap: 3px;
justify-items: center;
align-items: center;
}
article {
display: inline-grid;
grid-template-rows: 100px 100px 100px;
grid-template-columns: 100px 100px 100px;
grid-gap: 3px;
justify-items: center;
align-items: center;
}
section {
border: 2px solid black;
font-size: 3em;
}
<article>
<section>X</section>
<section>O</section>
<section>X</section>
<section>O</section>
<section>X</section>
<section>O</section>
<section>X</section>
<section>O</section>
<section>X</section>
</article>
সামগ্রীটি কেন্দ্র করতে আপনাকে আলাদা পদ্ধতির প্রয়োজন। গ্রিড লেআউটের কাঠামো এবং সুযোগ সম্পর্কে আবার উল্লেখ করে, আপনাকে গ্রিড আইটেমটি পিতামাতার মতো এবং সন্তানের মতো সামগ্রী হিসাবে বিবেচনা করা উচিত।
article {
display: inline-grid;
grid-template-rows: 100px 100px 100px;
grid-template-columns: 100px 100px 100px;
grid-gap: 3px;
}
section {
display: flex;
justify-content: center;
align-items: center;
border: 2px solid black;
font-size: 3em;
}
article {
display: inline-grid;
grid-template-rows: 100px 100px 100px;
grid-template-columns: 100px 100px 100px;
grid-gap: 3px;
}
section {
display: flex;
justify-content: center;
align-items: center;
border: 2px solid black;
font-size: 3em;
}
<article>
<section>X</section>
<section>O</section>
<section>X</section>
<section>O</section>
<section>X</section>
<section>O</section>
<section>X</section>
<section>O</section>
<section>X</section>
</article>
jsFizz ডেমো
সিএসএস গ্রিডে কেন্দ্রীকরণের জন্য ছয়টি পদ্ধতি
গ্রিড আইটেম এবং তাদের বিষয়বস্তুকে কেন্দ্র করে রাখার জন্য একাধিক পদ্ধতি রয়েছে।
এখানে একটি বেসিক 2x2 গ্রিড রয়েছে:
grid-container {
display: grid;
grid-template-columns: 1fr 1fr;
grid-auto-rows: 75px;
grid-gap: 10px;
}
/* can ignore styles below; decorative only */
grid-container {
background-color: lightyellow;
border: 1px solid #bbb;
padding: 10px;
}
grid-item {
background-color: lightgreen;
border: 1px solid #ccc;
}
<grid-container>
<grid-item>this text should be centered</grid-item>
<grid-item>this text should be centered</grid-item>
<grid-item><img src="http://i.imgur.com/60PVLis.png" width="50" height="50" alt=""></grid-item>
<grid-item><img src="http://i.imgur.com/60PVLis.png" width="50" height="50" alt=""></grid-item>
</grid-container>
flexbox
গ্রিড আইটেমগুলির বিষয়বস্তু কেন্দ্রের একটি সহজ এবং সহজ পদ্ধতির জন্য ফ্লেক্সবক্স ব্যবহার করুন।
আরও নির্দিষ্টভাবে, গ্রিড আইটেমটিকে একটি ফ্লেক্স পাত্রে পরিণত করুন।
এই পদ্ধতিতে কোনও বিরোধ, নির্দিষ্ট লঙ্ঘন বা অন্যান্য সমস্যা নেই। এটি পরিষ্কার এবং বৈধ।
grid-item {
display: flex;
align-items: center;
justify-content: center;
}
grid-container {
display: grid;
grid-template-columns: 1fr 1fr;
grid-auto-rows: 75px;
grid-gap: 10px;
}
grid-item {
display: flex; /* new */
align-items: center; /* new */
justify-content: center; /* new */
}
/* can ignore styles below; decorative only */
grid-container {
background-color: lightyellow;
border: 1px solid #bbb;
padding: 10px;
}
grid-item {
background-color: lightgreen;
border: 1px solid #ccc;
}
<grid-container>
<grid-item>this text should be centered</grid-item>
<grid-item>this text should be centered</grid-item>
<grid-item><img src="http://i.imgur.com/60PVLis.png" width="50" height="50" alt=""></grid-item>
<grid-item><img src="http://i.imgur.com/60PVLis.png" width="50" height="50" alt=""></grid-item>
</grid-container>
সম্পূর্ণ ব্যাখ্যার জন্য এই পোস্টটি দেখুন:
গ্রিড বিন্যাস
যেভাবে কোনও ফ্লেক্স আইটেমটি একটি ফ্লেক্স ধারকও হতে পারে, একটি গ্রিড আইটেম একটি গ্রিড ধারকও হতে পারে। এই সমাধানটি উপরের ফ্লেক্সবক্স সমাধানের সমান, কেন্দ্রিককরণ গ্রিড দিয়ে করা হয়, ফ্লেক্স নয়, বৈশিষ্ট্যগুলির সাথে।
grid-container {
display: grid;
grid-template-columns: 1fr 1fr;
grid-auto-rows: 75px;
grid-gap: 10px;
}
grid-item {
display: grid; /* new */
align-items: center; /* new */
justify-items: center; /* new */
}
/* can ignore styles below; decorative only */
grid-container {
background-color: lightyellow;
border: 1px solid #bbb;
padding: 10px;
}
grid-item {
background-color: lightgreen;
border: 1px solid #ccc;
}
<grid-container>
<grid-item>this text should be centered</grid-item>
<grid-item>this text should be centered</grid-item>
<grid-item><img src="http://i.imgur.com/60PVLis.png" width="50" height="50" alt=""></grid-item>
<grid-item><img src="http://i.imgur.com/60PVLis.png" width="50" height="50" alt=""></grid-item>
</grid-container>
auto
মার্জিন
margin: auto
উল্লম্ব এবং অনুভূমিকভাবে গ্রিড আইটেমগুলি কেন্দ্র করতে ব্যবহার করুন ।
grid-item {
margin: auto;
}
grid-container {
display: grid;
grid-template-columns: 1fr 1fr;
grid-auto-rows: 75px;
grid-gap: 10px;
}
grid-item {
margin: auto;
}
/* can ignore styles below; decorative only */
grid-container {
background-color: lightyellow;
border: 1px solid #bbb;
padding: 10px;
}
grid-item {
background-color: lightgreen;
border: 1px solid #ccc;
}
<grid-container>
<grid-item>this text should be centered</grid-item>
<grid-item>this text should be centered</grid-item>
<grid-item><img src="http://i.imgur.com/60PVLis.png" width="50" height="50" alt=""></grid-item>
<grid-item><img src="http://i.imgur.com/60PVLis.png" width="50" height="50" alt=""></grid-item>
</grid-container>
গ্রিড আইটেমগুলির বিষয়বস্তু কেন্দ্র করতে আপনাকে এই আইটেমটিকে গ্রিড (বা ফ্লেক্স) ধারক হিসাবে তৈরি করতে হবে, বেনামে আইটেমগুলি তাদের নিজস্ব উপাদানগুলিতে মোড়ানো ( যেহেতু তারা সরাসরি সিএসএস দ্বারা লক্ষ্যবস্তু করা যায় না ), এবং নতুন উপাদানগুলিতে মার্জিন প্রয়োগ করুন।
grid-item {
display: flex;
}
span, img {
margin: auto;
}
grid-container {
display: grid;
grid-template-columns: 1fr 1fr;
grid-auto-rows: 75px;
grid-gap: 10px;
}
grid-item {
display: flex;
}
span, img {
margin: auto;
}
/* can ignore styles below; decorative only */
grid-container {
background-color: lightyellow;
border: 1px solid #bbb;
padding: 10px;
}
grid-item {
background-color: lightgreen;
border: 1px solid #ccc;
}
<grid-container>
<grid-item><span>this text should be centered</span></grid-item>
<grid-item><span>this text should be centered</span></grid-item>
<grid-item><img src="http://i.imgur.com/60PVLis.png" width="50" height="50" alt=""></grid-item>
<grid-item><img src="http://i.imgur.com/60PVLis.png" width="50" height="50" alt=""></grid-item>
</grid-container>
বক্স প্রান্তিককরণ বৈশিষ্ট্য
গ্রিড আইটেমগুলি সারিবদ্ধ করার জন্য নিম্নলিখিত বৈশিষ্ট্যগুলি ব্যবহার করার বিষয়ে বিবেচনা করার সময়, auto
উপরের মার্জিনের বিভাগটি পড়ুন ।
align-items
justify-items
align-self
justify-self
https://www.w3.org/TR/css-align-3/#property-index
text-align: center
কোনও গ্রিড আইটেমে সামগ্রী অনুভূমিকভাবে কেন্দ্র করতে, আপনি text-align
সম্পত্তিটি ব্যবহার করতে পারেন ।
grid-container {
display: grid;
grid-template-columns: 1fr 1fr;
grid-auto-rows: 75px;
grid-gap: 10px;
text-align: center; /* new */
}
/* can ignore styles below; decorative only */
grid-container {
background-color: lightyellow;
border: 1px solid #bbb;
padding: 10px;
}
grid-item {
background-color: lightgreen;
border: 1px solid #ccc;
}
<grid-container>
<grid-item>this text should be centered</grid-item>
<grid-item>this text should be centered</grid-item>
<grid-item><img src="http://i.imgur.com/60PVLis.png" width="50" height="50" alt=""></grid-item>
<grid-item><img src="http://i.imgur.com/60PVLis.png" width="50" height="50" alt=""></grid-item>
</grid-container>
মনে রাখবেন যে উল্লম্ব কেন্দ্রের জন্য, vertical-align: middle
কাজ করবে না।
এর কারণ vertical-align
সম্পত্তিটি কেবল ইনলাইন এবং টেবিল-ঘর ধারকগুলিতে প্রযোজ্য।
grid-container {
display: grid;
grid-template-columns: 1fr 1fr;
grid-auto-rows: 75px;
grid-gap: 10px;
text-align: center; /* <--- works */
vertical-align: middle; /* <--- fails */
}
/* can ignore styles below; decorative only */
grid-container {
background-color: lightyellow;
border: 1px solid #bbb;
padding: 10px;
}
grid-item {
background-color: lightgreen;
border: 1px solid #ccc;
}
<grid-container>
<grid-item>this text should be centered</grid-item>
<grid-item>this text should be centered</grid-item>
<grid-item><img src="http://i.imgur.com/60PVLis.png" width="50" height="50" alt=""></grid-item>
<grid-item><img src="http://i.imgur.com/60PVLis.png" width="50" height="50" alt=""></grid-item>
</grid-container>
কেউ বলতে পারে যে display: inline-grid
একটি ইনলাইন-স্তরের ধারক প্রতিষ্ঠিত করে এবং এটি সত্য হবে। সুতরাং vertical-align
গ্রিড আইটেম কেন কাজ করে না ?
কারণটি হ'ল গ্রিড বিন্যাস প্রসঙ্গে আইটেমগুলি ব্লক-স্তরীয় উপাদান হিসাবে বিবেচনা করা হয়।
6.1। গ্রিড আইটেম প্রদর্শন
display
একটি গ্রিড আইটেমের মান blockified যদি নিদিষ্ট display
একটি উপাদান একটি গ্রিড ধারক উৎপাদিত একটি ইন-প্রবাহ সন্তানের একটি ইনলাইন-স্তরের মান, এটা তার ব্লক-স্তরের সমতুল্য করার নির্ণয় করে।
একটি ব্লক ফর্ম্যাটিং প্রসঙ্গে , vertical-align
সম্পত্তিটি মূলত এমন কিছু জন্য ডিজাইন করা হয়েছিল, ব্রাউজারটি কোনও ইনলাইন-স্তরের ধারকটিতে একটি ব্লক-স্তরের উপাদান খুঁজে পাওয়ার আশা করে না। এটি অবৈধ এইচটিএমএল।
সিএসএস পজিশনিং
শেষ অবধি, একটি সাধারণ সিএসএস কেন্দ্রিক সমাধান রয়েছে যা গ্রিডেও কাজ করে: পরম অবস্থান
বিষয়বস্তু কেন্দ্রের জন্য এটি একটি ভাল পদ্ধতি যা দস্তাবেজের প্রবাহ থেকে সরানো প্রয়োজন। উদাহরণস্বরূপ, আপনি যদি চান:
position: absolute
কেন্দ্রীভূত হতে হবে এমন উপাদানটি এবং কেবলমাত্র position: relative
পূর্বসূরীর উপর ভিত্তি করে পূর্বসূরীর উপর সেট করুন it's এটার মতো কিছু:
grid-item {
position: relative;
text-align: center;
}
span {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
grid-container {
display: grid;
grid-template-columns: 1fr 1fr;
grid-auto-rows: 75px;
grid-gap: 10px;
}
grid-item {
position: relative;
text-align: center;
}
span, img {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
/* can ignore styles below; decorative only */
grid-container {
background-color: lightyellow;
border: 1px solid #bbb;
padding: 10px;
}
grid-item {
background-color: lightgreen;
border: 1px solid #ccc;
}
<grid-container>
<grid-item><span>this text should be centered</span></grid-item>
<grid-item><span>this text should be centered</span></grid-item>
<grid-item><img src="http://i.imgur.com/60PVLis.png" width="50" height="50" alt=""></grid-item>
<grid-item><img src="http://i.imgur.com/60PVLis.png" width="50" height="50" alt=""></grid-item>
</grid-container>
এই পদ্ধতিটি কীভাবে কাজ করে তার একটি সম্পূর্ণ ব্যাখ্যা এখানে রয়েছে:
গ্রিড স্পেসে পরম অবস্থান সম্পর্কিত বিভাগটি এখানে: