Skip to content
CSS Flexbox প্লেগ্রাউন্ড
Tools

CSS Flexbox প্লেগ্রাউন্ড

নতুন

লাইভ প্রিভিউ সহ flex প্রপার্টি সমন্বয় করুন এবং CSS কপি করুন।

Preview width
4 items
main axis · justify-content cross axis · align-items

Container properties

Selected item

Click an item in the preview to edit its flex-grow, flex-shrink, flex-basis, order and align-self — or turn it into a nested flex container.

Runs entirely in your browser. Nothing is uploaded.

একটি ভিজ্যুয়াল ফ্লেক্সবক্স জেনারেটর যা আপনার হয়ে CSS লিখে দেয়

এই ফ্লেক্সবক্স জেনারেটর CSS Flexible Box Layout-কে এমন কিছুতে পরিণত করে যা আপনি দেখতে পারেন। justify-content বা align-items কী করবে তা অনুমান করার বদলে, আপনি একটি লেবেলযুক্ত কন্ট্রোলে প্রতিটি প্রপার্টি টগল করেন এবং লাইভ প্রিভিউ তাৎক্ষণিকভাবে পুনর্বিন্যস্ত হতে দেখেন — তারপর পরিষ্কার, প্রোডাকশন-রেডি কোড কপি করেন। এটি সম্পূর্ণভাবে আপনার ব্রাউজারে চলে, কোনো সাইনআপ ছাড়া এবং কিছুই আপলোড না করে।

এটি একটি প্রকৃত ফ্লেক্সবক্স প্লেগ্রাউন্ড: একটি প্রকৃত ফ্লেক্স কন্টেইনার এডিটেবল চাইল্ড আইটেমসহ, পূর্ণ কন্টেইনার ও প্রতি-আইটেম কন্ট্রোল, নেস্টেড কন্টেইনার, একটি রিসাইজেবল রেসপন্সিভ প্রিভিউ, এবং একটি শেয়ারযোগ্য URL। আপনি ফ্লেক্সবক্স শিখছেন হোক বা দ্রুত একটি নেভবার, কার্ড রো বা সেন্টার করা হিরো তৈরি করছেন হোক, আপনি সেকেন্ডেই ঠিক সেই লেআউট — এবং তার সাথে মেলানো CSS, Tailwind বা Bootstrap — পেতে পারেন।

প্রতিটি কন্টেইনার প্রপার্টি, লাইভ প্রিভিউসহ

স্পেক যেভাবে করে সেভাবেই কন্টেইনার নিয়ন্ত্রণ করুন। মূল অক্ষ বেছে নিতে flex-direction (row, row-reverse, column, column-reverse) সেট করুন, এর বরাবর আইটেম স্পেস করতে justify-content, এবং ক্রস অক্ষে তাদের অ্যালাইন করতে align-items। আইটেমগুলোকে নতুন লাইনে যেতে দিতে flex-wrap চালু করুন, সেই র‍্যাপ করা লাইন স্পেস করতে align-content ব্যবহার করুন, এবং স্বাধীন row ও column gap মান ডায়াল করুন।

একটি বিল্ট-ইন অক্ষ লেজেন্ড দেখায় আপনি flex-direction পরিবর্তন করার সাথে সাথে কোন দিকটি মূল অক্ষ এবং কোনটি ক্রস অক্ষ, তাই justify-contentalign-items-এর মধ্যকার সম্পর্ক অবশেষে ধরা পড়ে। এটি একটি হ্যান্ডস-অন ফ্লেক্সবক্স চিট শিট যা আপনি করার মধ্য দিয়ে শিখেন।

প্রতি-আইটেম নিয়ন্ত্রণ: grow, shrink, basis, order এবং align-self

বেশিরভাগ জেনারেটর শুধু কন্টেইনার পর্যন্ত থামে। এটি আপনাকে প্রিভিউতে যেকোনো আইটেম ক্লিক করে আলাদাভাবে এডিট করতে দেয়: flex-grow, flex-shrinkflex-basis (flex শর্টহ্যান্ড) সেট করুন, এর align-self ওভাররাইড করুন, এবং HTML স্পর্শ না করেই এর পুনঃঅবস্থান করতে order পরিবর্তন করুন। স্পেস কীভাবে পুনর্বিতরণ হয় তা পরীক্ষা করতে আইটেম যোগ বা সরান।

এটি প্রকৃত প্যাটার্ন তৈরি করা সহজ করে দেয় — একটি স্থির সাইডবার একটি ফ্লেক্সিবল মেইন কলামের পাশে (flex: 0 0 240px flex: 1-এর পাশে), একটি একক সেন্টার করা আইটেম, বা margin-left: auto দিয়ে দূরপ্রান্তে ঠেলে দেওয়া একটি ফুটার লিংক।

নেস্টেড ফ্লেক্সবক্স এবং একটি রেসপন্সিভ প্রিভিউ

প্রকৃত লেআউট নেস্ট করা থাকে। যেকোনো আইটেম নিজেই একটি নেস্টেড ফ্লেক্স কন্টেইনার হতে পারে নিজস্ব direction, justify ও align সেটিংসসহ — ঠিক যা একটি হেডার রো-এর উপরে একটি বডি ধরে রাখা কার্ডের জন্য, বা একটি টুলবারের ভেতরে একটি টুলবারের জন্য নেস্টেড ফ্লেক্সবক্স জেনারেটর-এর প্রয়োজন হয়। জেনারেট করা কোডে নেস্টেড নিয়মও অন্তর্ভুক্ত থাকে।

ফ্লেক্সবক্স রেসপন্সিভ আচরণ সম্পর্কে হওয়ায়, প্রিভিউটি রিসাইজেবল: হ্যান্ডেল টেনে নিন বা একটি Mobile / Tablet / Desktop প্রস্থ প্রিসেট বেছে নিন এবং প্রতিটি সাইজে আইটেমগুলো র‍্যাপ ও পুনর্বিন্যস্ত হতে দেখুন। শিপ করার আগে একটি রেসপন্সিভ ফ্লেক্সবক্স লেআউট ঠিকভাবে আচরণ করছে কিনা তা নিশ্চিত করার দ্রুততম উপায়।

CSS, Tailwind বা Bootstrap হিসেবে কপি করুন — এবং অন্যান্য টুলের সাথে এটি কেমন

আপনার প্রজেক্ট যে ফরম্যাট ব্যবহার করে তা পেতে আউটপুট ট্যাব পাল্টান। CSS আপনাকে দেয় পরিষ্কার .container ও প্রতি-আইটেম নিয়ম flex শর্টহ্যান্ড ব্যবহার করে। Tailwind ইউটিলিটি ক্লাস লেখে — flex, flex-col, justify-between, items-center, gap-4, flex-1, order-2 — একটি রেডি-টু-পেস্ট HTML স্নিপেটে। Bootstrap সমতুল্য d-flex ইউটিলিটি ক্লাস আউটপুট করে। শুধুমাত্র আপনার আসলে পরিবর্তন করা প্রপার্টিগুলো নির্গত হয়, তাই আউটপুট প্রতিটি ডিফল্ট পুনরাবৃত্তি করার বদলে ন্যূনতম ও পঠনযোগ্য থাকে।

Flexbox.help এবং Loading.io-র ফ্লেক্সবক্স জেনারেটরের মতো অন্যান্য ভিজ্যুয়াল জেনারেটর কন্টেইনার প্রপার্টি দেয় কিন্তু প্রতি-আইটেম কন্ট্রোল ও নেস্টেড কন্টেইনার বাদ দেয়। Tailwind-এর অনলাইন প্লেগ্রাউন্ড ভ্যানিলা CSS জেনারেট করে না। এই টুল তিনটি আউটপুট ফরম্যাটই করে, নেস্টিং সামলায়, এবং একবার লোড হওয়ার পর অফলাইনে চলে — কোনো অ্যাকাউন্ট নেই, খরচ নেই, ব্রাউজার ছেড়ে যাওয়া কোনো ডেটা নেই।

দুই-অক্ষ মানসিক মডেল: main axis, cross axis, এবং কেন justify বনাম align সবাইকে বিভ্রান্ত করে

ফ্লেক্সবক্স দুটি লম্ব অক্ষে কাজ করে। main axis হলো যে দিকে ফ্লেক্স আইটেম বসানো হয় — flex-direction দিয়ে সেট করা। flex-direction: row-এ (ডিফল্ট), main axis বাম থেকে ডানে চলে। flex-direction: column-এ, এটি উপর থেকে নিচে চলে। cross axis সবসময় এর লম্ব: main axis অনুভূমিক হলে উল্লম্ব, main axis উল্লম্ব হলে অনুভূমিক।

justify-content এবং align-items ডেভেলপারদের বিভ্রান্ত করার কারণ হলো তাদের নাম মনগড়া মনে হয় যতক্ষণ না আপনি সেগুলো অক্ষের সাথে পিন করেন। justify-content সবসময় main axis নিয়ন্ত্রণ করে — এটি আইটেম প্রবাহের দিকে অতিরিক্ত স্পেস বিতরণ করে। align-items সবসময় cross axis নিয়ন্ত্রণ করে — এটি লম্ব মাত্রায় আইটেম কীভাবে অবস্থান করবে তা নির্ধারণ করে। flex-direction কে column-এ পাল্টান এবং দুটো প্রপার্টি ভিজ্যুয়ালভাবে ভূমিকা বদলে ফেলে, কারণ অক্ষগুলো বদলে গেছে, কিন্তু নিয়ম অপরিবর্তিত থাকে: justify = main, align = cross।

align-content-ও আছে, যা শুধু তখনই সক্রিয় হয় যখন flex-wrap: wrap একাধিক লাইন তৈরি করে। এটি নিয়ন্ত্রণ করে সেই লাইনগুলো cross axis-এ কীভাবে স্পেস হয়, যখন align-items প্রতিটি লাইনের ভেতরে পৃথক আইটেম অ্যালাইনমেন্ট সামলায়। অক্ষ মডেলটি মাথায় রেখে — একটি অনুভূমিক তীর ও একটি উল্লম্ব তীর আঁকুন, একটিকে 'main' এবং একটিকে 'cross' লেবেল দিন flex-direction-এর ভিত্তিতে, তারপর সেই অনুযায়ী justify ও align বরাদ্দ করুন — প্রায় প্রতিটি ফ্লেক্সবক্স প্রপার্টি-বিভ্রান্তি বাগ দূর করে।

flex শর্টহ্যান্ড ডিকোড: flex: 1, flex: auto, এবং flex: none একই জিনিস নয়

flex শর্টহ্যান্ড তিনটি মান প্যাক করে: flex-grow, flex-shrink, এবং flex-basisflex-basis হলো ফ্রি স্পেস বিতরণের আগে আইটেমের অনুমানিক সাইজ — একটি শুরুর বিন্দু হিসেবে ভাবুন। flex-grow একটি অনুপাত যা একটি আইটেম কীভাবে অবশিষ্ট স্পেস পূরণ করতে প্রসারিত হয় তা নিয়ন্ত্রণ করে; 0 মানে এটি কখনও বাড়ে না, 1 মানে এটি একটি আনুপাতিক অংশ নেয়। flex-shrink ওভারফ্লোর জন্য এটি প্রতিফলিত করে: 1 আইটেমকে সংকুচিত হতে দেয়, 0 এটিকে তার basis-এ লক করে দেয় কন্টেইনার খুব ছোট হলেও।

flex: 1 1 1 0%-এ প্রসারিত হয়। মূল হলো সেই 0% basis: সব আইটেম শূন্য অন্তর্নিহিত সাইজ দিয়ে শুরু হয়, তাই ফ্রি স্পেস শুধু তাদের grow অনুপাত দিয়ে ভাগ হয় — প্রতিটি flex: 1 আইটেম তার কনটেন্ট নির্বিশেষে ঠিক একই প্রস্থে পৌঁছায়। flex: auto 1 1 auto-এ প্রসারিত হয়। এখানে basis হলো auto, মানে প্রতিটি আইটেমের কনটেন্ট প্রস্থ প্রথমে বিবেচনা করা হয়, এবং শুধু অবশিষ্ট স্পেস ভাগ করা হয়। একই flex: auto-সহ একটি ছোট আইটেম ও একটি লম্বা আইটেম সমান প্রস্থের হবে না। flex: none হলো 0 0 auto: আইটেম বাড়ে না বা সংকুচিত হয় না, যাই ঘটুক না কেন ঠিক তার স্বাভাবিক সাইজে থাকে।

বাস্তবে এই পার্থক্য প্রতিনিয়ত গুরুত্বপূর্ণ। সমান-প্রস্থের নেভিগেশন ট্যাব flex: 1 চায় (সমান বিভাজন, কনটেন্ট উপেক্ষা করে)। একটি ট্যাগ লিস্ট যা সুন্দরভাবে ওভারফ্লো করা উচিত প্রতিটি ট্যাগে flex: none চায়। একটি স্থির লেবেল ও একটি স্ট্রেচি ইনপুটসহ একটি ফর্ম লেবেলে flex: 0 0 120px এবং ইনপুটে flex: 1 ব্যবহার করে। শর্টহ্যান্ড মান মুখস্থ করার বদলে তিনটি সাব-প্রপার্টি আলাদাভাবে বোঝা, যেকোনো সাইজিং সমস্যা যুক্তি করা সহজ করে দেয়।

মুখস্থ রাখার মতো সাধারণ ফ্লেক্সবক্স লেআউট প্যাটার্ন

নিখুঁত সেন্টারিং সবচেয়ে বেশি সার্চ করা ফ্লেক্সবক্স কৌশল: কন্টেইনারে display: flex; justify-content: center; align-items: center; সেট করুন, একটি height দিন (ফুল-স্ক্রিনের জন্য যেমন min-height: 100vh), এবং চাইল্ডটি তার সাইজ যাই হোক না কেন একদম কেন্দ্রে বসে যাবে। এটি মোডাল, হিরো সেকশন, লোডিং স্পিনার এবং empty-state ইলাস্ট্রেশনের জন্য কাজ করে। ফ্লেক্সবক্সের আগে এর জন্য absolute positioning ও negative margin-এর সমন্বয় প্রয়োজন হতো; এখন এটি দুটো ঘোষণা।

একটি sticky footer-এর জন্য পেজটি অন্তত viewport height পূর্ণ করতে হবে এবং মেইন কনটেন্ট প্রসারিত হয়ে ফুটারকে নিচে ঠেলে দিতে হবে। পেজটি display: flex; flex-direction: column; min-height: 100vh;-এ মুড়ে দিন এবং মেইন কনটেন্ট এরিয়াতে flex: 1 দিন — এটি অবশিষ্ট সব উল্লম্ব স্পেস পূরণ করতে বাড়ে যাতে ফুটার ছোট পেজেও সবসময় নিচে বসে থাকে। সমান-উচ্চতার কলাম বিনামূল্যেই আসে: কারণ একই সারির ফ্লেক্স আইটেম ডিফল্টভাবে সবচেয়ে লম্বা সিবলিংয়ের সাথে মিলে স্ট্রেচ করে (align-items: stretch), একটি মাল্টি-কলাম কার্ড লেআউটে কোনো জাভাস্ক্রিপ্ট ছাড়াই অভিন্ন কলাম উচ্চতা থাকে। একটি নেভবার লোগো বামে ও লিংক ডানে ফ্লেক্স রো-তে justify-content: space-between ব্যবহার করে, বা লিংক গ্রুপকে দূরপ্রান্তে ঠেলতে শুধু margin-left: auto রাখে — একটি শক্তিশালী ট্রিক কারণ ফ্লেক্সবক্সে auto margin আইটেমটি অবস্থান করার আগে সব উপলব্ধ ফ্রি স্পেস ব্যবহার করে ফেলে।

flex-wrap-সহ কার্ড গ্রিড কন্টেইনারে flex-wrap: wrap এবং প্রতিটি কার্ডে flex: 1 1 280px একত্রিত করে — কার্ড একটি সারি পূরণ করে এবং আর ফিট না হলে র‍্যাপ করে। অজানা দৈর্ঘ্যের কনটেন্টের জন্য এটি CSS Grid-এর একটি পরিষ্কার বিকল্প, এবং সংকীর্ণ স্ক্রিনে ভালোভাবে ডিগ্রেড হয় কারণ কার্ড ওভারফ্লো না করে স্বাভাবিকভাবে র‍্যাপ করে। margin-এর বদলে gap জোড়া লাগানো ক্লাসিক 'last-row gap' সমস্যা এড়ায় যা margin সারিগুলো মাঝপথে শেষ হলে ঘটাত।

অ্যাক্সেসিবিলিটি: order প্রপার্টি কখন স্ক্রিন রিডার ও কিবোর্ড নেভিগেশন ভাঙে

ফ্লেক্সবক্সের order প্রপার্টি এবং flex-direction: row-reverse / column-reverse মান আইটেম কীভাবে ভিজ্যুয়ালভাবে দেখা যায় তা পাল্টে দেয় অন্তর্নিহিত HTML সোর্স অর্ডার স্পর্শ না করেই। ব্রাউজার সেগুলোকে ভিন্ন সিকোয়েন্সে পেইন্ট করে, কিন্তু অ্যাসিস্টিভ টেকনোলজি ও কিবোর্ড নেভিগেশন DOM অর্ডার অনুসরণ করে, ভিজ্যুয়াল অর্ডার নয়। একজন দৃষ্টিসম্পন্ন মাউস ব্যবহারকারী দেখেন Tab 3, Tab 1, Tab 2; একজন স্ক্রিন-রিডার ব্যবহারকারী শোনেন Tab 1, Tab 2, Tab 3; একজন Tab চাপা কিবোর্ড ব্যবহারকারী DOM অর্ডারে এলিমেন্টগুলোর মধ্য দিয়ে চলে যায়, যা ভিজ্যুয়ালি সংলগ্ন যা দেখা যায় তা এড়িয়ে যেতে পারে।

WCAG সাফল্য মানদণ্ড ১.৩.২ (Meaningful Sequence) দাবি করে যে কনটেন্টের সিকোয়েন্স যখন অর্থকে প্রভাবিত করে, তখন সঠিক পড়ার ক্রম প্রোগ্রাম্যাটিকভাবে নির্ধারণযোগ্য হতে হবে — যার অর্থ এটি DOM-এ প্রতিফলিত হতে হবে। শুধু CSS দিয়ে আইটেম পুনর্বিন্যাস করা এই নিয়ম লঙ্ঘন করে যখন অর্ডারটি অর্থবহ (নেভিগেশন, ধাপে-ধাপে ফ্লো, ডেটা টেবিল)। order-এর MDN ডকুমেন্টেশন স্পষ্টভাবে সতর্ক করে: 'স্ক্রিন রিডার এটি কীভাবে পড়বে তাকে প্রভাবিত করতে পারে এমন কিছুর জন্য order ব্যবহার করবেন না।' নিরাপদ পদ্ধতি হলো অর্ডার গুরুত্বপূর্ণ হলে সবসময় HTML সোর্সে আইটেম পুনর্বিন্যাস করা, এবং CSS order প্রপার্টি শুধুমাত্র সেই বিশুদ্ধভাবে ডেকোরেটিভ ভিজ্যুয়াল পরিবর্তনের জন্য সংরক্ষিত রাখা যেখানে কনটেন্ট যেকোনো ক্রমেই সমান অর্থবহ।

সম্পর্কিত বিবেচনা LTR পেজে ডান-থেকে-বাম ভিজ্যুয়াল লেআউটের জন্য ব্যবহৃত flex-direction: row-reverse-এও প্রযোজ্য — আইটেমের ভেতরের টেক্সট তখনও বাম-থেকে-ডান পড়ে, ভিজ্যুয়াল ও পড়ার অর্ডারের মধ্যে একটি অমিল তৈরি করে। প্রকৃত RTL সাপোর্ট flex direction উল্টানোর বদলে HTML dir অ্যাট্রিবিউট এবং লজিক্যাল CSS প্রপার্টি (margin-inline-start, padding-inline-end) ব্যবহার করা উচিত। একটি ফ্লেক্সবক্স লেআউটের অ্যাক্সেসিবিলিটি অডিট করার সময়, যেকোনো পুনর্বিন্যাস অর্থবহ কিনা তা চেক করুন, কিবোর্ড ট্যাব স্টপ একটি যৌক্তিক ভিজ্যুয়াল সিকোয়েন্সে চলে কিনা তা নিশ্চিত করুন, এবং যাচাই করুন যে ক্রমান্বয়ে নেভিগেশনের উপর নির্ভরশীল ব্যবহারকারীদের জন্য কোনো গুরুত্বপূর্ণ কনটেন্ট বাদ পড়ে বা ক্রম বিহীন নেই।

Frequently asked questions

CSS-এ Flexbox কী এবং কেন এটি ব্যবহার করা হয়?

Flexbox (CSS Flexible Box Layout) একটি একক সারি বা কলামে আইটেম সাজানো এবং তাদের মধ্যে স্পেস বিতরণের জন্য একটি এক-মাত্রিক লেআউট মডেল। একটি প্যারেন্ট এলিমেন্টে এক লাইন — display: flex — দিয়ে আপনি এটি চালু করেন, এবং এর চাইল্ডরা ফ্লেক্স আইটেম হয়ে যায় যা আপনি ফ্লোট বা ম্যানুয়াল মার্জিন ছাড়াই অ্যালাইন, স্পেস ও রিসাইজ করতে পারেন। এটি ব্যবহার করা হয় কারণ এটি সাধারণ কাজ সহজ করে দেয়: সেন্টারিং, সমান-উচ্চতার কলাম, নেভবার, কার্ড রো এবং 'এটিকে ডানে ঠেলে দাও' লেআউট যা এর আগে কষ্টকর ছিল। ২০২৪ সালের হিসাবে ৯৯%-এরও বেশি ব্রাউজার এটি সমর্থন করে।

আপনি কীভাবে flexbox ব্যবহার করেন?

কন্টেইনার এলিমেন্টে display: flex যোগ করুন, তারপর চাইল্ডদের কন্টেইনার প্রপার্টি দিয়ে নিয়ন্ত্রণ করুন — flex-direction (row বা column), justify-content (main axis বরাবর স্পেসিং), align-items (cross axis-এ অ্যালাইনমেন্ট), flex-wrap এবং gap। উদাহরণস্বরূপ, .nav { display: flex; justify-content: space-between; align-items: center; gap: 16px; } একটি লোগো ও লিংক একটি সারিতে, উল্লম্বভাবে কেন্দ্রীভূত, বিপরীত প্রান্তে ঠেলে সাজিয়ে দেয়। উপরের কন্ট্রোল সমন্বয় করুন এবং জেনারেট করা CSS কপি করুন — হাতে প্রতিটি প্রপার্টি মুখস্থ করার দরকার নেই।

আমি কীভাবে flexbox চালু বা সক্রিয় করব?

প্যারেন্টে display: flex সেট করুন (বা কন্টেইনারটি নিজেই টেক্সটের মতো ইনলাইন প্রবাহিত হতে দিলে display: inline-flex)। এই একক ঘোষণা এর সব সরাসরি চাইল্ডের জন্য flexbox সক্রিয় করে — কোনো অতিরিক্ত সেটআপ, লাইব্রেরি বা ক্লাসের প্রয়োজন নেই। গ্র্যান্ডচাইল্ডে কিছু ঘটে না যদি না আপনি সেই নেস্টেড এলিমেন্টগুলোকেও ফ্লেক্স কন্টেইনার বানান, যা এই টুলও নেস্টেড কন্টেইনার কন্ট্রোল দিয়ে সমর্থন করে।

২০২৫ সালেও কি CSS Flexbox ব্যবহার হয়?

হ্যাঁ — প্রতিটি আধুনিক ব্রাউজারে (৯৯%-এরও বেশি গ্লোবাল কভারেজ) ফ্লেক্সবক্স পুরোপুরি সমর্থিত এবং এক-মাত্রিক লেআউটের জন্য স্ট্যান্ডার্ড টুল: নেভবার, টুলবার, বাটন গ্রুপ, ফর্ম রো এবং সেন্টারিং। এটি CSS Grid দ্বারা প্রতিস্থাপিত হয়নি; দুটোই একে অপরের পরিপূরক। একটি একক অক্ষ বরাবর কনটেন্ট সাজানোর সময় ফ্লেক্সবক্সে যান, এবং একই সাথে সারি ও কলাম দরকার হলে Grid-এ যান। বেশিরভাগ প্রকৃত প্রজেক্ট উভয়ই ব্যবহার করে।

flexbox ও grid-এর মধ্যে পার্থক্য কী?

Flexbox এক-মাত্রিক — এটি একটি একক অক্ষ বরাবর (একটি সারি বা কলাম) কনটেন্ট সাজায় এবং কনটেন্ট-ফার্স্ট, তাদের কনটেন্ট ও উপলব্ধ স্পেস দিয়ে আইটেম সাইজ করে। CSS Grid দ্বি-মাত্রিক, একটি স্পষ্ট ট্র্যাক স্ট্রাকচার দিয়ে সারি ও কলাম একসাথে নিয়ন্ত্রণ করে। একটি নেভবার, কার্ডের একটি সারি বা উল্লম্ব সেন্টারিংয়ের জন্য flexbox ব্যবহার করুন; একটি পূর্ণ পেজ লেআউট বা এমন একটি ইমেজ গ্যালারির জন্য Grid ব্যবহার করুন যা উভয় দিকে অ্যালাইন হতে হবে। এগুলো প্রায়ই একত্রিত হয়: পেজ স্কেলেটনের জন্য Grid, প্রতিটি অঞ্চলের ভেতরে সূক্ষ্ম অ্যালাইনমেন্টের জন্য flexbox।

justify-content বনাম align-items কী করে?

justify-content main axis বরাবর আইটেম অবস্থান করে, যখন align-items cross axis বরাবর তাদের অবস্থান করে — আর main axis হলো flex-direction যা সেট করে। ডিফল্ট flex-direction: row-এ, justify-content আইটেম অনুভূমিকভাবে স্পেস করে (start, center, space-between…) এবং align-items তাদের উল্লম্বভাবে অ্যালাইন করে। flex-direction: column-এ পাল্টান এবং দুটোই বদলে যায়: justify-content এখন উল্লম্বভাবে কাজ করে এবং align-items অনুভূমিকভাবে। টুলের লাইভ অক্ষ লেজেন্ড direction পাল্টানোর সাথে সাথে কোনটা কী তা দেখায়।

আমি কীভাবে flexbox দিয়ে একটি div সেন্টার করব?

প্যারেন্টকে একটি ফ্লেক্স কন্টেইনার বানান এবং উভয় অক্ষে সেন্টার করুন: .parent { display: flex; justify-content: center; align-items: center; } — এটি চাইল্ডটিকে ঠিক মধ্যিখানে বসিয়ে দেয়, অনুভূমিক ও উল্লম্ব উভয় দিকে। প্যারেন্টকে একটি height দিন (পূর্ণ-স্ক্রিন সেন্টারিংয়ের জন্য যেমন min-height: 100vh) যাতে ভেতরে সেন্টার করার স্পেস থাকে। একটি এলিমেন্টকে নিখুঁতভাবে সেন্টার করার এটিই সবচেয়ে পরিষ্কার উপায়। কোড জেনারেট করতে উপরের কন্ট্রোলে justify-content ও align-items দুটোই 'center'-এ সেট করুন।

flex-grow, flex-shrink এবং flex-basis কী?

এগুলো তিনটি প্রতি-আইটেম প্রপার্টি যা নির্ধারণ করে একটি ফ্লেক্স আইটেম কীভাবে সাইজ হয়, সাধারণত flex শর্টহ্যান্ড হিসেবে একসাথে লেখা হয়। flex-basis হলো ফ্রি স্পেস ভাগ করার আগে শুরুর সাইজ (যেমন 200px বা auto)। flex-grow হলো একটি আইটেম কতটা লোভীভাবে অবশিষ্ট স্পেস পূরণ করতে প্রসারিত হয় (0 = বাড়বে না, 1 = একটি অংশ নেবে)। flex-shrink হলো স্পেস কম থাকলে এটি কতটা সহজে সংকুচিত হয় (1 = অনুমোদিত, 0 = স্থির থাকবে)। সাধারণ flex: 1 মানে সব আইটেমের জন্য সমান বৃদ্ধি। প্রিভিউতে একটি আইটেম ক্লিক করে এর grow, shrink ও basis সেট করুন।

আমি কীভাবে flex আইটেম র‍্যাপ করাব?

কন্টেইনারে flex-wrap: wrap সেট করুন যাতে যেসব আইটেম ফিট হয় না সেগুলো ওভারফ্লো বা সংকুচিত না হয়ে একটি নতুন লাইনে চলে যায়। ডিফল্টভাবে flex-wrap হলো nowrap, সবকিছু একটি লাইনে জোর করে রাখে। র‍্যাপিং চালু থাকলে, প্রতিটি আইটেমকে একটি flex-basis দিন (যেমন flex: 1 1 200px) যাতে প্রতিটি সারি পরিষ্কারভাবে পূরণ হয়, এবং ফলে তৈরি হওয়া লাইনগুলো স্পেস করতে align-content ব্যবহার করুন। এই টুলে রিসাইজেবল প্রিভিউ সংকীর্ণ করে টেনে দেখুন আইটেমগুলো রিয়েল টাইমে কীভাবে র‍্যাপ করে।

আমি কীভাবে আইটেম সমানভাবে স্পেস করব?

main axis-এ justify-content ব্যবহার করুন। space-between প্রথম ও শেষ আইটেমকে প্রান্তে ঠেলে দিয়ে বাকিগুলোর মধ্যে সমান ফাঁক রাখে; space-around প্রতিটি আইটেমকে উভয় পাশে সমান স্পেস দেয় (তাই প্রান্তের ফাঁক অর্ধেক সাইজ দেখায়); এবং space-evenly প্রতিটি ফাঁক — বাইরের প্রান্তসহ — অভিন্ন করে দেয়। ৪০০px সারিতে চারটি আইটেমের জন্য, space-between কোনো বাইরের মার্জিন রাখে না, যখন space-evenly প্রতিটি আইটেমের আগে, মাঝে ও পরে সমান ফাঁক রাখে। একটি নির্দিষ্ট gap মান এর উপরে একটি নিশ্চিত ন্যূনতম স্পেসিং যোগ করে।

আমি কীভাবে flex আইটেম পুনর্বিন্যাস করব?

একটি আইটেমকে order প্রপার্টি দিন — order: -1 এটিকে ডিফল্ট order: 0-যুক্ত আইটেমের আগে টেনে নেয়, এবং একটি বেশি সংখ্যা এটিকে পরে ঠেলে দেয়, HTML সোর্স অর্ডার স্পর্শ না করেই। উদাহরণস্বরূপ, তৃতীয় আইটেমে order: 1 এটিকে ভিজ্যুয়ালভাবে শেষে নিয়ে যায়। মোবাইলে মেইন কনটেন্টের পর সাইডবার সরানোর মতো রেসপন্সিভ সমন্বয়ের জন্য এটি কাজে আসে। লক্ষ্য রাখুন এটি শুধু একটি ভিজ্যুয়াল পুনর্বিন্যাস, তাই অ্যাক্সেসিবিলিটির জন্য DOM অর্ডার যৌক্তিক রাখুন। লাইভ প্রভাব দেখতে উপরে একটি আইটেম নির্বাচন করে এর order পরিবর্তন করুন।

একটি flexbox লেআউট কীভাবে Tailwind ক্লাসে রূপান্তর করব?

প্রতিটি flex প্রপার্টি একটি Tailwind ইউটিলিটিতে ম্যাপ করে: display: flex → flex, flex-direction: column → flex-col, justify-content: space-between → justify-between, align-items: center → items-center, flex-wrap: wrap → flex-wrap, এবং gap: 16px → gap-4। প্রতি-আইটেম, flex: 1 → flex-1, order: 1 → order-1। তাই একটি সেন্টার করা সারি হয়ে যায় class="flex justify-center items-center gap-4"। উপরের আউটপুট ট্যাব Tailwind (বা Bootstrap)-এ পাল্টান এবং টুলটি সম্পূর্ণ ক্লাস লিস্ট — কন্টেইনার ও আইটেম — এক ক্লিকে কপি করার জন্য লিখে দেয়।

Flexbox Froggy বা Wes Bos-এর গাইডের মতো অন্যান্য css ফ্লেক্সবক্স জেনারেটরের সাথে এটি কেমন?

Flexbox Froggy এবং Wes Bos-এর What The Flexbox শেখার টুল — স্পেক বোঝার জন্য চমৎকার, কিন্তু এগুলো আপনার প্রকৃত প্রজেক্টের জন্য কোড জেনারেট করে না। CSS Tricks-এর ফ্লেক্সবক্স গাইড একটি রেফারেন্স, জেনারেটর নয়। এই টুল প্রোডাকশন ব্যবহারের জন্য তৈরি: আপনি একটি প্রকৃত ফ্লেক্স কন্টেইনার প্রকৃত চাইল্ড আইটেমসহ কনফিগার করেন, কতগুলো আইটেম চান তা বেছে নেন, প্রতি-আইটেম প্রপার্টি আলাদাভাবে সেট করেন, এবং সরাসরি আপনার প্রজেক্টে পেস্ট করার মতো CSS, Tailwind বা Bootstrap আউটপুট পান। এটি নেস্টেড কন্টেইনারও সামলায়, যা বেশিরভাগ জেনারেটর বাদ দেয়।

এই ফ্লেক্সবক্স জেনারেটর কি ফ্রি ও প্রাইভেট?

সাইনআপ ছাড়াই ফ্রি। পুরো প্লেগ্রাউন্ড আপনার ব্রাউজারে চলে — আপনার লেআউট, জেনারেট করা CSS এবং শেয়ার লিংক সবই আপনার ডিভাইসে তৈরি এবং কখনও কোনো সার্ভারে আপলোড হয় না। পেজ লোড হওয়ার পর আপনি এটি বুকমার্ক করে অফলাইনে ব্যবহার করতে পারেন। কোনো তৈরি করার অ্যাকাউন্ট নেই এবং আপনি কতগুলো লেআউট কনফিগার করেন তার কোনো সীমা নেই।