CSS를 처음 접하고 순수 CSS를 사용하여 아름답고 유연한 레이아웃을 만들고 싶다면 CSS Flexbox를 명확하게 이해하는 것이 매우 중요합니다. Bootstrap과 같은 널리 사용되는 CSS 프레임워크도 Flexbox를 통해 레이아웃 그리드 시스템을 처리하며 Tailwind CSS도 사용하려면 Flexbox를 아는 것이 중요합니다. 나는 이 글에서 CSS 3.0의 중요한 표시 속성인 Flexbox에 대한 완전한 아이디어를 아주 쉽게 제공하려고 노력할 것입니다. 그럼 시작해 보겠습니다.
CSS flexbox는 유연한 디스플레이 속성입니다. Flexbox의 도움으로 x축 또는 y축을 따라 컨테이너 내부 항목의 레이아웃, 공간 및 정렬을 쉽게 수정할 수 있습니다.
display:flex 속성이 적용된 요소를 플렉스 컨테이너라고 하고, 플렉스 컨테이너 내부의 항목을 플렉스 아이템이라고 합니다.
플렉스 컨테이너에는 두 개의 축이 있습니다. 하나는 기본 축이고 다른 하나는 교차 축입니다. 플렉스 레이아웃을 이미지로 한눈에 살펴보겠습니다.
HTML 요소에 display:flex 속성이 주어지면 flex 컨테이너가 되고 flex 컨테이너의 직계 하위 요소는 flex 항목이 됩니다. 동시에 플렉스 항목은 왼쪽에서 오른쪽으로 배치됩니다.
.container{ display: flex; }
플렉스 컨테이너를 이해하려면 아래 그림을 참고하세요.
플렉스 방향:
flex-direction 속성은 플렉스 항목을 x축이나 y축을 따라 이동하는 데 사용됩니다. flex-direction 속성에는 4가지 가능한 값이 있습니다. 이는 다음과 같습니다.
.container{ display: flex; flex-direction: row || row-reverse || column || column-reverse; }
flex-wrap:
বাই ডিফল্ট ফ্লেক্স আইটেম গুলো nowrap করা থাকে যে কারণে আইটেম গুলো একটি লাইনে দেখায়। এটির একটা সমস্যা হল ডিভাইস উইড্থ ছোট হলে যে কয়েকটা আইটেম ডিভাইস এ দেখানো সম্ভব সেগুলো দেখাবে এবং অন্য আইটেম গুলোকে শেষের দিক থেকে দেখা যাবে না কারণ সেগুলো overflow হয়ে যাবে। flex-wrap ব্যবহার করে খুব সহজেই এই বেহেভিওর পরিবর্তন করা যায়। flex-wrap প্রপার্টির ৩ ধরনের মান ব্যবহার করা যায়। এগুলো হল নিম্নরূপ।
.container{ display: flex; flex-wrap: nowrap || wrap || wrap-reverse; }
flex-flow:
flex-direction এবং flex-wrap এর শর্টহ্যান্ড হল flex-flow। প্রথমে লিখতে হবে flex-direction এবং পরে লিখতে হবে flex-wrap প্রপার্টি। flex-flow এর ডিফল্ট মান হলঃ flex-flow: row nowrap;
.container{ display: flex; flex-flow: row wrap; }
justify-content:
justify-content ব্যবহার করে ফ্লেক্স আইটেম গুলোকে প্রধান অক্ষ বরাবর সাজানো যায়। justify-content প্রপার্টির ৬ ধরনের মান ব্যবহার করা যায়। এগুলো হল নিম্নরূপ।
.container{ display: flex; justify-content: flex-start || flex-end || center || space-between || space-around || space-evenly; }
align-items:
ফ্লেক্স কন্টেইনার এর প্রত্যেকটা লাইন এর আইটেম গুলোকে উপর থেকে নিচে বরাবর align করার জন্য align-items প্রপার্টি ব্যবহার করা হয়। align-items প্রপার্টির ৫ ধরনের মান ব্যবহার করা যায়। এগুলো হল নিম্নরূপ।
.container{ display: flex; align-items: flex-start || stretch || flex-end || center || baseline; }
align-content:
ফ্লেক্স কন্টেইনার এর প্রত্যেকটা লাইনকে আলাদা আলাদা ভাবে চিন্তা না করে একটি কন্টেন্ট হিসাবে চিন্তা করে ক্রস আক্সিস বরাবর align করার জন্য align-content ব্যবহার করা হয়। এটি অনেকটা justify-content এর মত বলতে পারেন। justify-content মেইন আক্সিস বরাবর কাজ করে অপরদিকে align-content ক্রস আক্সিস বরাবর কাজ করে। align-content প্রপার্টির ৭ ধরনের মান ব্যবহার করা যায়। এগুলো হল নিম্নরূপ।
.container{ display: flex; align-content: flex-start || flex-end || center || stretch || space-between || space-around || space-evenly; }
gap, row-gap, column-gap:
ফ্লেক্স আইটেম গুলোর মধ্যে ফাঁকা জায়গা রাখার জন্য gap প্রপার্টি ব্যবহার করা হয়।
ফ্লেক্স আইটেম গুলোর মধ্যে মেইন আক্সিস বরাবর ফাঁকা জায়গা রাখার জন্য row-gap প্রপার্টি ব্যবহার করা হয়।
ফ্লেক্স আইটেম গুলোর মধ্যে ক্রস আক্সিস বরাবর ফাঁকা জায়গা রাখার জন্য column-gap প্রপার্টি ব্যবহার করা হয়।
.container{ display: flex; gap: 24px; /* gap: 24px 30px; */ /* row-gap column-gap */ /* row-gap: 24px; */ /* column-gap: 24px; */ }
ফ্লেক্স কন্টেইনার এর সরাসরি চাইল্ড এলেমেন্ট গুলোই ফ্লেক্স আইটেম।
order:
ফ্লেক্স আইটেম গুলোর ডিফল্ট অর্ডার হিসাবে ০ থাকে। এইচটিএমএল কোড অনুযায়ী আইটেম গুলোর অর্ডার থাকে কিন্তু আলাদা করে কোন একটি আইটেম এর অর্ডার এর মান নির্ধারণ করে দিলে সেই অর্ডার অনুযায়ী আইটেম গুলো অবস্থান করবে।
.container{ display: flex; } /* অর্ডার পরিবর্তন করার কোড */ .item{ order: 2; } .item-1{ order: 1; }
flex-grow:
মেইন আক্সিস বরাবর একটি লাইনে যতগুলো আইটেম থাকে সেই আইটেম গুলো ছাড়া যদি কোন ফাঁকা জায়গা থাকে তাহলে সেই ফাঁকা জায়গা সবগুলো আইটেম এর মধ্যে সমান ভাবে ছড়িয়ে দেওয়া অথবা কোন একটি নির্দিষ্ট আইটেম এর মধ্যে ছড়িয়ে দেওয়ার জন্য flex-grow ব্যবহার হয়। সবগুলো আইটেম এর মধ্যে ফাঁকা জায়গা সমানভাবে ছড়িয়ে দেওয়ার জন্য সবগুলো আইটেম কে flex-grow: 1; দিতে হয়। এক্ষেত্রে আইটেম গুলোর উইড্থ নির্ধারণ করা থাকলেও যখন ফাঁকা জায়গা পাবে সেই ফাঁকা যায়গা নিজেদের মধ্যে নিয়ে নিবে এবং সমান ভাবে আকৃতি পরিবর্তন করবে। অথবা কোন একটি নির্দিষ্ট আইটেম কে টার্গেট করেও flex-grow অ্যাপ্লাই করা যায়। ডিফল্ট flex-grow এর মান থাকে ০।
display: flex; } .item-3{ flex-grow: 1; }
flex-shrink:
flex-shrink ঠিক flex-grow এর উল্টো। ব্রাউজার উইন্ডো ছোট করার সাথে সাথে আইটেম গুলো shrink করবে কিনা সেটা নির্ভর করে flex-shrink এর উপর। ডিফল্ট মান থাকে ১ যার কারণে আইটেম গুলো shrink করে কিন্তু shrink এর মান ০ করে দিলে রেস্পন্সিভনেস থাকবে না এবং আইটেম গুলো ব্রাউজার উইন্ডো এর বাহিরে চলে যাবে।
.item-1 { flex-shrink: 0; /* ডিফল্ট 1 */ }
flex-basis:
flex-basis হল কোন একটি আইটেম এর মিনিমাম কত উইড্থ হবে সেইটা নির্ধারণ করে দেওয়া। এটা অনেকটা min-width প্রপার্টি এর মত কিন্তু flex-basis এর সবচেয়ে বড় সুবিধা হল ব্রাউজার উইন্ডো উইড্থ যদি আইটেম গুলোর flex-basis এর মোট মানের তুলনায় ছোট হয় তাহলে আইটেম overflow না হয়ে রেস্পন্সিভলি উইড্থ টা কমিয়ে নিবে।
.item { flex-basis: 500px; /* ডিফল্ট auto */ }
flex:
flex-grow, flex-shrink এবং flex-basis একসাথে লেখার জন্য আমরা flex শর্টহ্যান্ড টা ব্যবহার করতে পারি।
.item { flex: flex-grow flex-shrink flex-basis; }
align-self:
align-self প্রপার্টি ব্যবহার করে কোন একটা নির্দিষ্ট ফ্লেক্স আইটেম এর ডিফল্ট এলাইনমেন্ট ওভাররাইড করা যায়। align-items এর মতো align-self এ একয় রকম মান (stretch, center, flex-start, flex-end, baseline) ব্যবহার করা যায় এবং একই লজিক এ কাজ করে। তবে align-self এর ডিফল্ট মান হল auto।
.item-2 { align-self: auto || flex-start || flex-end || center || baseline || stretch; }
위 내용은 모국어 벵골어의 CSS Flexbox의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!