ফ্লেক্সবক্স (Flexbox) এবং CSS গ্রিড (Grid) উভয়ই শক্তিশালী লেআউট মডিউল, যা ওয়েব ডিজাইনে উপাদানগুলোর সঠিক বিন্যাস এবং স্থান নিয়ন্ত্রণে ব্যবহৃত হয়। এগুলোর প্রতিটির নিজস্ব সুবিধা রয়েছে এবং একসাথে ব্যবহারের মাধ্যমে আপনি আরও নমনীয় এবং শক্তিশালী লেআউট তৈরি করতে পারেন।
Flexbox এবং Grid এর সমন্বয়ে লেআউট তৈরি করার প্রয়োজনীয়তা
- Flexbox সবচেয়ে ভালো কাজ করে এক-মাত্রিক (one-dimensional) লেআউটের জন্য (যেমন, একটি সারি বা কলাম), যেখানে উপাদানগুলো অনুভূমিক বা উল্লম্বভাবে সজ্জিত হয়।
- Grid সবচেয়ে ভালো কাজ করে দুই-মাত্রিক (two-dimensional) লেআউটের জন্য (যেমন, সারি এবং কলাম একসাথে), যেখানে উপাদানগুলোকে সঠিকভাবে সারি ও কলামে সাজানো যায়।
এই দুটি মডিউলকে একসাথে ব্যবহার করে আপনি জটিল লেআউট তৈরি করতে পারেন, যেখানে কিছু অংশ গ্রিড মডেল এবং কিছু অংশ ফ্লেক্সবক্স মডেলের সুবিধা ব্যবহার করবে।
Flexbox এবং Grid এর সমন্বয়ে একটি উদাহরণ লেআউট
HTML:
<div class="main-container">
<div class="header">Header</div>
<div class="main-content">
<div class="sidebar">Sidebar</div>
<div class="content">Content</div>
</div>
<div class="footer">Footer</div>
</div>
CSS:
/* মূল কন্টেইনার */
.main-container {
display: grid;
grid-template-rows: 100px 1fr 50px; /* Header, Main Content, Footer */
grid-template-columns: 1fr; /* এক কলাম */
height: 100vh; /* পুরো স্ক্রীন */
}
/* হেডার */
.header {
background-color: lightblue;
padding: 20px;
text-align: center;
}
/* মূল কন্টেন্ট */
.main-content {
display: flex;
flex-direction: row; /* Sidebar এবং Content এর মধ্যে অনুভূমিক বিন্যাস */
gap: 20px; /* Sidebar এবং Content এর মধ্যে ফাঁকা জায়গা */
padding: 20px;
}
/* সাইডবার */
.sidebar {
background-color: lightgray;
padding: 20px;
width: 25%;
flex: 1; /* Sidebar এবং Content এর মধ্যে ফাঁকা জায়গা অনুযায়ী পরিবর্তন হবে */
}
/* কন্টেন্ট */
.content {
background-color: lightyellow;
padding: 20px;
width: 70%;
flex: 3; /* Content বড় হবে, কারণ flex: 3 */
}
/* ফুটার */
.footer {
background-color: lightcoral;
padding: 20px;
text-align: center;
}
ব্যাখ্যা:
- Grid Layout (মূল কন্টেইনার):
.main-containerএকটি Grid Container হিসেবে কাজ করছে।grid-template-rowsএবংgrid-template-columnsব্যবহার করে হেডার, মেইন কন্টেন্ট, এবং ফুটারের জন্য স্থির উচ্চতা এবং কলাম নির্ধারণ করা হয়েছে।1frমানে "একটি অংশ", যা মূল কন্টেন্টের জন্য ব্যবহৃত হয়েছে এবং এটা স্ক্রীনের বাকী অংশ দখল করবে।
- Flexbox Layout (মূল কন্টেন্ট):
.main-contentএকটি Flex Container, যেখানে সাইডবার এবং কন্টেন্ট এলিমেন্টগুলো অনুভূমিকভাবে সজ্জিত হয়েছে (flex-direction: row).gap: 20pxব্যবহৃত হয়েছে সাইডবার এবং কন্টেন্টের মধ্যে জায়গা রাখার জন্য।
- Flex Items:
.sidebarএবং.contentফ্লেক্স আইটেম হিসেবে কাজ করছে, এবং তাদের মধ্যে ফাঁকা জায়গা সঠিকভাবে নিয়ন্ত্রণ করা হয়েছে।.sidebarএর জন্যflex: 1;এবং.contentএর জন্যflex: 3;ব্যবহার করা হয়েছে, যাতে কন্টেন্ট এলিমেন্টটি সাইডবারের তুলনায় বেশি জায়গা নেয়।
ফ্লেক্সবক্স এবং গ্রিডের সমন্বয়ে আরও উন্নত উদাহরণ
ধরা যাক, আপনার ওয়েবপেজে একটি ন্যাভিগেশন বার, সাইডবার, কন্টেন্ট এরিয়া এবং ফুটার রয়েছে। এই ডিজাইনটিকে ফ্লেক্সবক্স এবং গ্রিড মডেল একসাথে ব্যবহার করে তৈরি করা যেতে পারে।
HTML:
<div class="layout">
<header class="header">Header</header>
<nav class="nav">Nav</nav>
<div class="main-content">
<aside class="sidebar">Sidebar</aside>
<section class="content">Content</section>
</div>
<footer class="footer">Footer</footer>
</div>
CSS:
/* মূল কন্টেইনার */
.layout {
display: grid;
grid-template-columns: 1fr 3fr; /* সাইডবার এবং কন্টেন্টের জন্য দুইটি কলাম */
grid-template-rows: auto 1fr auto; /* Header, Main Content, Footer */
gap: 20px;
height: 100vh;
}
/* হেডার */
.header {
background-color: lightblue;
padding: 10px;
text-align: center;
}
/* ন্যাভিগেশন */
.nav {
background-color: lightcoral;
padding: 10px;
text-align: center;
}
/* মূল কন্টেন্ট */
.main-content {
display: flex;
gap: 20px;
}
/* সাইডবার */
.sidebar {
background-color: lightgreen;
padding: 10px;
flex: 1; /* সাইডবারের প্রস্থ 1:3 অনুপাতে কন্টেন্টের সাথে সম্পর্কিত */
}
/* কন্টেন্ট */
.content {
background-color: lightyellow;
padding: 10px;
flex: 3;
}
/* ফুটার */
.footer {
background-color: lightgray;
padding: 10px;
text-align: center;
}
ব্যাখ্যা:
- Grid Layout:
.layoutএdisplay: grid;ব্যবহার করা হয়েছে। এখানেgrid-template-columns: 1fr 3fr;ব্যবহার করে সাইডবার এবং কন্টেন্ট এরিয়া জন্য দুটি কলাম তৈরি করা হয়েছে, যেখানে কন্টেন্ট এলিমেন্টটি সাইডবারের তুলনায় ৩ গুণ জায়গা নেবে।
- Flexbox Layout:
.main-contentএর মধ্যে সাইডবার এবং কন্টেন্ট এলিমেন্টগুলোকেdisplay: flex;দিয়ে অনুভূমিকভাবে সাজানো হয়েছে।gap: 20pxদিয়ে সাইডবার এবং কন্টেন্ট এলিমেন্টের মধ্যে সমান দূরত্ব রাখা হয়েছে।
সারাংশ:
- Flexbox এবং Grid একসাথে ব্যবহারের মাধ্যমে আপনি এক্সটেনসিভ এবং রেস্পন্সিভ ওয়েব লেআউট তৈরি করতে পারেন।
- Grid দুটি মাত্রায় লেআউট তৈরি করতে সক্ষম (সারি এবং কলাম), যা দুই বা তার বেশি আয়তাকার কন্টেন্ট তৈরি করার জন্য আদর্শ।
- Flexbox একমাত্রিক (এক সারি বা কলাম) লেআউট তৈরি করার জন্য ব্যবহার করা হয় এবং এটি স্থান ব্যবস্থাপনা ও উপাদানগুলোর আকার নিয়ন্ত্রণে সাহায্য করে।
- Flexbox এবং Grid এর সমন্বয়ে আপনি বিভিন্ন কনটেইনারের মধ্যে উপাদানগুলোর আকার এবং বিন্যাস নিয়ন্ত্রণ করতে পারেন এবং এর ফলে একটি উন্নত, নমনীয় এবং রেস্পন্সিভ লেআউট তৈরি করতে সক্ষম হবেন।
Content added By