ওয়েব ডেভেলপমেন্ট শিখতে গিয়ে আমরা Flexbox আর Grid নিয়ে শিখেছি। দুটোই প্রায় কাছাকাছি। কিন্তু প্রশ্ন হলো, কোনটা কোথায় ব্যবহার করা উচিত?
আচ্ছা, একটা উদাহরণ দিই। ধরি, আমি একটা মুভি হলের সিট ডিজাইন করবো। এখানে,
- Flexbox হলে সারি বরাবর সিট ঠিকঠাক বসানোর জন্য পারফেক্ট।
- Grid হলে পুরো সিটিং এরেঞ্জমেন্ট ডিজাইন করার জন্য পারফেক্ট।
এখন আসল কাহিনিতে আসি।
Flexbox ( লাইন ধরে স্মার্টলি সাজানোর জন্য)
Flexbox এমন এক টুল, যা দিয়ে আমরা এলিমেন্টগুলোকে এক লাইনে বা এক কলামে সুন্দরভাবে সাজাতে পারবে। এর মধ্যে সবচেয়ে দারুণ জিনিস হলো, এটা নিজে থেকেই এলিমেন্টের সাইজ ঠিক করে ফেলতে পারে!
যখন Flexbox বেস্ট চয়েস:
একটি লাইনে এলিমেন্ট সাজাতে হলে (যেমন, Navbar, Button Group)
কন্টেন্টের সাইজ ডায়নামিক হলে (যেমন, কার্ডের ভিতরে টেক্সট কম-বেশি হলে)
এলিমেন্টকে সেন্টারে আনতে হলে
মাত্র ৩টি লাইন ব্যবহার করেই এলিমেন্টকে সেন্টারে আনা যায়। যেমন, একটি Navbar-কে সেন্টারে আনতে হলে,
.navbar {
display: flex;
justify-content: space-between;
align-items: center;
}
এটা দিয়ে খুব সহজে Navbar-এর আইটেমগুলো সুন্দরভাবে সাজানো যাবে! কত্ত সহজ। তাই না?
Grid (পুরো লেআউট ডিজাইন করার জন্য)
Flexbox এক লাইনে কাজ করে, কিন্তু Grid পুরো লেআউট ডিজাইন করতে পারে! একসাথে Row এবং Column দুটোই কন্ট্রোল করা সম্ভব।
যখন Grid বেস্ট চয়েস:
পুরো লেআউট ডিজাইন করতে হলে (যেমন, Blog Layout, Dashboard)
একসাথে কলাম ও রো নিয়ে কাজ করতে হলে
Flexbox দিয়ে করতে গেলে জটিল হয়ে যাচ্ছে মনে হলে!
একটি উদাহরন দিলে মনে হয় সহজ হবে। একটি গ্যালারি লেআউটের জন্য Grid ব্যবহার করলে,
.gallery {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}
এটা দিয়ে খুব সহজেই ৩-কলামের গ্যালারি লেআউট তৈরি করা যাবে!
তাহলে কোনটা কোথায় ব্যবহার করবো বুঝতে পেরেছেন? আচ্ছা সারাংশটা এককথায় তুলে ধরছি। তাহলে মনে রাখা সহজ হবে।
এক কথায় মনে রাখার টিপস:
→ Navbar বা Horizontal Layout? Flexbox
→ গ্যালারি বা Page Layout? Grid
→ এক লাইনে এলিমেন্ট? Flexbox
→ একসাথে Row + Column লাগবে? Grid
কি মনে হয়? যখন যেটা ব্যবহার করার দরকার সেটি ব্যবহার করতে পারব না?