Flexbox এর শক্তি:
Flexbox একটি অত্যন্ত শক্তিশালী এবং নমনীয় CSS লেআউট মডেল যা আপনাকে এক-মাত্রিক (one-dimensional) লেআউট সিস্টেম তৈরি করতে সাহায্য করে। তবে, Flexbox শুধুমাত্র সহজ এবং ছোট লেআউট নয়, এটি বেশ জটিল এবং অ্যাডভান্সড লেআউটেও কার্যকরী হতে পারে। Flexbox ব্যবহারের মাধ্যমে আপনি কমপ্লেক্স লেআউট তৈরি করতে পারেন, যেখানে উপাদানগুলোর আকার, স্থান এবং বিন্যাস সহজেই নিয়ন্ত্রণ করা সম্ভব।
Complex Layouts তৈরি করার জন্য Flexbox এর উপযুক্ত ব্যবহার:
Flexbox এমন অনেক ধরনের জটিল লেআউট তৈরি করতে সহায়ক, যেমন:
- নেভিগেশন বার (Navigation Bars)
- কার্ড লেআউট (Card Layouts)
- গ্রিড লেআউট (Grid Layouts)
- ফ্লেক্স কন্টেইনারের মধ্যে আংশিক বা পুরো সাইজের এলিমেন্ট একসাথে তৈরি করা
- নির্দিষ্ট হাইট এবং উইথ সহ ফ্লেক্স আইটেম তৈরি
উদাহরণ ১: নেভিগেশন বার (Navigation Bar)
একটি নেভিগেশন বার তৈরি করার জন্য Flexbox একটি খুব উপযোগী টুল। Flexbox ব্যবহার করে নেভিগেশন আইটেমগুলোকে সহজেই অনুভূমিকভাবে (horizontal) সাজানো যায়, এবং ছোট স্ক্রীনে (responsive) তাদেরকে উল্লম্ব (vertical)ভাবে সাজানো যায়।
HTML:
<nav class="navbar">
<a href="#">Home</a>
<a href="#">About</a>
<a href="#">Services</a>
<a href="#">Contact</a>
</nav>
CSS:
.navbar {
display: flex;
justify-content: space-around;
align-items: center;
background-color: #333;
padding: 10px;
}
.navbar a {
color: white;
text-decoration: none;
padding: 10px 20px;
}
/* ছোট স্ক্রীনে নেভিগেশন আইটেমগুলো স্ট্যাক হবে */
@media (max-width: 600px) {
.navbar {
flex-direction: column;
}
}
ব্যাখ্যা:
justify-content: space-around;: আইটেমগুলোকে সমান দূরত্বে অনুভূমিকভাবে সাজায়।flex-direction: column;(মোবাইল স্ক্রীনে): ছোট স্ক্রীনে আইটেমগুলোকে উল্লম্বভাবে সাজানো হয়।
উদাহরণ ২: কার্ড লেআউট (Card Layout)
Flexbox দিয়ে একটি রেস্পন্সিভ কার্ড লেআউট তৈরি করা খুবই সহজ। Flexbox আইটেমগুলোর আকার স্বয়ংক্রিয়ভাবে নিয়ন্ত্রণ করে, যা বড় পর্দায় একাধিক কলামে এবং ছোট পর্দায় এক কলামে সাজানো যায়।
HTML:
<div class="card-container">
<div class="card">Card 1</div>
<div class="card">Card 2</div>
<div class="card">Card 3</div>
<div class="card">Card 4</div>
</div>
CSS:
.card-container {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.card {
background-color: #007bff;
color: white;
padding: 20px;
text-align: center;
flex: 1 1 200px; /* প্রতিটি কার্ড 200px হবে, এবং জায়গা থাকলে বাড়বে */
}
/* ছোট স্ক্রীনে কার্ডগুলো এক সাইজে বসবে */
@media (max-width: 600px) {
.card {
flex: 1 1 100%; /* প্রতিটি কার্ড পুরো সাইজ নেবে */
}
}
ব্যাখ্যা:
flex-wrap: wrap;: আইটেমগুলো একাধিক লাইনে স্বয়ংক্রিয়ভাবে স্থান নিবে।flex: 1 1 200px;: প্রতিটি কার্ড 200px জায়গা নেবে, তবে জায়গা অনুযায়ী স্বয়ংক্রিয়ভাবে প্রসারিত হবে।@media (max-width: 600px): ছোট স্ক্রীনে আইটেমগুলো পুরোপুরি এক কলামে সাজানো হবে।
উদাহরণ ৩: ফ্লেক্স কন্টেইনারের মধ্যে আংশিক বা পুরো সাইজের এলিমেন্ট একসাথে তৈরি করা
Flexbox ব্যবহার করে আপনি কন্টেইনারের মধ্যে বিভিন্ন আকারের উপাদান রাখতে পারেন, যেখানে একাধিক উপাদান সমানভাবে জায়গা নিতে পারে এবং অন্যান্য উপাদান নির্দিষ্ট আকার নিয়ে থাকে।
HTML:
<div class="flex-container">
<div class="flex-item large">Large Item</div>
<div class="flex-item">Item 2</div>
<div class="flex-item">Item 3</div>
<div class="flex-item">Item 4</div>
</div>
CSS:
.flex-container {
display: flex;
justify-content: space-between;
}
.flex-item {
background-color: teal;
color: white;
padding: 20px;
text-align: center;
}
.large {
flex: 2; /* এই আইটেম বড় হবে */
}
@media (max-width: 600px) {
.flex-container {
flex-direction: column; /* ছোট স্ক্রীনে আইটেমগুলো উল্লম্বভাবে সাজানো হবে */
}
}
ব্যাখ্যা:
flex: 2;:.largeক্লাসের আইটেমটি অন্যান্য আইটেমের তুলনায় দ্বিগুণ জায়গা নেবে।justify-content: space-between;: আইটেমগুলোর মধ্যে সমান দূরত্বে স্থান তৈরি করবে।flex-direction: column;(মোবাইল স্ক্রীনে): ছোট স্ক্রীনে উপাদানগুলো উল্লম্বভাবে সাজানো হবে।
উদাহরণ ৪: ফ্লেক্স গ্রিড লেআউট (Flex Grid Layout)
Flexbox ব্যবহার করে একটি গ্রিড লেআউটও তৈরি করা সম্ভব, যেখানে উপাদানগুলো সারি এবং কলামে সজ্জিত থাকবে।
HTML:
<div class="flex-grid">
<div class="grid-item">1</div>
<div class="grid-item">2</div>
<div class="grid-item">3</div>
<div class="grid-item">4</div>
<div class="grid-item">5</div>
<div class="grid-item">6</div>
</div>
CSS:
.flex-grid {
display: flex;
flex-wrap: wrap;
}
.grid-item {
flex: 1 1 30%; /* প্রতিটি আইটেম 30% জায়গা নেবে */
background-color: #007bff;
color: white;
padding: 20px;
margin: 5px;
text-align: center;
}
@media (max-width: 600px) {
.grid-item {
flex: 1 1 100%; /* ছোট স্ক্রীনে প্রতিটি গ্রিড আইটেম পুরো সাইজ নেবে */
}
}
ব্যাখ্যা:
flex-wrap: wrap;: আইটেমগুলো একাধিক লাইনে সজ্জিত হবে।flex: 1 1 30%;: প্রতিটি গ্রিড আইটেম 30% জায়গা নেবে, কিন্তু যদি জায়গা থাকে তবে তারা প্রসারিত হবে।@media (max-width: 600px): ছোট স্ক্রীনে প্রতিটি আইটেম পুরোপুরি এক কলামে সাজানো হবে।
সারাংশ
Flexbox একটি অত্যন্ত শক্তিশালী টুল যা জটিল এবং রেস্পন্সিভ লেআউট তৈরি করতে সাহায্য করে। এর মাধ্যমে আপনি বিভিন্ন ধরনের লেআউট যেমন নেভিগেশন বার, কার্ড লেআউট, গ্রিড লেআউট, এবং ফ্লেক্স কন্টেইনারের মধ্যে আংশিক বা পুরো সাইজের এলিমেন্ট তৈরি করতে পারেন। Flexbox-এর flex-wrap, justify-content, align-items, flex-direction, এবং flex প্রপার্টিগুলোর সাহায্যে আপনি সহজেই কমপ্লেক্স লেআউট তৈরি করতে পারেন এবং রেস্পন্সিভ ডিজাইনের জন্য উপযুক্ত লেআউট নিশ্চিত করতে পারেন।
Read more