🎨 CSS Basics — সম্পূর্ণ নোট
এই সেকশনে CSS-এর মূল ধারণা, কীভাবে স্টাইল করতে হয় এবং এর গুরুত্বপূর্ণ প্রপার্টিগুলো সহজ ভাষায় বোঝানো হয়েছে।
🔷 CSS কী?
CSS (Cascading Style Sheets) হলো এমন একটি ভাষা যা দিয়ে HTML পেজের চেহারা ও ডিজাইন নিয়ন্ত্রণ করা হয় — রঙ, আকার, ফন্ট, স্থান, লেআউট সব কিছু।
সহজ ভাষায় বলতে গেলে — HTML হলো একটা বাড়ির কাঠামো (skeleton), আর CSS হলো সেই বাড়ির রঙ, সাজসজ্জা এবং সৌন্দর্য।
🔷 CSS Syntax — কীভাবে লিখতে হয়?
CSS-এর প্রতিটি নিয়ম তিনটি অংশ নিয়ে তৈরি:
অংশ ১ — Selector Selector
Selector দিয়ে বলা হয় কোন HTML এলিমেন্টটাকে স্টাইল করতে চাও।
যেমন h1 লিখলে পেজের সব h1 ট্যাগ বেছে নেওয়া হয়।
অংশ ২ — Property ও Value Property & Value
Property বলে কী পরিবর্তন করবে (যেমন রঙ, আকার), আর Value বলে কতটুকু বা কী
করবে।
প্রতিটি লাইনের শেষে ; সেমিকোলন দিতে হয়।
🔷 CSS যুক্ত করার ৩টি উপায়
১. Inline CSS সরাসরি ট্যাগে
HTML ট্যাগের ভেতরে সরাসরি style="" লিখে স্টাইল দেওয়া হয়।
ছোট ও দ্রুত কাজের জন্য ঠিক আছে, কিন্তু বড় প্রজেক্টে ব্যবহার করা ঠিক না।
২. Internal CSS head-এর ভেতরে
HTML ফাইলের <head> অংশে <style> ট্যাগ ব্যবহার করে CSS লেখা হয়।
একটি নির্দিষ্ট পেজের জন্য কাজ করে।
৩. External CSS আলাদা ফাইলে
আলাদা .css ফাইল বানিয়ে HTML-এ <link> ট্যাগ দিয়ে যুক্ত করা হয়।
এটাই সবচেয়ে পেশাদার এবং সঠিক পদ্ধতি।
🔷 গুরুত্বপূর্ণ CSS Selectors
CSS দিয়ে HTML এলিমেন্ট বেছে নেওয়ার কয়েকটি উপায় আছে:
| Selector | লেখার নিয়ম | কাকে ধরে? | উদাহরণ |
|---|---|---|---|
| Element | p { } |
সব <p> ট্যাগ |
h1, p, div |
| Class | .box { } |
class="box" আছে এমন সব এলিমেন্ট |
.card, .btn |
| ID | #header { } |
শুধু id="header" এলিমেন্ট |
#nav, #footer |
| Universal | * { } |
পেজের সব এলিমেন্ট | * { margin: 0; } |
.) একাধিক এলিমেন্টে দেওয়া যায় — যেমন একই ডিজাইনের
অনেক
কার্ড।
ID (#) শুধু একটি এলিমেন্টে — যেমন পেজের একমাত্র হেডার।
🔷 গুরুত্বপূর্ণ CSS Properties
1. Text ও Font সংক্রান্ত Typography
2. Background ও Color Background
3. আকার ও Border Sizing
4. Display Property Display
🔷 CSS Box Model — সবচেয়ে গুরুত্বপূর্ণ ধারণা
CSS-এ প্রতিটি এলিমেন্ট একটি বাক্স-এর মতো। সেই বাক্সের চারটি স্তর আছে — ভেতর থেকে বাইরের দিকে:
| স্তর | Property | কাজ | উদাহরণ |
|---|---|---|---|
| Content | width, height |
আসল লেখা বা ছবির জায়গা | 200px × 100px |
| Padding | padding |
Content ও Border-এর মাঝের ভেতরের ফাঁক | padding: 16px; |
| Border | border |
বাক্সের চারদিকের রেখা | border: 2px solid; |
| Margin | margin |
বাক্সের বাইরের ফাঁক — অন্য এলিমেন্ট থেকে দূরত্ব | margin: 24px; |
🔷 CSS-এ রঙ লেখার উপায়
CSS-এ রঙ চারটি উপায়ে লেখা যায়:
🔷 দ্রুত রেফারেন্স — গুরুত্বপূর্ণ CSS Property সমূহ
| Property | কাজ | উদাহরণ |
|---|---|---|
| color | লেখার রঙ | color: #333; |
| background-color | ব্যাকগ্রাউন্ড রঙ | background-color: #fff; |
| font-size | ফন্টের আকার | font-size: 18px; |
| font-weight | ফন্টের ওজন (মোটা/পাতলা) | font-weight: bold; |
| font-family | ফন্ট পরিবার | font-family: Arial; |
| text-align | লেখার অবস্থান | text-align: center; |
| width / height | প্রস্থ ও উচ্চতা | width: 100%; height: 200px; |
| padding | ভেতরের ফাঁক | padding: 16px; |
| margin | বাইরের ফাঁক | margin: 0 auto; |
| border | চারদিকের রেখা | border: 1px solid #ccc; |
| border-radius | কোণ গোলাকার করা | border-radius: 8px; |
| display | এলিমেন্ট কীভাবে থাকবে | display: flex; |
| opacity | স্বচ্ছতা (০ থেকে ১) | opacity: 0.7; |
| cursor | মাউসের ধরন | cursor: pointer; |
🌊 Cascading Order — সম্পূর্ণ নোট
CSS-এর "C" মানেই Cascading। এই সেকশনে বোঝানো হয়েছে — একই এলিমেন্টে একাধিক CSS নিয়ম থাকলে ব্রাউজার কোনটা মানে এবং কেন।
🔷 Cascading Order কী?
CSS-এর পুরো নামে "Cascading" শব্দটা আছে কারণ — একই এলিমেন্টকে একাধিক জায়গা থেকে স্টাইল দেওয়া যায়। তখন ব্রাউজারকে সিদ্ধান্ত নিতে হয় — কোন নিয়মটা জিতবে?
সহজ ভাষায় — Cascading Order হলো CSS-এর বিচারক। দুটো নিয়মের মধ্যে দ্বন্দ্ব হলে কে জিতবে তা এই নিয়মই ঠিক করে।
color: red; কিন্তু পেজে নীল দেখাচ্ছে — এর কারণ হলো
অন্য কোনো নিয়ম জিতে গেছে। Cascading Order না জানলে এই সমস্যা ধরা যাবে না।
🔷 ব্রাউজার কোন ক্রমে সিদ্ধান্ত নেয়?
ব্রাউজার একটি নির্দিষ্ট ক্রমে চিন্তা করে — উপর থেকে নিচে:
| ধাপ | নিয়ম | সহজ মানে | অগ্রাধিকার |
|---|---|---|---|
| ১ | Importance | !important দিয়ে জোর করা |
🥇 সর্বোচ্চ |
| ২ | Specificity | কত নির্দিষ্ট Selector ব্যবহার হয়েছে | 🥈 দ্বিতীয় |
| ৩ | Source Order | কোডে কোনটা পরে লেখা | 🥉 তৃতীয় |
| ৪ | Inheritance | বাবা-মা এলিমেন্ট থেকে পাওয়া | সর্বশেষ |
🔷 ১. Source Order — কোডে কোনটা পরে?
দুটো CSS নিয়ম সমান শক্তির হলে — যেটা কোডে পরে লেখা সেটা জেতে। উপরের নিয়ম নিচের নিয়ম দিয়ে ওভাররাইট হয়ে যায়।
🔷 ২. Specificity — কে বেশি নির্দিষ্ট?
Specificity মানে Selector কতটা নির্দিষ্ট — যত নির্দিষ্ট, তত বেশি শক্তিশালী। ব্রাউজার প্রতিটি Selector-এর একটি পয়েন্ট স্কোর হিসাব করে।
Specificity পয়েন্ট চার্ট Point System
| Selector ধরন | উদাহরণ | পয়েন্ট | শক্তি |
|---|---|---|---|
| Inline Style | style="color: red" |
1000 | 💪💪💪💪 |
| ID Selector | #header |
100 | 💪💪💪 |
| Class Selector | .card |
10 | 💪💪 |
| Element Selector | p, h1 |
1 | 💪 |
| Universal Selector | * |
0 | — |
বাস্তব উদাহরণ — পয়েন্ট গণনা Example
🔷 ৩. !important — সর্বোচ্চ অগ্রাধিকার
কোনো CSS নিয়মের শেষে !important লিখলে সেটা
সমস্ত Specificity ও Source Order কে হারিয়ে দেয় — এটাই সর্বোচ্চ ক্ষমতা।
যতটা সম্ভব এড়িয়ে চলো। শুধু তখনই ব্যবহার করো যখন অন্য কোনো উপায় নেই — যেমন তৃতীয় পক্ষের লাইব্রেরির স্টাইল ওভাররাইড করতে হলে। বেশি
!important মানে কোড বোঝা ও ঠিক করা কঠিন হয়ে যায়।
🔷 ৪. Inheritance — বাবা-মা থেকে পাওয়া স্টাইল
কিছু CSS প্রপার্টি বাবা-মা এলিমেন্ট থেকে সন্তান এলিমেন্টে স্বয়ংক্রিয়ভাবে চলে আসে — এটাই Inheritance। সব প্রপার্টি inherit হয় না, শুধু নির্দিষ্ট কিছু।
কোন Property inherit হয়, কোনটা হয় না? Inheritance
| inherit হয় ✅ | inherit হয় না ❌ |
|---|---|
color |
margin |
font-family |
padding |
font-size |
border |
font-weight |
width / height |
line-height |
background-color |
text-align |
display |
body-তে একবার font-family লিখলে
পুরো পেজের সব এলিমেন্টে একই ফন্ট হয় — বারবার লিখতে হয় না।
🔷 ৫. inherit ও initial — বিশেষ কীওয়ার্ড
CSS-এ যেকোনো Property-র Value হিসেবে কিছু বিশেষ কীওয়ার্ড ব্যবহার করা যায়।
এর মধ্যে inherit ও initial সবচেয়ে বেশি কাজে লাগে —
এগুলো দিয়ে inheritance নিয়ন্ত্রণ করা হয়।
inherit — বাবা-মার মান জোর করে নাও
inherit
inherit লিখলে সেই Property-র মান বাবা-মা এলিমেন্ট থেকে জোর করে নিয়ে আসা
হয়।
এমনকি যে Property সাধারণত inherit হয় না (যেমন border, padding)
সেটাকেও inherit করানো সম্ভব।
যখন কোনো এলিমেন্ট বাবা-মার মান স্বয়ংক্রিয়ভাবে পাচ্ছে না, কিন্তু পাওয়া দরকার। সবচেয়ে বেশি কাজে লাগে: লিংকের রঙ, ফর্ম ইনপুটের ফন্ট বাবা থেকে নিতে।
initial — ব্রাউজারের ডিফল্টে ফিরে যাও
initial
initial লিখলে সেই Property-র মান ব্রাউজারের নিজস্ব ডিফল্টে ফিরে যায়।
বাবা-মার মান বা CSS ফাইলের মান — কোনোটাই থাকে না।
একদম শূন্য থেকে শুরু হয়।
initial সবসময় ব্রাউজারের ডিফল্ট দেয় — বাবা-মার মান নয়।
যেমন color: initial মানে কালো (ব্রাউজারের ডিফল্ট),
বাবা-মার color যাই হোক না কেন।
inherit বনাম initial — পার্থক্য
তুলনা
| বিষয় | inherit |
initial |
|---|---|---|
| মান কোথা থেকে আসে? | বাবা-মা এলিমেন্ট থেকে | ব্রাউজারের নিজস্ব ডিফল্ট থেকে |
| বাবা-মার স্টাইল? | হ্যাঁ — বাবা-মার মান নেয় | না — বাবা-মার মান উপেক্ষা করে |
| CSS ফাইলের স্টাইল? | উপেক্ষা করে, বাবার মান নেয় | উপেক্ষা করে, ব্রাউজারের মান নেয় |
| কাজে লাগে কখন? | বাবার স্টাইল সন্তানে আনতে | পুরানো স্টাইল সম্পূর্ণ বাতিল করতে |
উদাহরণ (color) |
বাবার রঙ যা-ই হোক, সেটা নেয় | সাধারণত কালো (ব্রাউজার ডিফল্ট) |
উদাহরণ (display) |
বাবার display নেয় | inline (ব্রাউজার ডিফল্ট) |
বোনাস: unset — দুটোর মিশ্রণ
unset
unset হলো একটি স্মার্ট কীওয়ার্ড — যে Property স্বাভাবিকভাবে
inherit হয় সেটায় inherit-এর মতো কাজ করে, আর যেটা হয় না সেটায়
initial-এর মতো কাজ করে।
inherit = "বাবার কাছ থেকে নাও" |
initial = "ব্রাউজারের ডিফল্টে ফিরে যাও" |
unset = "যা স্বাভাবিক তাই হোক"
🔷 সব একসাথে — বাস্তব উদাহরণ (ধাপে ধাপে বিশ্লেষণ)
🔷 দ্রুত রেফারেন্স — Cascading Order সারসংক্ষেপ
| ধারণা | মানে | উদাহরণ | অগ্রাধিকার |
|---|---|---|---|
| !important | জোর করে সর্বোচ্চ ক্ষমতা দেওয়া | color: red !important; |
🥇 সর্বোচ্চ |
| Inline Style | ট্যাগের ভেতরে সরাসরি স্টাইল | style="color:red" = 1000 পয়েন্ট |
🥈 |
| ID Selector | #id দিয়ে নির্দিষ্ট করা |
#header = 100 পয়েন্ট |
🥉 |
| Class Selector | .class দিয়ে নির্দিষ্ট করা |
.card = 10 পয়েন্ট |
চতুর্থ |
| Element Selector | ট্যাগের নাম দিয়ে নির্দিষ্ট করা | p = 1 পয়েন্ট |
পঞ্চম |
| Source Order | সমান পয়েন্টে পরে লেখাটা জেতে | নিচের নিয়ম উপরেরটা ওভাররাইট করে | ষষ্ঠ |
| Inheritance | বাবা-মা থেকে স্বয়ংক্রিয়ভাবে পাওয়া | body-র font-family সবাই পায় |
সর্বশেষ |
!important > Inline > ID > Class > Element > Source Order > Inheritance
দ্বন্দ্ব হলে বাম দিকেরটা সবসময় জেতে।
📝 CSS Rules ও Comments — সম্পূর্ণ নোট
এই সেকশনে CSS Rule কীভাবে গঠিত হয়, Rule-এর প্রতিটি অংশ কী করে এবং Comments কীভাবে লিখতে হয় তা সহজ ভাষায় বোঝানো হয়েছে।
🔷 CSS Rule কী?
CSS-এ প্রতিটি স্টাইল নির্দেশনাকে CSS Rule বলে। একটি Rule মানে — "কোন এলিমেন্টকে (Selector), কীভাবে দেখাবে (Declaration)"।
সহজ ভাষায় — CSS Rule হলো একটি আদেশ।
যেমন: "সব h1 লেখা লাল রঙের এবং ৩২ পিক্সেল বড় হবে।"
🔷 CSS Rule-এর গঠন — অংশগুলো কী কী?
Rule-এর প্রতিটি অংশ Anatomy
| অংশ | উদাহরণ | কাজ |
|---|---|---|
| Selector | h1 |
কোন HTML এলিমেন্টকে স্টাইল করবে তা বেছে নেয় |
| Declaration Block | { ... } |
সব Declaration ধারণ করে — curly brackets দিয়ে ঘেরা |
| Declaration | color: red; |
একটি Property ও তার Value মিলিয়ে একটি নির্দেশনা |
| Property | color |
কী পরিবর্তন করতে চাও — রঙ, আকার, ফন্ট ইত্যাদি |
| Value | red |
Property-র মান — কতটুকু বা কী হবে |
| Semicolon ( ; ) | color: red; |
প্রতিটি Declaration-এর শেষে দিতে হয় — পরেরটা শুরুর সংকেত |
| Colon ( : ) | color: red |
Property ও Value-এর মাঝখানে বিভাজক |
🔷 Declaration Block-এর নিয়মাবলী
একটি Rule-এ একাধিক Declaration Multiple
একটি Selector-এর জন্য একসাথে অনেকগুলো Declaration লেখা যায়। প্রতিটি Declaration আলাদা লাইনে লেখা ভালো অভ্যাস — পড়তে সহজ হয়।
একটি Rule-এ একাধিক Selector Grouping
একাধিক এলিমেন্টে একই স্টাইল দিতে হলে কমা ( , ) দিয়ে আলাদা করে একসাথে লেখো — এটাকে Selector Grouping বলে।
এক লাইনে বনাম একাধিক লাইনে Formatting
CSS Rule এক লাইনে বা একাধিক লাইনে — দুভাবেই লেখা যায়। ব্রাউজারের কাছে কোনো পার্থক্য নেই, তবে মানুষের পড়ার জন্য আলাদা লাইন ভালো।
🔷 Whitespace ও Indentation
CSS-এ অতিরিক্ত space, tab বা নতুন লাইন ব্রাউজার সম্পূর্ণ উপেক্ষা করে। তাই ইন্ডেন্টেশন দিয়ে কোড সাজালে পড়তে সহজ হয় — CSS-এর কোনো ক্ষতি নেই।
🔷 CSS Comments কী?
Comment হলো কোডের ভেতরে লেখা ব্যাখ্যামূলক নোট। ব্রাউজার এটা সম্পূর্ণ উপেক্ষা করে — পেজের ডিজাইনে কোনো প্রভাব পড়ে না।
সহজ ভাষায় — Comment হলো তোমার নিজের জন্য চিরকুট। পরে কোড দেখলে বুঝতে পারবে কেন কী লিখেছিলে।
🔷 CSS Comment লেখার নিয়ম ও ধরন
বা JavaScript-এর // ব্যবহার করলে কাজ করবে না। -->১. এক লাইনের Comment Single Line
২. একাধিক লাইনের Comment Multi Line
৩. Inline Comment — লাইনের পাশে Inline
৪. Section Comment — বড় কোডকে ভাগ করতে Section
বড় CSS ফাইলে বিভিন্ন অংশ সহজে খুঁজে পেতে Section Comment ব্যবহার করা হয়।
🔷 Comment দিয়ে কোড সাময়িক বন্ধ করা
কোনো CSS নিয়ম সাময়িকভাবে বন্ধ করতে চাইলে মুছে না ফেলে Comment-এ ঢুকিয়ে দাও — এটাকে "Commenting Out" বলে। পরে আবার সহজে ফিরিয়ে আনা যাবে।
🔷 সাধারণ ভুলগুলো — এড়িয়ে চলো
| ভুল | ভুল কোড ❌ | সঠিক কোড ✅ |
|---|---|---|
| সেমিকোলন না দেওয়া | color: red |
color: red; |
| কোলনের বদলে সমান চিহ্ন | color = red; |
color: red; |
| { } না বন্ধ করা | h1 { color: red; |
h1 { color: red; } |
| HTML Comment CSS-এ লেখা | <!-- এটা ভুল --> |
/* এটা সঠিক */ |
| Property বানান ভুল | font-size: 16px; |
font-size: 16px; |
🔷 দ্রুত রেফারেন্স — CSS Rule ও Comment
| বিষয় | নিয়ম / সিনট্যাক্স | উদাহরণ |
|---|---|---|
| CSS Rule | selector { property: value; } |
p { color: red; } |
| Declaration | property: value; |
font-size: 16px; |
| Selector Grouping | sel1, sel2 { } |
h1, h2 { color: blue; } |
| Comment | /* এখানে লেখো */ |
/* হেডার স্টাইল */ |
| Commenting Out | /* color: red; */ |
নিয়মটা আছে, কিন্তু কাজ করছে না |
| Section Comment | /* === HEADER === */ |
বড় ফাইলে অংশ চিহ্নিত করতে |
| Inline Comment | value; /* ব্যাখ্যা */ |
padding: 16px; /* উপর-নিচ */ |
🎯 CSS Selectors — সম্পূর্ণ নোট
এই সেকশনে CSS-এর সব ধরনের Selector বিস্তারিতভাবে বোঝানো হয়েছে — কীভাবে HTML এলিমেন্ট বেছে নিতে হয় এবং কোন পরিস্থিতিতে কোনটা ব্যবহার করতে হয়।
🔷 Selector কী?
Selector হলো CSS Rule-এর প্রথম অংশ — যা দিয়ে বলা হয় "কোন HTML এলিমেন্টকে স্টাইল করতে চাই।" Selector ছাড়া CSS জানবেই না কোথায় স্টাইল লাগাতে হবে।
সহজ ভাষায় — Selector হলো একটি লক্ষ্যবস্তু চিহ্নিতকারী। তীর ছোড়ার আগে যেমন লক্ষ্য ঠিক করতে হয়, CSS দেওয়ার আগে তেমনি Selector দিয়ে এলিমেন্ট ঠিক করতে হয়।
🔷 Selector-এর ধরনসমূহ — এক নজরে
| ধরন | উদাহরণ | কাজ |
|---|---|---|
| Basic | p, .card, #nav |
ট্যাগ, ক্লাস বা আইডি দিয়ে বেছে নেওয়া |
| Combinator | div p, ul > li |
এলিমেন্টের সম্পর্ক অনুযায়ী বেছে নেওয়া |
| Pseudo-class | a:hover, li:first-child |
অবস্থা বা অবস্থান অনুযায়ী বেছে নেওয়া |
| Pseudo-element | p::before, p::first-line |
এলিমেন্টের বিশেষ অংশ বেছে নেওয়া |
| Attribute | [type="email"] |
নির্দিষ্ট Attribute আছে এমন এলিমেন্ট |
🔷 ১. Basic Selectors — মূল ধরনগুলো
১.১ Element Selector Element
HTML ট্যাগের নাম সরাসরি লিখলে পেজের সব ঐ ট্যাগ বেছে নেওয়া হয়। এটাই সবচেয়ে সহজ Selector।
<p>-কে স্টাইল করতে চাইলে Class বা ID Selector ব্যবহার করো।
১.২ Class Selector Class
ডট . দিয়ে শুরু হয়। HTML-এ class="" দেওয়া
যেকোনো ট্যাগকে বেছে নিতে পারে। একই class একাধিক জায়গায় ব্যবহার করা যায়।
<p class="card highlight large"> — এই প্যারায় তিনটি class একসাথে।
১.৩ ID Selector ID
হ্যাশ # দিয়ে শুরু হয়। পেজে শুধুমাত্র একটি নির্দিষ্ট এলিমেন্ট বেছে নেয়।
একটি পেজে একই ID একবারই ব্যবহার করতে হয়।
১.৪ Universal Selector Universal
তারকা চিহ্ন * দিলে পেজের সমস্ত এলিমেন্ট একসাথে বেছে নেওয়া হয়।
সাধারণত ডিফল্ট margin ও padding মুছতে ব্যবহার হয়।
১.৫ Grouping Selector Grouping
কমা , দিয়ে একাধিক Selector আলাদা করলে একই স্টাইল
সবগুলোতে একসাথে প্রযোজ্য হয়।
🔷 ২. Combinator Selectors — সম্পর্ক অনুযায়ী
২.১ Descendant Selector (স্পেস) Descendant
দুটি Selector-এর মাঝে স্পেস দিলে — প্রথম এলিমেন্টের ভেতরে যেকোনো গভীরে থাকা দ্বিতীয় এলিমেন্ট বেছে নেওয়া হয়।
২.২ Child Selector ( > ) Child
> চিহ্ন দিলে — প্রথম এলিমেন্টের সরাসরি সন্তান মাত্র বেছে নেয়।
আরো গভীরে (নাতি, পরনাতি) যায় না।
২.৩ Adjacent Sibling Selector ( + ) Adjacent
+ চিহ্ন দিলে — প্রথম এলিমেন্টের ঠিক পরের একটি ভাই এলিমেন্ট বেছে নেয়।
একটির বেশি নয় — শুধু সাথে লাগা পরেরটা।
২.৪ General Sibling Selector ( ~ ) Sibling
~ চিহ্ন দিলে — প্রথম এলিমেন্টের পরের সব ভাই এলিমেন্ট বেছে নেয়।
শুধু একটি নয় — সব পরবর্তীগুলো।
স্পেস = যেকোনো গভীরে সন্তান |
> = সরাসরি সন্তান |
+ = পাশের একজন ভাই |
~ = পরের সব ভাই
🔷 ৩. Pseudo-class Selectors — অবস্থা অনুযায়ী
একটি কোলন : দিয়ে লেখা হয়। এলিমেন্টের
বিশেষ অবস্থা (যেমন hover, focus) বা
অবস্থান (যেমন প্রথম সন্তান) অনুযায়ী বেছে নেয়।
৩.১ ব্যবহারকারীর কাজ অনুযায়ী User Action
৩.২ অবস্থান অনুযায়ী Structural
:nth-child(2n) = প্রতিটি জোড় সংখ্যা |
:nth-child(2n+1) = প্রতিটি বিজোড় |
:nth-child(3n) = প্রতিটি তৃতীয়টি
🔷 ৪. Pseudo-element Selectors — বিশেষ অংশ
দুটো কোলন :: দিয়ে লেখা হয়। এলিমেন্টের
একটি বিশেষ অংশকে আলাদা করে স্টাইল দেওয়া যায়।
৪.১ ::before ও ::after before / after
এলিমেন্টের আগে বা পরে HTML না বদলেই কিছু যোগ করা যায়।
content প্রপার্টি দিতে হবে — খালি হলেও।
৪.২ ::first-line ও ::first-letter Typography
৪.৩ ::selection Selection
🔷 ৫. Attribute Selectors — Attribute অনুযায়ী
বর্গ ব্র্যাকেট [ ] দিয়ে লেখা হয়। HTML এলিমেন্টের
Attribute দেখে বেছে নেওয়া যায়।
| Selector | মানে | উদাহরণ |
|---|---|---|
[href] |
href attribute আছে এমন সব এলিমেন্ট | সব লিংক |
[type="text"] |
type ঠিক "text" এমন | টেক্সট ইনপুট |
[href^="https"] |
href "https" দিয়ে শুরু | সিকিউর লিংক |
[href$=".pdf"] |
href ".pdf" দিয়ে শেষ | PDF লিংক |
[class*="btn"] |
class-এ "btn" আছে | .btn, .btn-primary, .btn-large |
🔷 দ্রুত রেফারেন্স — সব Selector এক জায়গায়
| Selector | উদাহরণ | কাজ | Specificity |
|---|---|---|---|
| Element | p |
সব <p> ট্যাগ | 1 পয়েন্ট |
| Class | .card |
class="card" আছে এমন সব | 10 পয়েন্ট |
| ID | #header |
id="header" শুধু একটি | 100 পয়েন্ট |
| Universal | * |
সব এলিমেন্ট | 0 পয়েন্ট |
| Grouping | h1, h2 |
h1 ও h2 উভয় | আলাদা আলাদা |
| Descendant | div p |
div-এর ভেতরের সব p | যোগ হয় |
| Child | ul > li |
ul-এর সরাসরি li সন্তান | যোগ হয় |
| Adjacent | h2 + p |
h2-এর ঠিক পরের একটি p | যোগ হয় |
| Sibling | h2 ~ p |
h2-এর পরের সব p | যোগ হয় |
| Pseudo-class | a:hover |
hover অবস্থায় a | 10 পয়েন্ট |
| Pseudo-element | p::before |
p-এর আগের অংশ | 1 পয়েন্ট |
| Attribute | [type="email"] |
type="email" আছে এমন | 10 পয়েন্ট |
✍️ CSS Text Styling — সম্পূর্ণ নোট
এই সেকশনে CSS দিয়ে লেখার রঙ, আকার, ফন্ট, সারিবদ্ধতা, সজ্জা এবং ফাঁকাজায়গা — সব ধরনের টেক্সট স্টাইলিং সহজ ভাষায় বোঝানো হয়েছে।
🔷 Text Styling কী?
Text Styling মানে CSS দিয়ে পেজের লেখার চেহারা নিয়ন্ত্রণ করা — রঙ, আকার, ফন্ট পরিবার, মোটা-পাতলা, সারিবদ্ধতা, সজ্জা এবং ফাঁকা জায়গা সব কিছু।
সহজ ভাষায় — একটি ওয়েবসাইটের লেখা পত্রিকার মতো সুন্দর বা বইয়ের মতো পাঠযোগ্য করতে যা যা লাগে, সব Text Styling-এর মধ্যে পড়ে।
font-size, line-height ও color ছাড়া
লেখা পড়তে কষ্ট হয়। ব্যবহারযোগ্যতা (readability) Text Styling-এর মূল লক্ষ্য।
🔷 ১. color — লেখার রঙ
color Property দিয়ে লেখার রঙ নিয়ন্ত্রণ করা হয়।
ব্যাকগ্রাউন্ডের রঙ নয় — শুধু টেক্সটের রঙ।
#000) না দিয়ে
একটু নরম গাঢ় (#1a1a1a বা #333) দেওয়া ভালো —
চোখে আরামদায়ক লাগে।
🔷 ২. font-family — ফন্ট পরিবার
font-family দিয়ে কোন ফন্ট ব্যবহার হবে তা ঠিক করা হয়।
একাধিক ফন্ট কমা দিয়ে লেখা যায় — প্রথমটা ব্যবহারকারীর ডিভাইসে না থাকলে
পরেরটা চেষ্টা করে। এটাকে Font Stack বলে।
Generic Font Family — শেষ নিরাপত্তা Generic
| Generic Family | ধরন | কখন ব্যবহার করবে | উদাহরণ ফন্ট |
|---|---|---|---|
sans-serif |
সরল রেখার ফন্ট | সাধারণ লেখা, UI — সবচেয়ে বেশি ব্যবহৃত | Arial, Helvetica |
serif |
পা-যুক্ত ফন্ট | দীর্ঘ লেখা, ক্লাসিক চেহারা | Georgia, Times New Roman |
monospace |
সমান প্রস্থের ফন্ট | কোড বা টার্মিনাল দেখাতে | Courier New, Consolas |
cursive |
হাতের লেখার মতো | সাজসজ্জামূলক শিরোনাম | Brush Script MT |
fantasy |
সজ্জামূলক ফন্ট | বিশেষ সাজসজ্জা | Impact, Papyrus |
Google Fonts — বিনামূল্যে যেকোনো ফন্ট Google Fonts
ব্যবহারকারীর ডিভাইসে নেই এমন ফন্ট ব্যবহার করতে Google Fonts ব্যবহার করো।
fonts.google.com থেকে পছন্দের ফন্ট বেছে HTML-এ যুক্ত করো।
🔷 ৩. font-size — ফন্টের আকার
font-size দিয়ে লেখার আকার নিয়ন্ত্রণ করা হয়।
বিভিন্ন একক ব্যবহার করা যায় — প্রতিটির আলাদা ব্যবহার আছে।
| একক | মানে | উদাহরণ | কখন ব্যবহার করবে |
|---|---|---|---|
px |
নির্দিষ্ট পিক্সেল — সবসময় একই | 16px |
নির্দিষ্ট আকার দরকার হলে |
em |
বাবা এলিমেন্টের আকারের গুণিতক | 1.5em = বাবার ১.৫ গুণ |
বাবার উপর নির্ভরশীল আকারে |
rem |
root (html) এলিমেন্টের গুণিতক |
1rem = সাধারণত ১৬px |
পুরো পেজে সামঞ্জস্যপূর্ণ আকারে ✅ |
% |
বাবার font-size-এর শতাংশ | 120% = বাবার ১.২ গুণ |
আপেক্ষিক আকারে |
vw |
ভিউপোর্ট (স্ক্রিন) প্রস্থের শতাংশ | 5vw |
স্ক্রিন অনুযায়ী বদলাবে এমন |
rem সবচেয়ে নির্ভরযোগ্য একক।
html { font-size: 16px; } সেট করলে বাকি সব rem-এ লিখলে
পুরো পেজের ফন্ট আকার একটি জায়গা থেকে নিয়ন্ত্রণ করা যায়।
🔷 ৪. font-weight ও font-style — মোটা ও কাত
font-weight — মোটা বা পাতলা Weight
font-weight দিয়ে ফন্ট কতটা মোটা বা পাতলা হবে তা ঠিক করা হয়।
কীওয়ার্ড বা সংখ্যা — দুভাবেই লেখা যায়।
font-style — কাত (Italic) Style
🔷 ৫. text-align — লেখার সারিবদ্ধতা
text-align দিয়ে লেখা বাম, ডান, মাঝ বা দুই পাশে সমান
করা হয়। এটি Block এলিমেন্টে কাজ করে।
| মান | লেখার অবস্থান | কখন ব্যবহার করবে |
|---|---|---|
left |
বাম দিকে সারিবদ্ধ | সাধারণ লেখা — ডিফল্ট ✅ |
center |
মাঝখানে সারিবদ্ধ | শিরোনাম, বোতাম, হিরো সেকশন |
right |
ডান দিকে সারিবদ্ধ | তারিখ, মূল্য, ডান-থেকে-বাম ভাষা |
justify |
দুই পাশে সমান | পত্রিকা বা বইয়ের মতো দীর্ঘ অনুচ্ছেদ |
🔷 ৬. text-decoration — সজ্জারেখা
text-decoration দিয়ে লেখার নিচে, উপরে বা মাঝখানে রেখা
দেওয়া বা সরানো যায়। লিংকের underline বাতিল করতে সবচেয়ে বেশি ব্যবহৃত।
Shorthand — রেখার রঙ ও ধরন Shorthand
🔷 ৭. text-transform — বড়-ছোট হাতে রূপান্তর
text-transform দিয়ে HTML না বদলেই লেখা বড় বা ছোট হাতে
দেখানো যায়। নেভিগেশন বা বোতামের লেখা বড় হাতে দেখাতে খুব কাজে লাগে।
text-transform: uppercase দিলে ডিজাইন আরো পরিষ্কার দেখায় —
HTML-এ সব বড় হাতে লেখার দরকার নেই।
🔷 ৮. line-height ও letter-spacing — ফাঁকা জায়গা
line-height — লাইনের মাঝের উচ্চতা Line Height
line-height দিয়ে দুটি লাইনের মাঝের উচ্চতা নিয়ন্ত্রণ করা হয়।
ইউনিট ছাড়া শুধু সংখ্যা দেওয়া সবচেয়ে ভালো পদ্ধতি।
letter-spacing — অক্ষরের মাঝের ফাঁক Letter Spacing
letter-spacing দিয়ে প্রতিটি অক্ষরের মাঝের ফাঁক বাড়ানো বা কমানো যায়।
ধনাত্মক মানে ফাঁক বাড়ে, ঋণাত্মক মানে কমে।
word-spacing — শব্দের মাঝের ফাঁক Word Spacing
🔷 ৯. text-indent ও text-shadow
text-indent — প্রথম লাইনে ইন্ডেন্ট Indent
text-indent দিয়ে অনুচ্ছেদের প্রথম লাইনকে ভেতরে নেওয়া যায় —
বইয়ের মতো চেহারার জন্য।
text-shadow — লেখায় ছায়া Shadow
text-shadow দিয়ে লেখার পেছনে ছায়া দেওয়া যায়।
চারটি মান: x-অফসেট y-অফসেট blur রঙ।
🔷 ১০. direction — লেখার দিক (বাম থেকে ডান / ডান থেকে বাম)
direction Property দিয়ে লেখা কোন দিক থেকে শুরু হবে তা ঠিক করা হয়।
বাংলা ও ইংরেজি বাম থেকে ডানে (ltr), আর আরবি ও হিব্রু ডান থেকে বামে (rtl) লেখা
হয়।
ltr ও rtl — দুটি মান Direction
| মান | পুরো নাম | লেখার দিক | কোন ভাষায় |
|---|---|---|---|
ltr |
Left to Right | বাম → ডান | বাংলা, ইংরেজি, হিন্দি — ডিফল্ট ✅ |
rtl |
Right to Left | ডান → বাম | আরবি, হিব্রু, উর্দু, ফার্সি |
direction বনাম text-align — পার্থক্য তুলনা
direction ও text-align দুটো আলাদা কাজ করে —
একসাথে ব্যবহার করলে সতর্ক থাকতে হবে।
| Property | কী নিয়ন্ত্রণ করে | উদাহরণ |
|---|---|---|
direction |
লেখার প্রবাহ — কন্টেন্ট কোথা থেকে শুরু, স্ক্রলবার কোথায় | direction: rtl → পুরো layout উল্টে যায় |
text-align |
শুধু লেখার অবস্থান — বাম, ডান বা মাঝে | text-align: right → লেখা ডানে, layout একই |
direction
HTML-এর dir attribute-এর সাথে মিলিয়ে ব্যবহার করো।
শুধু CSS দিলে Screen Reader ও Accessibility সঠিকভাবে কাজ নাও করতে পারে।সঠিক পদ্ধতি:
<p dir="rtl"> HTML-এ + direction: rtl; CSS-এ।
unicode-bidi — মিশ্র ভাষার লেখায় unicode-bidi
একই লাইনে বাংলা ও আরবি মিশিয়ে লিখলে ব্রাউজার নিজে থেকে দিক বোঝার চেষ্টা করে।
unicode-bidi দিয়ে সেই আচরণ নিয়ন্ত্রণ করা যায়।
<span> বা <p>-তে
direction: rtl ও unicode-bidi: embed দাও —
পুরো পেজের layout নষ্ট হবে না।
🔷 ১১. white-space — ফাঁকা জায়গার নিয়ম
white-space দিয়ে ব্রাউজার অতিরিক্ত স্পেস ও লাইন ব্রেক
কীভাবে সামলাবে তা নিয়ন্ত্রণ করা হয়।
| মান | কাজ | কখন ব্যবহার করবে |
|---|---|---|
normal |
অতিরিক্ত স্পেস মুছে, প্রয়োজনে ভাঙে | ডিফল্ট — সাধারণ লেখায় |
nowrap |
লেখা এক লাইনে রাখে, ভাঙে না | বোতামের লেখা, নেভিগেশন লিংক |
pre |
সব স্পেস ও নতুন লাইন হুবহু রাখে | কোড বা ফরম্যাটেড টেক্সট দেখাতে |
pre-wrap |
স্পেস রাখে, প্রয়োজনে ভাঙে | চ্যাটের মেসেজ বা কমেন্ট বক্স |
pre-line |
নতুন লাইন রাখে, অতিরিক্ত স্পেস মুছে | কবিতা বা মাল্টিলাইন লেখা |
🔷 দ্রুত রেফারেন্স — সব Text Styling Property এক জায়গায়
| Property | কাজ | সাধারণ মান / উদাহরণ |
|---|---|---|
| color | লেখার রঙ | #333, rgb(0,0,0) |
| font-family | ফন্ট পরিবার | "Segoe UI", sans-serif |
| font-size | ফন্টের আকার | 1rem, 16px |
| font-weight | মোটা বা পাতলা | normal, bold, 700 |
| font-style | কাত (italic) | normal, italic |
| text-align | লেখার সারিবদ্ধতা | left, center, justify |
| text-decoration | রেখা (আন্ডারলাইন, কাটা) | none, underline, line-through |
| text-transform | বড়-ছোট হাতে রূপান্তর | uppercase, capitalize |
| line-height | লাইনের উচ্চতা | 1.6, 1.8 |
| letter-spacing | অক্ষরের ফাঁক | 1px, 0.05em |
| word-spacing | শব্দের ফাঁক | 4px, normal |
| text-indent | প্রথম লাইনের ইন্ডেন্ট | 2em, 40px |
| text-shadow | লেখায় ছায়া | 2px 2px 4px rgba(0,0,0,0.3) |
| direction | লেখার দিক (বাম/ডান থেকে) | ltr, rtl |
| unicode-bidi | মিশ্র ভাষার দিক নিয়ন্ত্রণ | embed, bidi-override, isolate |
| white-space | স্পেস ও লাইন ব্রেকের নিয়ম | normal, nowrap, pre |
font-size: 1rem +
line-height: 1.6 +
color: #333 +
font-family: sans-serif —
এই চারটি দিলেই লেখা চোখে আরামদায়ক হয়।
🔤 CSS Fonts — সম্পূর্ণ নোট
এই সেকশনে CSS-এর সব Font সংক্রান্ত Property, Generic Family, Web Safe Fonts, Google Fonts, @font-face এবং Font Shorthand বিস্তারিত ব্যাখ্যা সহ বোঝানো হয়েছে।
🔷 CSS Fonts কী?
Font হলো লেখার নকশা বা চেহারা — অক্ষরগুলো কেমন দেখাবে তা। CSS-এ Font সংক্রান্ত বিভিন্ন Property দিয়ে লেখার পরিবার, আকার, মোটা-পাতলা, কাত, প্রসারণ — সব কিছু নিয়ন্ত্রণ করা যায়।
সহজ ভাষায় — ফন্ট হলো একটি ওয়েবসাইটের হাতের লেখা। সঠিক ফন্ট বেছে না নিলে পেজ পড়তে কষ্ট হয়, সুন্দর দেখায় না।
🔷 ১. font-family — ফন্ট পরিবার
font-family Property দিয়ে কোন ফন্ট ব্যবহার হবে তা ঠিক করা হয়।
কমা দিয়ে একাধিক ফন্ট লেখা যায় — ব্রাউজার উপর থেকে একে একে চেষ্টা করে,
যেটা পাবে সেটাই ব্যবহার করবে।
Font Stack কীভাবে কাজ করে? Font Stack
ব্রাউজার Font Stack এভাবে পড়ে:
প্রথমে → তোমার পছন্দের ফন্ট | মাঝে → মিলের কাছাকাছি ফন্ট | শেষে → Generic Family (অবশ্যই দিতে হবে)
🔷 ২. Generic Font Families — পাঁচটি বড় ভাগ
CSS-এ পাঁচটি Generic Font Family আছে। ব্রাউজার এই শ্রেণীর মধ্যে থেকে নিজে একটা উপযুক্ত ফন্ট বেছে নেয় — তাই সবসময় পাওয়া যায়।
১. sans-serif — পা ছাড়া ফন্ট sans-serif
অক্ষরের শেষে কোনো সজ্জার রেখা নেই — পরিষ্কার ও আধুনিক চেহারা। স্ক্রিনে পড়তে সবচেয়ে সহজ — ওয়েবে সর্বাধিক ব্যবহৃত।
২. serif — পা-যুক্ত ফন্ট serif
প্রতিটি অক্ষরের শেষে ছোট সজ্জার রেখা (serif) আছে। ক্লাসিক ও ঐতিহ্যবাহী চেহারা — বই, পত্রিকা বা আনুষ্ঠানিক পেজে ব্যবহার হয়।
৩. monospace — সমান প্রস্থের ফন্ট monospace
প্রতিটি অক্ষর সমান প্রস্থ নেয় — "i" এবং "w" একই জায়গায় থাকে। কোড, terminal বা কারিগরি লেখায় ব্যবহার হয়।
৪. cursive — হাতের লেখার মতো cursive
হাতের লেখার মতো প্রবাহমান ফন্ট। সাজসজ্জামূলক শিরোনাম বা বিশেষ সেকশনে ব্যবহার হয় — দীর্ঘ লেখায় পড়তে কঠিন।
৫. fantasy — সজ্জামূলক ফন্ট fantasy
অলংকারিক ও সজ্জামূলক ফন্ট। ব্রাউজারভেদে ভিন্ন দেখায় — সাধারণত এড়িয়ে চলো।
Generic Family তুলনা সারণি তুলনা
| Generic Family | চেহারা | সেরা ব্যবহার | পরিচিত ফন্ট |
|---|---|---|---|
sans-serif |
পরিষ্কার, সরল রেখা | মূল লেখা, UI — সবচেয়ে বেশি ✅ | Arial, Helvetica, Verdana |
serif |
পা-যুক্ত, ক্লাসিক | শিরোনাম, আনুষ্ঠানিক পেজ | Georgia, Times New Roman |
monospace |
সমান প্রস্থ | কোড, terminal লেখা | Courier New, Consolas |
cursive |
হাতের লেখার মতো | সাজসজ্জামূলক শিরোনাম | Brush Script MT |
fantasy |
অলংকারিক | বিশেষ সজ্জা (এড়িয়ে চলো) | Impact |
🔷 ৩. Web Safe Fonts — নিরাপদ ফন্ট
Web Safe Fonts হলো এমন ফন্ট যেগুলো প্রায় সব ডিভাইস ও অপারেটিং সিস্টেমে আগে থেকেই ইন্সটল থাকে। এগুলো ব্যবহার করলে বাড়তি লোডিং ছাড়াই সব ডিভাইসে একই দেখাবে।
| ফন্টের নাম | Generic | চেহারা | Windows | macOS |
|---|---|---|---|---|
| Arial | sans-serif | পরিষ্কার, সর্বজনীন | ✅ | ✅ (Helvetica) |
| Helvetica | sans-serif | পরিষ্কার, সর্বজনীন | ❌ (Arial দেখায়) | ✅ |
| Verdana | sans-serif | বিস্তৃত, ছোটতেও পরিষ্কার | ✅ | ✅ |
| Tahoma | sans-serif | Arial-এর মতো, একটু সরু | ✅ | ✅ |
| Trebuchet MS | sans-serif | আধুনিক, পরিষ্কার | ✅ | ✅ |
| Georgia | serif | স্ক্রিনে পড়তে ভালো serif | ✅ | ✅ |
| Times New Roman | serif | পুরানো, ক্লাসিক | ✅ | ✅ (Times) |
| Courier New | monospace | টাইপরাইটারের মতো | ✅ | ✅ |
| Impact | fantasy | মোটা, চওড়া — ব্যানারে | ✅ | ✅ |
sans-serif →
"Segoe UI", Tahoma, Verdana, Arial, sans-serifserif →
Georgia, "Times New Roman", Times, serifmonospace →
Consolas, "Courier New", Courier, monospace
🔷 ৪. font-size — ফন্টের আকার
font-size দিয়ে লেখার আকার নিয়ন্ত্রণ করা হয়।
একক দুই ভাগে ভাগ: Absolute (সবসময় একই) ও
Relative (পরিস্থিতি অনুযায়ী বদলায়)।
Absolute Units — সবসময় একই আকার Absolute
| একক | মানে | উদাহরণ | কখন ব্যবহার করবে |
|---|---|---|---|
px |
পিক্সেল — ১ স্ক্রিন বিন্দু | 16px |
ওয়েবে সাধারণ ব্যবহার |
pt |
পয়েন্ট — ১pt = ১.৩৩px | 12pt |
প্রিন্ট স্টাইলশিটে |
cm |
সেন্টিমিটার | 1cm |
প্রিন্টে, স্ক্রিনে না |
mm |
মিলিমিটার | 10mm |
প্রিন্টে, স্ক্রিনে না |
Relative Units — পরিস্থিতি অনুযায়ী বদলায় Relative
| একক | মানে | উদাহরণ | সমতুল্য (root 16px হলে) |
|---|---|---|---|
em |
বাবার font-size এর গুণিতক | 1.5em |
বাবা 16px হলে → 24px |
rem |
root (html)-এর font-size এর গুণিতক ✅ | 1.5rem |
সবসময় → 24px |
% |
বাবার font-size এর শতাংশ | 150% |
বাবা 16px হলে → 24px |
vw |
viewport প্রস্থের শতাংশ | 4vw |
1200px স্ক্রিনে → 48px |
vh |
viewport উচ্চতার শতাংশ | 3vh |
800px উচ্চতায় → 24px |
em বনাম rem — কোনটা ব্যবহার করবে? em vs rem
Keyword Values — নামে আকার Keywords
প্রমাণিত Font Size স্কেল — Type Scale Type Scale
পেশাদার পেজে একটি সামঞ্জস্যপূর্ণ আকারের ক্রম ব্যবহার করা হয়:
typescale.com ওয়েবসাইটে গেলে
বিভিন্ন স্কেল ভিজ্যুয়ালি দেখতে ও কোড কপি করতে পারবে।
🔷 ৫. font-weight — ফন্টের ওজন (মোটা ও পাতলা)
font-weight দিয়ে ফন্ট কতটা মোটা বা পাতলা হবে তা ঠিক করা হয়।
কীওয়ার্ড বা ১০০ থেকে ৯০০ পর্যন্ত সংখ্যা দুভাবেই লেখা যায়।
| মান | সংখ্যা | চেহারা | কখন ব্যবহার করবে |
|---|---|---|---|
100 |
100 | Thin / Hairline — সবচেয়ে পাতলা | বড় হেডিং লো কনট্রাস্টে |
200 |
200 | Extra Light | সাবটাইটেল, ক্যাপশন |
300 / lighter |
300 | Light — পাতলা কিন্তু পাঠযোগ্য | সাধারণ body লেখায় |
400 / normal |
400 | Regular — ডিফল্ট ✅ | সাধারণ সব লেখায় |
500 |
500 | Medium | একটু জোর দিতে |
600 |
600 | Semi Bold | নেভিগেশন, লেবেল |
700 / bold |
700 | Bold — মোটা ✅ | শিরোনাম, জোর দেওয়া |
800 |
800 | Extra Bold | বড় হেডিং |
900 / bolder |
900 | Black / Heavy — সবচেয়ে মোটা | হিরো শিরোনাম, ডিসপ্লে |
400 ও 700 সমর্থন করে।
Google Fonts থেকে ফন্ট আনলে কোন কোন weight চাও তা নির্দিষ্টভাবে লিংকে উল্লেখ করতে হবে।
🔷 ৬. font-style ও font-variant
font-style — কাত করা Style
font-style দিয়ে ফন্ট কাত (italic) করা হয়।
italic ও oblique-এর মধ্যে পার্থক্য আছে।
| মান | কাজ | পার্থক্য |
|---|---|---|
normal |
সোজা — ডিফল্ট | — |
italic |
ফন্টের নিজস্ব italic ভেরিয়েন্ট ব্যবহার করে | ফন্ট ডিজাইনারের তৈরি — সুন্দর দেখায় ✅ |
oblique |
ব্রাউজার জোর করে কাত করে | italic না থাকলে fallback হিসেবে |
oblique 30deg |
নির্দিষ্ট ডিগ্রিতে কাত | Variable Font-এ কাজ করে |
font-variant — Small Caps Variant
font-variant: small-caps দিলে ছোট হাতের অক্ষরগুলো
ছোট আকারের বড় হাতে দেখায় — পেশাদার চেহারার জন্য।
🔷 ৭. font-stretch — ফন্ট সরু বা চওড়া
font-stretch দিয়ে ফন্ট সরু বা চওড়া করা যায়।
তবে শুধু সেই ফন্টে কাজ করে যেখানে condensed বা expanded ভেরিয়েন্ট আছে।
font-stretch কাজ করে না — এগুলোতে condensed/expanded ভেরিয়েন্ট নেই।
Barlow Condensed বা Roboto Condensed (Google Fonts) ব্যবহার করো।
🔷 ৮. line-height — লাইনের উচ্চতা
line-height দিয়ে দুটি লাইনের মাঝের উচ্চতা (leading)
নিয়ন্ত্রণ করা হয়। পাঠযোগ্যতার জন্য এটি সবচেয়ে গুরুত্বপূর্ণ Font Property।
| মান | পরিস্থিতি | কখন ব্যবহার করবে |
|---|---|---|
1 – 1.2 |
টাইট — লাইন কাছাকাছি | বড় শিরোনাম (h1, h2) |
1.4 – 1.6 |
স্বাভাবিক — আরামদায়ক ✅ | সাধারণ body লেখা |
1.7 – 1.8 |
বিস্তৃত — বাতাসময় | দীর্ঘ পড়ার লেখা, ব্লগ |
2 বা বেশি |
অনেক বেশি ফাঁকা | বিশেষ ডিজাইনে, সাধারণত না |
line-height কমপক্ষে 1.5 হওয়া উচিত —
পড়তে সমস্যা আছে এমন মানুষদের জন্য।
🔷 ৯. font Shorthand — সব একসাথে
font Shorthand দিয়ে font-সংক্রান্ত সব Property
এক লাইনে লেখা যায়।
font-size ও font-family দেওয়া বাধ্যতামূলক।
font shorthand ব্যবহার করলে
যে মান উল্লেখ করোনি সেগুলো ডিফল্টে রিসেট হয়ে যায়।
তাই Shorthand ব্যবহার করলে সব প্রয়োজনীয় মান উল্লেখ করো।
System Font Keywords System
🔷 ১০. Google Fonts — বিনামূল্যে হাজারো ফন্ট
Google Fonts (fonts.google.com) হলো বিনামূল্যের ওয়েব ফন্ট সার্ভিস।
১,৫০০-এর বেশি ফন্ট পাওয়া যায় — HTML বা CSS-এ কয়েক লাইন যোগ করলেই ব্যবহার করা যায়।
কীভাবে যুক্ত করবে — ধাপে ধাপে ধাপ
@import পদ্ধতি — CSS ফাইলে সরাসরি @import
একাধিক ফন্ট একসাথে আনা Multiple
জনপ্রিয় Google Fonts সুপারিশ জনপ্রিয়
| ফন্ট | Generic | চেহারা | সেরা ব্যবহার |
|---|---|---|---|
| Roboto | sans-serif | পরিষ্কার, আধুনিক | সাধারণ সব কাজ, Android ডিফল্ট |
| Open Sans | sans-serif | নিরপেক্ষ, পাঠযোগ্য | body লেখা, UI |
| Lato | sans-serif | উষ্ণ, পেশাদার | ব্যবসায়িক পেজ |
| Poppins | sans-serif | গোলাকার, বন্ধুত্বপূর্ণ | আধুনিক ওয়েবসাইট, স্টার্টআপ |
| Montserrat | sans-serif | জ্যামিতিক, সাহসী | শিরোনাম, লোগো |
| Playfair Display | serif | মার্জিত, সাহিত্যিক | ব্লগ শিরোনাম, ম্যাগাজিন |
| Merriweather | serif | পাঠযোগ্য serif | দীর্ঘ পড়ার লেখা |
| Fira Code | monospace | ligature সহ কোড ফন্ট | কোড এডিটর, কোড ব্লক |
400 (regular) ও 700 (bold) — এই দুটোই যথেষ্ট।
🔷 ১১. @font-face — নিজের ফন্ট যুক্ত করা
@font-face দিয়ে নিজের সার্ভারে রাখা কাস্টম ফন্ট
লোড করা হয়। Google Fonts ব্যবহার না করে নিজের ফন্ট ফাইল থাকলে এভাবে যুক্ত করতে হয়।
ফন্ট ফাইলের ফরম্যাট Format
| ফরম্যাট | বিস্তার | সাইজ | সমর্থন |
|---|---|---|---|
.woff2 |
Web Open Font Format 2 | সবচেয়ে ছোট ✅ | সব আধুনিক ব্রাউজার |
.woff |
Web Open Font Format | ছোট | প্রায় সব ব্রাউজার |
.ttf |
TrueType Font | মাঝারি | সব ব্রাউজার |
.otf |
OpenType Font | মাঝারি | সব ব্রাউজার |
.eot |
Embedded OpenType | বড় | শুধু পুরানো IE — এড়িয়ে চলো |
@font-face কীভাবে লিখবে Syntax
Bold ও Italic আলাদাভাবে যুক্ত করা Variants
font-display — লোডিংয়ের সময় কী দেখাবে font-display
| মান | আচরণ | কখন ব্যবহার করবে |
|---|---|---|
swap |
আগে fallback, লোড হলে বদলায় | সাধারণ ব্যবহার — সবচেয়ে ভালো ✅ |
block |
লোড না হওয়া পর্যন্ত অদৃশ্য | গুরুত্বপূর্ণ আইকন ফন্টে |
fallback |
ছোট বিরতি, তারপর চিরতরে fallback | দ্রুত লোড চাইলে |
optional |
সংযোগ ভালো হলে লোড | বাড়তি সজ্জামূলক ফন্টে |
auto |
ব্রাউজার নিজে ঠিক করে | ডিফল্ট — সাধারণত swap-এর মতো |
🔷 ১২. Variable Fonts — একটিতে সব
Variable Font হলো আধুনিক ফন্ট প্রযুক্তি — একটি ফাইলেই সব weight, width, italic সহ অনেক variation থাকে। আলাদা আলাদা ফাইলের বদলে একটি ফাইলে সব — পেজ দ্রুত লোড হয়।
🔷 দ্রুত রেফারেন্স — সব Font Property এক জায়গায়
| Property | কাজ | সাধারণ মান / উদাহরণ | বাধ্যতামূলক? |
|---|---|---|---|
| font-family | ফন্ট পরিবার নির্ধারণ | "Roboto", sans-serif |
✅ হ্যাঁ |
| font-size | ফন্টের আকার | 1rem, 16px, 1.5em |
✅ হ্যাঁ |
| font-weight | মোটা বা পাতলা | normal, bold, 400–900 |
না |
| font-style | কাত (italic) | normal, italic, oblique |
না |
| font-variant | Small Caps ও বিশেষ ভেরিয়েন্ট | normal, small-caps |
না |
| font-stretch | সরু বা চওড়া | condensed, normal, expanded |
না |
| line-height | লাইনের উচ্চতা | 1.6, 1.5, 28px |
না (কিন্তু দেওয়া উচিত) |
| font | Shorthand — সব একসাথে | bold 1rem/1.6 "Roboto", sans-serif |
না |
| @font-face | কাস্টম ফন্ট যুক্ত করা | src: url("font.woff2") |
প্রয়োজনে |
| font-display | ফন্ট লোডিং আচরণ | swap, block, fallback |
@font-face-এ |
| font-variation-settings | Variable Font axis নিয়ন্ত্রণ | "wght" 700, "wdth" 90 |
Variable Font-এ |
👁️ CSS Opacity — সম্পূর্ণ নোট
এই সেকশনে CSS-এর opacity Property, RGBA ও HSLA রঙ, visibility, এবং স্বচ্ছতা সংক্রান্ত সব ধারণা বিস্তারিত ব্যাখ্যা সহ বোঝানো হয়েছে।
🔷 Opacity কী?
Opacity মানে একটি এলিমেন্ট কতটা দেখা যাবে —
সম্পূর্ণ অপাক থেকে সম্পূর্ণ স্বচ্ছ পর্যন্ত।
CSS-এ opacity নিয়ন্ত্রণের মূলত তিনটি উপায় আছে:
opacity Property, rgba() রঙ এবং hsla() রঙ।
সহজ ভাষায় — Opacity হলো কাচের দেওয়ালের মতো। কাচ পরিষ্কার হলে সব দেখা যায় (opacity: 1), কাচ ঘোলা হলে অর্ধেক দেখা যায় (opacity: 0.5), কাচ কালো হলে কিছুই দেখা যায় না (opacity: 0)।
opacity Property ব্যবহার করলে এলিমেন্টের ভেতরের সব কিছু (লেখা, ছবি, সন্তান এলিমেন্ট)
একসাথে স্বচ্ছ হয়।
শুধু ব্যাকগ্রাউন্ড স্বচ্ছ করতে চাইলে rgba() বা hsla() ব্যবহার করো।
🔷 ১. opacity Property
opacity Property দিয়ে পুরো এলিমেন্টের স্বচ্ছতা নিয়ন্ত্রণ করা হয়।
মান 0 থেকে 1 — দশমিক সংখ্যায়।
বাস্তব উদাহরণ — ছবির উপর টেক্সট ওভারলে Overlay
ছবির উপর একটি অর্ধ-স্বচ্ছ স্তর দিয়ে লেখা পড়তে সহজ করা — এটাই Opacity-র সবচেয়ে জনপ্রিয় ব্যবহার।
opacity ও সন্তান এলিমেন্ট — সমস্যা সমস্যা
rgba() ব্যবহার করো।
পুরো এলিমেন্ট (লেখাসহ) স্বচ্ছ করতে → opacity ব্যবহার করো।
🔷 ২. rgba() — রঙের সাথে স্বচ্ছতা
rgba() মানে Red, Green, Blue, Alpha।
চতুর্থ মানটি (A) হলো স্বচ্ছতা — 0 থেকে 1।
opacity Property-র মতো নয় — শুধু ঐ নির্দিষ্ট রঙটাই স্বচ্ছ হয়,
সন্তান এলিমেন্ট প্রভাবিত হয় না।
rgba()-এর বাস্তব ব্যবহার ব্যবহার
rgba(0,0,0, 0.1) = হালকা ছায়া |
rgba(0,0,0, 0.5) = মাঝারি আবরণ |
rgba(255,255,255, 0.2) = হালকা সাদা কাচ |
rgba(0,0,0, 0.8) = গাঢ় আবরণ
🔷 ৩. hsla() — HSL-এ স্বচ্ছতা
hsla() মানে Hue (রঙের কোণ), Saturation (তীব্রতা), Lightness (উজ্জ্বলতা),
Alpha।
rgba()-এর মতোই কাজ করে — শুধু রঙ লেখার পদ্ধতি আলাদা।
HSL — রঙ বোঝার সহজ পদ্ধতি HSL
| অংশ | মানে | পরিসর | উদাহরণ |
|---|---|---|---|
| H (Hue) | রঙচক্রে কোণ | 0–360 ডিগ্রি | 0°=লাল, 120°=সবুজ, 240°=নীল |
| S (Saturation) | রঙের তীব্রতা | 0%–100% | 0%=ধূসর, 100%=সম্পূর্ণ রঙিন |
| L (Lightness) | উজ্জ্বলতা | 0%–100% | 0%=কালো, 50%=স্বাভাবিক, 100%=সাদা |
| A (Alpha) | স্বচ্ছতা | 0–1 | 0=স্বচ্ছ, 0.5=আধা, 1=অপাক |
🔷 ৪. opacity বনাম rgba() — বিস্তারিত পার্থক্য
| বিষয় | opacity |
rgba() / hsla() |
|---|---|---|
| কোথায় লেখা যায়? | আলাদা Property হিসেবে | color, background-color, border ইত্যাদি মানে |
| কী স্বচ্ছ হয়? | পুরো এলিমেন্ট — ব্যাকগ্রাউন্ড, লেখা, সন্তান সব | শুধু ঐ নির্দিষ্ট রঙটি |
| সন্তান এলিমেন্ট? | সন্তানও স্বচ্ছ হয়ে যায় ❌ | সন্তান প্রভাবিত হয় না ✅ |
| Hover/Transition-এ? | সহজে animate করা যায় | animate করা যায়, একটু জটিল |
| কখন ব্যবহার করবে? | পুরো এলিমেন্ট ফেড করতে, hover effect | শুধু ব্যাকগ্রাউন্ড বা রঙ স্বচ্ছ করতে |
| উদাহরণ | opacity: 0.5 |
background: rgba(0,0,0,0.5) |
🔷 ৫. visibility — অদৃশ্য কিন্তু জায়গা থাকে
visibility: hidden দিলে এলিমেন্ট অদৃশ্য হয়,
কিন্তু পেজে জায়গা ধরে রাখে।
এটা opacity: 0-এর মতো — দেখা যায় না কিন্তু কাঠামোয় আছে।
opacity: 0 বনাম visibility: hidden বনাম display: none তুলনা
| পদ্ধতি | দেখা যায়? | জায়গা ধরে? | ক্লিক হয়? | Animate করা যায়? |
|---|---|---|---|---|
opacity: 0 |
❌ না | ✅ হ্যাঁ | ✅ হ্যাঁ | ✅ হ্যাঁ (Transition) |
visibility: hidden |
❌ না | ✅ হ্যাঁ | ❌ না | ⚠️ সীমিত |
display: none |
❌ না | ❌ না | ❌ না | ❌ না |
opacity ও visibility একসাথে ব্যবহার করো —
opacity দিয়ে মসৃণ Animation, visibility দিয়ে অদৃশ্য থাকা অবস্থায় ক্লিক
আটকানো।
🔷 ৬. Hover-এ Opacity — সুন্দর Effect
opacity-এর সাথে transition যোগ করলে
মসৃণ Fade In/Out effect তৈরি হয় —
ওয়েবসাইটে ইন্টারঅ্যাক্টিভিটি বাড়ানোর সহজতম উপায়।
Fade In / Fade Out — ছবি ও বোতামে Fade
Pulse Animation — Loading Skeleton Loading
🔷 ৭. আধুনিক ব্যবহার — Glassmorphism
Glassmorphism হলো কাচের মতো স্বচ্ছ, ঝাপসা UI — আধুনিক ওয়েব ডিজাইনে
খুব জনপ্রিয়। rgba() ও backdrop-filter একসাথে ব্যবহার করে তৈরি হয়।
backdrop-filter সব পুরানো ব্রাউজারে
কাজ করে না। Safari-এর জন্য -webkit-backdrop-filter দিতে হবে।
Glassmorphism effect কাজ না করলে fallback হিসেবে সাধারণ rgba() ব্যাকগ্রাউন্ড দাও।
🔷 দ্রুত রেফারেন্স — Opacity সংক্রান্ত সব পদ্ধতি
| পদ্ধতি | Syntax | কী স্বচ্ছ হয়? | সন্তান? | কখন ব্যবহার করবে |
|---|---|---|---|---|
| opacity | opacity: 0.5 |
পুরো এলিমেন্ট | প্রভাবিত হয় ❌ | Fade In/Out, hover effect |
| rgba() | rgba(0,0,0, 0.5) |
শুধু ঐ রঙ | প্রভাবিত হয় না ✅ | ব্যাকগ্রাউন্ড, ছায়া, border |
| hsla() | hsla(220, 80%, 50%, 0.5) |
শুধু ঐ রঙ | প্রভাবিত হয় না ✅ | Design System, থিম রঙ |
| visibility: hidden | visibility: hidden |
পুরো এলিমেন্ট | সন্তানও লুকায় | জায়গা রেখে লুকাতে |
| display: none | display: none |
পুরো এলিমেন্ট | জায়গাও যায় | সম্পূর্ণ সরিয়ে দিতে |
opacity মানের চার্ট Chart
| opacity মান | শতাংশ | চেহারা | সাধারণ ব্যবহার |
|---|---|---|---|
0 |
0% | সম্পূর্ণ অদৃশ্য | Hidden state, Fade Out শেষ অবস্থা |
0.1 |
10% | প্রায় অদৃশ্য | সূক্ষ্ম ব্যাকগ্রাউন্ড রঙ |
0.25 |
25% | হালকা ছায়া | Watermark, আবছা overlay |
0.5 |
50% | আধা স্বচ্ছ | Disabled বোতাম, Modal overlay |
0.7 |
70% | বেশিরভাগ দেখা যায় | Hover effect, Tooltip |
0.8 |
80% | প্রায় পুরো দেখা যায় | Card overlay, Navbar blur |
1 |
100% | সম্পূর্ণ অপাক | সাধারণ — ডিফল্ট |
পুরো এলিমেন্ট ফেড করতে →
opacityশুধু ব্যাকগ্রাউন্ড স্বচ্ছ করতে →
rgba()জায়গা রেখে লুকাতে →
visibility: hiddenসম্পূর্ণ সরিয়ে দিতে →
display: noneমসৃণ Fade Animation →
opacity + transition
🖼️ CSS Background — সম্পূর্ণ নোট
এই সেকশনে CSS-এর সব Background সংক্রান্ত Property — রঙ, ছবি, আকার, অবস্থান, পুনরাবৃত্তি, সংযুক্তি, গ্রেডিয়েন্ট এবং Shorthand বিস্তারিত ব্যাখ্যা সহ বোঝানো হয়েছে।
🔷 CSS Background কী?
CSS Background দিয়ে যেকোনো HTML এলিমেন্টের পেছনের অংশ নিয়ন্ত্রণ করা হয় — রঙ, ছবি, গ্রেডিয়েন্ট, অবস্থান, আকার সব কিছু।
সহজ ভাষায় — Background হলো একটি ক্যানভাসের মতো, যার উপরে লেখা ও অন্যান্য কন্টেন্ট বসে। CSS দিয়ে সেই ক্যানভাসের রঙ, নকশা ও আচরণ নির্ধারণ করা হয়।
Background-এর সব Property — এক নজরে Overview
| Property | কাজ |
|---|---|
background-color |
ব্যাকগ্রাউন্ডের রঙ নির্ধারণ |
background-image |
ব্যাকগ্রাউন্ডে ছবি বা গ্রেডিয়েন্ট |
background-repeat |
ছবি বারবার দেখাবে কিনা |
background-position |
ছবি কোথায় থাকবে |
background-size |
ছবির আকার |
background-attachment |
স্ক্রল করলে ছবি সাথে যাবে কিনা |
background-origin |
ছবি কোথা থেকে শুরু হবে |
background-clip |
ব্যাকগ্রাউন্ড কতটুকু এলাকা জুড়ে থাকবে |
background |
Shorthand — সব একসাথে |
🔷 ১. background-color — ব্যাকগ্রাউন্ডের রঙ
background-color দিয়ে এলিমেন্টের ব্যাকগ্রাউন্ডের রঙ
নির্ধারণ করা হয়। রঙ বিভিন্ন উপায়ে লেখা যায়।
Fallback রঙ — ছবি লোড না হলে Fallback
background-color সবসময় background-image-এর নিচে থাকে।
ছবি লোড হওয়ার আগে বা ছবি না থাকলে রঙ দেখা যায় — তাই সবসময় দেওয়া ভালো।
background-image ব্যবহার করলে
সবসময় একটি background-color দাও —
ছবি ধীরে লোড হলে বা না থাকলে পেজ ভাঙা দেখাবে না।
🔷 ২. background-image — ব্যাকগ্রাউন্ডে ছবি
background-image দিয়ে এলিমেন্টের ব্যাকগ্রাউন্ডে ছবি বা গ্রেডিয়েন্ট
দেওয়া হয়। url() ফাংশনে ছবির ঠিকানা দিতে হয়।
<img> বনাম background-image — কোনটা কখন? তুলনা
| বিষয় | <img> ট্যাগ |
background-image |
|---|---|---|
| ব্যবহার | কন্টেন্টের অংশ — অর্থবহ ছবি | সজ্জামূলক ছবি, ব্যাকগ্রাউন্ড |
| SEO | alt text দেওয়া যায় — ভালো ✅ | Search Engine দেখে না |
| Accessibility | Screen Reader পড়তে পারে | Screen Reader দেখে না |
| আকার নিয়ন্ত্রণ | width, height দিয়ে | background-size দিয়ে |
| উদাহরণ | পণ্যের ছবি, ব্লগের ছবি | Hero section, Card ব্যাকগ্রাউন্ড |
🔷 ৩. background-repeat — পুনরাবৃত্তি
ছবি এলিমেন্টের চেয়ে ছোট হলে ডিফল্টে বারবার দেখায় (tile করে)।
background-repeat দিয়ে এই আচরণ নিয়ন্ত্রণ করা হয়।
| মান | কাজ | কখন ব্যবহার করবে |
|---|---|---|
repeat |
উভয় দিকে বারবার — ডিফল্ট | টাইলড প্যাটার্ন বা টেক্সচারে |
no-repeat |
একবার মাত্র | Hero ছবি, আইকন — সবচেয়ে বেশি ✅ |
repeat-x |
শুধু বাম-ডানে বারবার | অনুভূমিক ব্যানার বা বর্ডার |
repeat-y |
শুধু উপর-নিচে বারবার | উল্লম্ব ব্যানার বা বর্ডার |
space |
কাটা ছাড়া সমান ফাঁকে সাজানো | সুন্দর টাইল প্যাটার্নে |
round |
ছবি বাড়িয়ে বা কমিয়ে ফিট করা | ছবি কাটা যাবে না এমন ক্ষেত্রে |
🔷 ৪. background-position — ছবির অবস্থান
background-position দিয়ে ব্যাকগ্রাউন্ড ছবি কোথায় থাকবে
তা নির্ধারণ করা হয়। দুটি মান — প্রথমটি x (অনুভূমিক), দ্বিতীয়টি y (উল্লম্ব)।
কীওয়ার্ড দিয়ে অবস্থান Keywords
px ও % দিয়ে অবস্থান px / %
🔷 ৫. background-size — ছবির আকার
background-size দিয়ে ব্যাকগ্রাউন্ড ছবির আকার
নিয়ন্ত্রণ করা হয়। এটি সবচেয়ে গুরুত্বপূর্ণ background property।
cover — সম্পূর্ণ ঢেকে রাখো cover
ছবি পুরো এলিমেন্ট সম্পূর্ণ ঢেকে রাখে — অনুপাত ঠিক থাকে, কিন্তু কিছু অংশ কাটা যেতে পারে। Hero section-এর জন্য সেরা।
contain — পুরো ছবি দেখাও contain
পুরো ছবি সম্পূর্ণ দেখা যায় — কিছুই কাটে না। এলিমেন্টের বাকি জায়গায় ব্যাকগ্রাউন্ড রঙ বা পুনরাবৃত্তি দেখায়। লোগো বা আইকনের জন্য ভালো।
cover বনাম contain — পার্থক্য তুলনা
| বিষয় | cover |
contain |
|---|---|---|
| ছবি কাটে? | হ্যাঁ — প্রয়োজনে কাটে | না — সম্পূর্ণ দেখায় |
| খালি জায়গা? | নেই — সব ঢাকা থাকে | হতে পারে — বাকি জায়গায় রঙ |
| অনুপাত? | ঠিক থাকে ✅ | ঠিক থাকে ✅ |
| কখন ব্যবহার? | Hero section, Card ব্যাকগ্রাউন্ড | লোগো, আইকন, ম্যাপ |
নির্দিষ্ট আকার — px ও % Custom Size
🔷 ৬. background-attachment — স্ক্রল আচরণ
background-attachment দিয়ে স্ক্রল করলে ব্যাকগ্রাউন্ড ছবি
কীভাবে আচরণ করবে তা ঠিক করা হয়।
| মান | আচরণ | কখন ব্যবহার করবে |
|---|---|---|
scroll |
ছবি এলিমেন্টের সাথে স্ক্রল করে | সাধারণ ব্যবহার — ডিফল্ট ✅ |
fixed |
ছবি viewport-এ স্থির, কন্টেন্ট সরে | Parallax scrolling effect |
local |
এলিমেন্টের ভেতরে স্ক্রল হলে ছবিও সরে | Scrollable ডিভের ব্যাকগ্রাউন্ডে |
background-attachment: fixed
মোবাইলে সবসময় ভালো কাজ করে না। মোবাইল ফ্রেন্ডলি Parallax-এর জন্য
JavaScript বা CSS transform ব্যবহার করা ভালো।
🔷 ৭. background-origin ও background-clip
background-origin — ছবি কোথা থেকে শুরু হবে Origin
background-origin দিয়ে ব্যাকগ্রাউন্ড ছবি কোথা থেকে শুরু হবে
তা নির্ধারণ করা হয় — Box Model-এর তিনটি স্তরের যেকোনো একটি থেকে।
| মান | ছবি কোথা থেকে শুরু | সাধারণ ব্যবহার |
|---|---|---|
padding-box |
Padding-এর বাইরের কোণ থেকে | ডিফল্ট — সাধারণ ব্যবহার ✅ |
border-box |
Border-এর বাইরের কোণ থেকে | Border-এর নিচেও ছবি দেখাতে |
content-box |
Content এলাকা থেকে | ছবি Padding ও Border বাদ দিয়ে |
background-clip — ব্যাকগ্রাউন্ড কতটুকু দেখাবে Clip
background-clip দিয়ে ব্যাকগ্রাউন্ড কতটুকু এলাকায় দেখাবে
তা কেটে দেওয়া হয়। বিশেষ করে text মানটি দিয়ে সুন্দর গ্রেডিয়েন্ট লেখা তৈরি করা যায়।
background-clip: text + color: transparent দিলে
লেখার ভেতরে গ্রেডিয়েন্ট রঙ দেখায় — অনেক আধুনিক ওয়েবসাইটে Hero শিরোনামে ব্যবহার হয়।
🔷 ৮. CSS Gradients — রঙের ধাপ
CSS-এ Gradient হলো এক রঙ থেকে আরেক রঙে ধীরে ধীরে পরিবর্তন।
Gradient ছবির মতো কাজ করে — তাই background-image-এ দিতে হয়।
linear-gradient — সরল রেখায় গ্রেডিয়েন্ট Linear
radial-gradient — কেন্দ্র থেকে বাইরে Radial
conic-gradient — শঙ্কু আকারে Conic
repeating-gradient — বারবার গ্রেডিয়েন্ট Repeating
🔷 ৯. একাধিক Background — স্তরে স্তরে
একটি এলিমেন্টে একাধিক background-image কমা দিয়ে আলাদা করে দেওয়া যায়। প্রথমটি সবার উপরে, শেষেরটি সবার নিচে — স্তরে স্তরে সাজানো হয়।
linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.5)) স্তর দাও —
লেখা পড়তে সহজ হবে এবং ডিজাইন পেশাদার দেখাবে।
🔷 ১০. background Shorthand — সব একসাথে
background Shorthand দিয়ে সব background property
এক লাইনে লেখা যায়। size লিখতে হলে position-এর পরে
/ দিয়ে লিখতে হয়।
background Shorthand ব্যবহার করলে
উল্লেখ না করা সব মান ডিফল্টে রিসেট হয়।
তাই বড় প্রজেক্টে প্রতিটি Property আলাদাভাবে লেখা বেশি নিরাপদ।
🔷 ১১. বাস্তব উদাহরণ — সম্পূর্ণ সেটআপ
Hero Section Hero
Card-এ সূক্ষ্ম Pattern Pattern
Glassmorphism Card Glass
🔷 দ্রুত রেফারেন্স — সব Background Property এক জায়গায়
| Property | কাজ | সাধারণ মান / উদাহরণ | ডিফল্ট |
|---|---|---|---|
| background-color | ব্যাকগ্রাউন্ড রঙ | #fff, rgba(0,0,0,0.5) |
transparent |
| background-image | ব্যাকগ্রাউন্ড ছবি বা গ্রেডিয়েন্ট | url("bg.jpg"), linear-gradient(...) |
none |
| background-repeat | পুনরাবৃত্তি | no-repeat, repeat, repeat-x |
repeat |
| background-position | ছবির অবস্থান | center, top left, 50% 50% |
0% 0% |
| background-size | ছবির আকার | cover, contain, 100px 200px |
auto |
| background-attachment | স্ক্রল আচরণ | scroll, fixed, local |
scroll |
| background-origin | ছবি শুরুর বিন্দু | padding-box, border-box, content-box |
padding-box |
| background-clip | ব্যাকগ্রাউন্ড কতটুকু দেখাবে | border-box, padding-box, text |
border-box |
| background | Shorthand — সব একসাথে | #fff url("bg.jpg") no-repeat center / cover |
— |
Gradient সারসংক্ষেপ Gradient
| ধরন | Syntax | আকার | কখন ব্যবহার |
|---|---|---|---|
| linear-gradient | linear-gradient(to right, red, blue) |
সরল রেখায় | Button, Hero, Card |
| radial-gradient | radial-gradient(circle, red, blue) |
কেন্দ্র থেকে বাইরে | Glow effect, Spotlight |
| conic-gradient | conic-gradient(red, blue) |
শঙ্কু আকারে | Pie Chart, Color Wheel |
| repeating-linear | repeating-linear-gradient(...) |
বারবার সরল রেখায় | ডোরাকাটা প্যাটার্ন |
| repeating-radial | repeating-radial-gradient(...) |
বারবার বৃত্তাকারে | রিং প্যাটার্ন |
background-color (Fallback) +
linear-gradient (আবরণ) +
url() (ছবি) +
background-size: cover +
background-position: center +
background-repeat: no-repeat —
এই ছয়টি দিলেই পেশাদার Hero Section তৈরি হয়।
🎨 CSS Colors — সম্পূর্ণ নোট
এই সেকশনে CSS-এর সব রঙ সংক্রান্ত বিষয় — রঙের ফরম্যাট, নামকরণ, স্বচ্ছতা, কাস্টম প্রপার্টি, রঙ ফাংশন এবং বাস্তব ব্যবহার বিস্তারিত ব্যাখ্যা সহ বোঝানো হয়েছে।
🔷 CSS Color কী?
CSS Color দিয়ে ওয়েবপেজের যেকোনো উপাদানের রঙ নির্ধারণ করা হয় — লেখার রঙ, ব্যাকগ্রাউন্ড, বর্ডার, ছায়া সবকিছুতেই রঙ ব্যবহার হয়।
সহজ ভাষায় — CSS Color হলো ওয়েব ডিজাইনের তুলি ও রঙের বাক্স। একই রঙ বিভিন্ন ফরম্যাটে লেখা যায় — সব একই কাজ করে, কিন্তু প্রতিটির আলাদা সুবিধা আছে।
রঙ ব্যবহার হয় এমন Property — এক নজরে Overview
| Property | কাজ | উদাহরণ |
|---|---|---|
color |
লেখার রঙ | color: #333; |
background-color |
ব্যাকগ্রাউন্ডের রঙ | background-color: #f0f4f8; |
border-color |
বর্ডারের রঙ | border-color: #e2e8f0; |
outline-color |
Outline-এর রঙ | outline-color: blue; |
box-shadow |
ছায়ার রঙ | box-shadow: 0 4px 6px rgba(0,0,0,0.1); |
text-shadow |
লেখার ছায়ার রঙ | text-shadow: 1px 1px 2px #000; |
caret-color |
Input-এর কার্সারের রঙ | caret-color: #3b82f6; |
CSS-এ রঙের সব ফরম্যাট — এক নজরে Format
| ফরম্যাট | উদাহরণ | বৈশিষ্ট্য |
|---|---|---|
| নাম | red, blue, coral |
সহজ, কিন্তু সীমিত (১৪০টি) |
| Hex | #ff0000, #1a1a2e |
সবচেয়ে বেশি ব্যবহৃত ✅ |
| Hex (Short) | #f00, #fff |
সংক্ষিপ্ত Hex |
| Hex (Alpha) | #ff000080 |
স্বচ্ছতা সহ Hex |
| RGB | rgb(255, 0, 0) |
লাল, সবুজ, নীল মিশ্রণ |
| RGBA | rgba(0, 0, 0, 0.5) |
স্বচ্ছতা সহ RGB ✅ |
| HSL | hsl(0, 100%, 50%) |
রঙ নিয়ন্ত্রণ সহজ |
| HSLA | hsla(220, 80%, 50%, 0.8) |
স্বচ্ছতা সহ HSL |
| currentColor | border-color: currentColor; |
বর্তমান color-এর মান নেয় |
| transparent | background-color: transparent; |
সম্পূর্ণ স্বচ্ছ |
🔷 ১. Named Colors — নামে রঙ
CSS-এ সরাসরি ইংরেজি নামে রঙ লেখা যায়।
মোট ১৪০টিরও বেশি নামকৃত রঙ আছে — যেমন red,
blue, coral, tomato, orchid।
জনপ্রিয় Named Colors Popular
| নাম | রঙ | ব্যবহার |
|---|---|---|
white |
#ffffff | ব্যাকগ্রাউন্ড, Card |
black |
#000000 | লেখা, বর্ডার |
red |
#ff0000 | Error, Alert |
tomato |
#ff6347 | Button, Badge |
coral |
#ff7f50 | Highlight, Tag |
navy |
#000080 | Navbar, Header |
teal |
#008080 | Primary color |
gold |
#ffd700 | Star, Premium badge |
transparent |
(স্বচ্ছ) | Button bg, Overlay |
Hex বা HSL ব্যবহার করাই ভালো —
কারণ তখন রঙের সামান্য পরিবর্তনও নিয়ন্ত্রণে রাখা যায়।
🔷 ২. Hex Color — হেক্স কোড
Hex Color হলো ১৬-ভিত্তিক সংখ্যা পদ্ধতিতে রঙ প্রকাশের উপায়।
ফরম্যাট: #RRGGBB — প্রথম দুটি লাল,
মাঝের দুটি সবুজ, শেষের দুটি নীল।
Short Hex — সংক্ষিপ্ত কোড Short
প্রতিটি রঙের জোড়া একই অক্ষরে হলে তিন অক্ষরে লেখা যায়।
যেমন: #ffffff → #fff, #ff0000 → #f00।
Hex + Alpha — স্বচ্ছতা সহ Hex Alpha
৮ অক্ষরের Hex দিয়ে স্বচ্ছতা নির্ধারণ করা যায় — শেষের দুটি অক্ষর Alpha।
00 = সম্পূর্ণ স্বচ্ছ, ff = সম্পূর্ণ অস্বচ্ছ।
🔷 ৩. RGB ও RGBA — লাল সবুজ নীলের মিশ্রণ
rgb() ফাংশনে তিনটি মান দিতে হয় — লাল, সবুজ, নীল।
প্রতিটি মান ০ থেকে ২৫৫-এর মধ্যে।
rgba()-তে চতুর্থ মান হলো স্বচ্ছতা (০–১)।
rgba() — স্বচ্ছতা সহ RGBA
আধুনিক rgb() সিনট্যাক্স Modern
আধুনিক CSS-এ rgb() এবং rgba() একীভূত হয়েছে।
কমার বদলে স্পেস এবং Alpha-র জন্য / ব্যবহার করা যায়।
🔷 ৪. HSL ও HSLA — রঙ, তীব্রতা, উজ্জ্বলতা
hsl()-এ তিনটি মান — Hue (রঙের অবস্থান),
Saturation (তীব্রতা), Lightness (উজ্জ্বলতা)।
রঙের শেড ও ভ্যারিয়েশন বানাতে এটি সবচেয়ে সুবিধাজনক।
একটি রঙ থেকে শেড — HSL-এর সেরা ব্যবহার Shades
HSL-এর সবচেয়ে বড় সুবিধা হলো একই Hue রেখে Lightness পরিবর্তন করলে একটি রঙের সম্পূর্ণ শেড পরিবার পাওয়া যায়। এভাবেই Tailwind, Bootstrap-এর রঙ পরিবার তৈরি।
hsla() — স্বচ্ছতা সহ HSLA
HSL বনাম RGB — পার্থক্য তুলনা
| বিষয় | RGB | HSL |
|---|---|---|
| পড়তে সহজ? | না — সংখ্যা মনে রাখা কঠিন | হ্যাঁ — রঙ, তীব্রতা, উজ্জ্বলতা স্পষ্ট ✅ |
| শেড বানানো | কঠিন — তিনটি মানই পরিবর্তন করতে হয় | সহজ — শুধু Lightness পরিবর্তন করো ✅ |
| ডিজাইন টুল | Photoshop, পুরনো টুল | Figma, আধুনিক টুল |
| ব্রাউজার সমর্থন | সব ব্রাউজারে ✅ | সব ব্রাউজারে ✅ |
🔷 ৫. currentColor ও transparent — বিশেষ কীওয়ার্ড
currentColor — বর্তমান লেখার রঙ ব্যবহার currentColor
currentColor কীওয়ার্ড এলিমেন্টের color প্রপার্টির
বর্তমান মান নিয়ে নেয়। একবার রঙ ঠিক করলে বাকি সব জায়গায়
স্বয়ংক্রিয়ভাবে মিলে যায়।
transparent — সম্পূর্ণ স্বচ্ছ transparent
transparent = rgba(0, 0, 0, 0)।
Outline Button, Gradient fade-out এবং Hover animation-এ বহুল ব্যবহৃত।
🔷 ৬. CSS Custom Properties — রঙের ভেরিয়েবল
CSS Custom Properties (CSS Variables) দিয়ে রঙ একবার ঠিক করে পুরো পেজে ব্যবহার করা যায়। Design System ও Dark Mode-এর ভিত্তি এটি।
Dark Mode — CSS Variable দিয়ে Dark Mode
একই ভেরিয়েবল নাম রেখে মান পরিবর্তন করলেই Dark Mode তৈরি হয়।
ব্যবহারকারীর সিস্টেম সেটিং অনুযায়ী prefers-color-scheme দিয়ে
স্বয়ংক্রিয়ভাবে প্রয়োগ হয়।
🔷 ৭. আধুনিক রঙের ফাংশন — CSS Color Level 4
CSS Color Level 4-এ নতুন ফাংশন যোগ হয়েছে — রঙ আরও সঠিকভাবে প্রকাশ করা যায় এবং রঙের উপর গণনা করা যায়।
oklch() — সেরা আধুনিক রঙ ফরম্যাট oklch
oklch() হলো সবচেয়ে আধুনিক রঙ ফরম্যাট।
HSL-এর মতো কিন্তু মানুষের চোখে সব শেড সমান উজ্জ্বল দেখায় —
Tailwind CSS v4 এই ফরম্যাট ব্যবহার করে।
color-mix() — দুটি রঙ মেশানো color-mix
color-mix() দিয়ে দুটি রঙ নির্দিষ্ট অনুপাতে মেশানো যায়।
একটি রঙকে সাদা বা কালোর সাথে মিশিয়ে Tint ও Shade তৈরি করতে খুবই কার্যকর।
oklch() ও color-mix()
Chrome 111+, Firefox 113+, Safari 16.4+ থেকে সমর্থিত।
পুরনো ব্রাউজারের জন্য @supports দিয়ে Fallback দাও।
🔷 ৮. রঙ ও Accessibility — সবার জন্য পড়ার উপযোগী
Contrast Ratio হলো পটভূমি ও লেখার রঙের উজ্জ্বলতার পার্থক্য। WCAG মান অনুযায়ী সাধারণ লেখায় ন্যূনতম ৪.৫:১ অনুপাত থাকতে হবে — নইলে দৃষ্টিশক্তি দুর্বল ব্যবহারকারীরা পড়তে পারবেন না।
| WCAG স্তর | সাধারণ লেখা | বড় লেখা (18px+) | উদ্দেশ্য |
|---|---|---|---|
| AA | ৪.৫ : ১ | ৩ : ১ | ন্যূনতম মান — সবার জন্য ✅ |
| AAA | ৭ : ১ | ৪.৫ : ১ | সর্বোচ্চ Accessibility |
| ব্যর্থ | ৪.৫-এর নিচে | ৩-এর নিচে | পড়তে কষ্ট হয় ❌ |
webaim.org/resources/contrastchecker) বা
Chrome DevTools-এর Accessibility সেকশনে Contrast Ratio পরীক্ষা করা যায়।
শুধু রঙের উপর নির্ভর না করে আইকন বা আকৃতি দিয়ে তথ্য প্রকাশ করো।
🔷 ৯. বাস্তব উদাহরণ — সম্পূর্ণ সেটআপ
Design System — রঙের ব্যবস্থাপনা Design System
Status Badge — রঙ দিয়ে অবস্থা জানানো Badge
Focus Ring — Keyboard Accessibility Focus
🔷 দ্রুত রেফারেন্স — সব Color ফরম্যাট এক জায়গায়
| ফরম্যাট | সিনট্যাক্স | Alpha সমর্থন | কখন ব্যবহার |
|---|---|---|---|
| Named | red, coral |
না | দ্রুত প্রোটোটাইপ, সহজ রঙ |
| Hex | #3b82f6 |
না | সবচেয়ে বেশি ব্যবহৃত ✅ |
| Hex Alpha | #3b82f680 |
হ্যাঁ | Hex + স্বচ্ছতা |
| rgb() | rgb(59, 130, 246) |
না | JS থেকে গণনা করা রঙে |
| rgba() | rgba(0, 0, 0, 0.5) |
হ্যাঁ | Overlay, Shadow ✅ |
| hsl() | hsl(220, 90%, 56%) |
না | শেড বানানো, Design System ✅ |
| hsla() | hsla(220, 90%, 56%, 0.8) |
হ্যাঁ | HSL + স্বচ্ছতা |
| oklch() | oklch(0.55 0.2 250) |
হ্যাঁ | আধুনিক Design System |
| color-mix() | color-mix(in srgb, red, blue) |
হ্যাঁ | রঙ মেশানো, Tint/Shade |
| currentColor | border-color: currentColor; |
— | color প্রপার্টির মান নেওয়া |
| transparent | background: transparent; |
— | Outline Button, Gradient |
কোন পরিস্থিতিতে কোন ফরম্যাট ব্যবহার করবে কখন কী
| পরিস্থিতি | সুপারিশ | কারণ |
|---|---|---|
| সাধারণ রঙ (বর্ডার, লেখা) | Hex |
সহজ, ডিজাইন টুলে পাওয়া যায় |
| স্বচ্ছতা দরকার | rgba() |
সহজবোধ্য Alpha নিয়ন্ত্রণ ✅ |
| শেড পরিবার বানানো | hsl() |
শুধু Lightness পরিবর্তন করলেই হয় |
| Design System | CSS Variable + hsl() |
একসাথে পরিবর্তন, Theme সমর্থন |
| Overlay, Modal পর্দা | rgba(0,0,0,0.5) |
স্বচ্ছ কালো আবরণ |
| আধুনিক প্রজেক্ট | oklch() |
পার্সেপচুয়ালি সমান উজ্জ্বলতা |
:root-এ CSS Variable হিসেবে রঙ সংরক্ষণ করো +
শেড বানাতে hsl() ব্যবহার করো +
স্বচ্ছতার জন্য rgba() বা / alpha ব্যবহার করো +
সবসময় Contrast Ratio পরীক্ষা করো —
এই চারটি নিয়ম মানলেই পেশাদার ও Accessible রঙ ব্যবস্থাপনা হবে।
📦 CSS Box Model — সম্পূর্ণ নোট
এই সেকশনে CSS Box Model-এর সব বিষয় — Content, Padding, Border, Margin, box-sizing, collapse, display এবং বাস্তব ব্যবহার বিস্তারিত ব্যাখ্যা সহ বোঝানো হয়েছে।
🔷 CSS Box Model কী?
CSS-এ প্রতিটি HTML এলিমেন্ট একটি আয়তক্ষেত্রাকার বাক্স হিসেবে গণ্য হয়। এই বাক্সটি চারটি স্তর নিয়ে তৈরি — ভেতর থেকে বাইরের দিকে: Content → Padding → Border → Margin।
সহজ ভাষায় — একটি ছবির ফ্রেমের কথা ভাবো। Content = ছবি, Padding = ছবি ও ফ্রেমের মাঝের ফাঁকা জায়গা, Border = ফ্রেম, Margin = ফ্রেম ও দেওয়ালের মাঝের দূরত্ব।
Box Model-এর চারটি স্তর — এক নজরে Overview
| স্তর | কাজ | Property | ডিফল্ট |
|---|---|---|---|
| Content | আসল লেখা বা ছবি থাকে এখানে | width, height |
কন্টেন্টের আকার |
| Padding | Content ও Border-এর মাঝের ভেতরের ফাঁকা জায়গা | padding |
0 |
| Border | Padding-এর চারপাশে সীমারেখা | border |
0 |
| Margin | Border-এর বাইরে অন্য এলিমেন্টের সাথে দূরত্ব | margin |
0 |
মোট আকার গণনা — ডিফল্ট নিয়ম Calculation
width: 300px দিলেও বাস্তবে এলিমেন্ট ৩৫০px জায়গা নিতে পারে।
এই সমস্যা সমাধানের জন্য box-sizing: border-box ব্যবহার করা হয় —
যা পরে বিস্তারিত আলোচনা করা হয়েছে।
🔷 ১. Content — লেখা ও ছবির এলাকা
width ও height দিয়ে Content এলাকার আকার
নির্ধারণ করা হয়। ডিফল্টে এই মান শুধু Content-এর আকার — Padding ও Border যোগ হয় না।
min ও max — আকারের সীমা min / max
overflow — কন্টেন্ট উপচে পড়লে overflow
| মান | আচরণ | কখন ব্যবহার |
|---|---|---|
visible |
উপচে বাইরে দেখাবে — ডিফল্ট | কন্টেন্ট কাটতে না চাইলে |
hidden |
বাইরের অংশ লুকিয়ে যাবে | Tooltip, Dropdown লুকানো ✅ |
scroll |
সবসময় Scrollbar দেখাবে | Scrollbar সবসময় দরকার হলে |
auto |
প্রয়োজনে Scrollbar দেখাবে | সাধারণ Scrollable এলাকায় ✅ |
clip |
কেটে দেবে, Scrollbar নেই | আধুনিক বিকল্প hidden-এর |
🔷 ২. Padding — ভেতরের ফাঁকা জায়গা
padding হলো Content ও Border-এর মাঝের ভেতরের ফাঁকা জায়গা।
Padding-এ background-color প্রযোজ্য হয় — তাই রঙ Padding পর্যন্ত ছড়িয়ে পড়ে।
চার দিকে আলাদা Padding Individual
Padding Shorthand — সংক্ষিপ্ত লেখা Shorthand
Padding-এর বাস্তব ব্যবহার Real Use
🔷 ৩. Border — সীমারেখা
border হলো Padding-এর চারপাশে সীমারেখা।
তিনটি বিষয় লাগে — মোটা (width), ধরন (style),
রঙ (color)। Style না দিলে border দেখা যায় না।
border-style — সীমারেখার ধরন Style
| মান | দেখতে | কখন ব্যবহার |
|---|---|---|
solid |
একটানা সরল রেখা | সবচেয়ে বেশি ব্যবহৃত ✅ |
dashed |
ড্যাশ ড্যাশ রেখা | Drag-and-drop এলাকা, খসড়া |
dotted |
বিন্দু বিন্দু রেখা | Decorative বা Tooltip |
double |
দুটি সমান্তরাল রেখা | Decorative Border |
none |
কোনো border নেই | border সরিয়ে দিতে ✅ |
hidden |
কোনো border নেই | Table-এ border লুকাতে |
border-radius — গোল কোণ border-radius
outline — border-এর বাইরে আরেকটি রেখা outline
outline দেখতে border-এর মতো কিন্তু এটি Box Model-এর
বাইরে থাকে — কোনো জায়গা নেয় না এবং layout প্রভাবিত করে না।
Keyboard focus indicator হিসেবে ব্যবহৃত হয়।
🔷 ৪. Margin — বাইরের দূরত্ব
margin হলো Border-এর বাইরে অন্য এলিমেন্টের সাথে দূরত্ব।
Margin-এ কোনো background-color প্রযোজ্য হয় না — সবসময় স্বচ্ছ থাকে।
margin: auto — মাঝে রাখো auto
ঋণাত্মক Margin — টেনে আনা Negative
Margin Collapse — একটি গুরুত্বপূর্ণ আচরণ Collapse
দুটি Block এলিমেন্টের উপর-নিচের Margin যোগ না হয়ে বড়টিই টিকে থাকে — এটাকে Margin Collapse বলে। এটি CSS-এর নিয়ম, Bug নয়।
🔷 ৫. box-sizing — আকার গণনার নিয়ম
box-sizing দিয়ে নির্ধারণ করা হয় width ও height
কী কী অন্তর্ভুক্ত করে। এটি CSS-এর সবচেয়ে গুরুত্বপূর্ণ নিয়মগুলোর একটি।
content-box — ডিফল্ট (বিভ্রান্তিকর) content-box
border-box — আধুনিক পছন্দ ✅ border-box
সব এলিমেন্টে border-box — সর্বোত্তম অভ্যাস Best Practice
content-box বনাম border-box — পার্থক্য তুলনা
| বিষয় | content-box |
border-box |
|---|---|---|
| width কী পরিমাপ করে | শুধু Content | Content + Padding + Border ✅ |
| Padding যোগ করলে | এলিমেন্ট বড় হয় | Content ছোট হয়, এলিমেন্ট একই থাকে ✅ |
| পূর্বাভাস করা সহজ? | না ❌ | হ্যাঁ ✅ |
| আধুনিক ব্যবহার | এড়িয়ে চলা ভালো | সবসময় এটি ব্যবহার করো ✅ |
🔷 ৬. Logical Properties — আধুনিক দিকনির্ভর CSS
আধুনিক CSS-এ Physical দিক (left, right) এর বদলে
Logical Properties ব্যবহার করা হয় — যা বাংলা, আরবি সব ভাষায়
স্বয়ংক্রিয়ভাবে সঠিকভাবে কাজ করে।
| Physical Property | Logical Property | কাজ |
|---|---|---|
margin-left + margin-right |
margin-inline |
বাম-ডান Margin একসাথে |
margin-top + margin-bottom |
margin-block |
উপর-নিচ Margin একসাথে |
padding-left + padding-right |
padding-inline |
বাম-ডান Padding একসাথে |
padding-top + padding-bottom |
padding-block |
উপর-নিচ Padding একসাথে |
width |
inline-size |
Inline দিকের আকার (প্রস্থ) |
height |
block-size |
Block দিকের আকার (উচ্চতা) |
🔷 ৭. বাস্তব উদাহরণ — সম্পূর্ণ সেটআপ
Page Container — সম্পূর্ণ Layout সেটআপ Layout
Card Component — Box Model সম্পূর্ণ ব্যবহার Card
Button — সম্পূর্ণ Box Model সেটআপ Button
🔷 দ্রুত রেফারেন্স — Box Model সব Property এক জায়গায়
| Property | কাজ | সাধারণ মান / উদাহরণ | ডিফল্ট |
|---|---|---|---|
| width | Content প্রস্থ | 300px, 100%, auto |
auto |
| height | Content উচ্চতা | 200px, 100vh, auto |
auto |
| min/max-width | প্রস্থের সীমা | max-width: 1200px, min-width: 120px |
none / 0 |
| padding | ভেতরের ফাঁকা জায়গা | 20px, 10px 20px, 0 |
0 |
| border | সীমারেখা | 1px solid #e2e8f0, none |
none |
| border-radius | গোল কোণ | 8px, 50%, 9999px |
0 |
| margin | বাইরের দূরত্ব | 20px, 0 auto, -10px |
0 |
| box-sizing | আকার গণনার নিয়ম | border-box, content-box |
content-box |
| overflow | উপচে পড়া কন্টেন্ট | hidden, auto, scroll |
visible |
| outline | বাইরের রেখা (জায়গা নেয় না) | 3px solid #3b82f6, none |
none |
Margin বনাম Padding — পার্থক্য ও কখন কোনটি তুলনা
| বিষয় | Padding | Margin |
|---|---|---|
| অবস্থান | Content ও Border-এর ভেতরে | Border-এর বাইরে |
| background-color | প্রযোজ্য হয় ✅ | হয় না — সবসময় স্বচ্ছ |
| Collapse | হয় না | উল্লম্বে হয় (Margin Collapse) |
| ঋণাত্মক মান | হয় না (সাধারণত) | হয় — এলিমেন্ট টানা যায় |
| কখন ব্যবহার | এলিমেন্টের ভেতরের ফাঁকায় ✅ | এলিমেন্টের মাঝে দূরত্বে ✅ |
CSS ফাইলের শুরুতে
*, *::before, *::after { box-sizing: border-box; } দাও +
ভেতরের ফাঁকায় padding ব্যবহার করো +
এলিমেন্টের মাঝে দূরত্বে margin বা gap ব্যবহার করো +
কখনো width: 100% ও padding একসাথে দিলে border-box নিশ্চিত করো
— এই নিয়মগুলো মানলেই Layout সবসময় সঠিক থাকবে।
📐 CSS Width & Height — সম্পূর্ণ নোট
এই সেকশনে CSS-এর Width ও Height সংক্রান্ত সব বিষয় — নির্দিষ্ট আকার, শতাংশ, viewport একক, min/max সীমা, aspect-ratio এবং বাস্তব ব্যবহার বিস্তারিত ব্যাখ্যা সহ বোঝানো হয়েছে।
🔷 CSS Width ও Height কী?
width ও height দিয়ে এলিমেন্টের প্রস্থ ও উচ্চতা
নির্ধারণ করা হয়। box-sizing: border-box থাকলে এটি Content + Padding + Border
মিলিয়ে মোট আকার — না থাকলে শুধু Content এলাকা।
Width ও Height-এ ব্যবহৃত সব একক — এক নজরে Overview
| একক | কাজ | উদাহরণ | কখন ব্যবহার |
|---|---|---|---|
px |
নির্দিষ্ট পিক্সেল | width: 300px |
নির্দিষ্ট আকারের উপাদানে |
% |
Parent-এর শতাংশ | width: 50% |
Fluid layout-এ ✅ |
em |
Parent-এর font-size গুণ | width: 20em |
টাইপোগ্রাফি-নির্ভর আকারে |
rem |
Root font-size গুণ | width: 20rem |
Consistent spacing-এ ✅ |
vw |
Viewport প্রস্থের শতাংশ | width: 100vw |
Full-width section-এ |
vh |
Viewport উচ্চতার শতাংশ | height: 100vh |
Full-screen Hero-তে ✅ |
dvw/dvh |
Dynamic viewport (মোবাইল) | height: 100dvh |
মোবাইল browser bar সমস্যায় |
svw/svh |
Small viewport | height: 100svh |
মোবাইলে সবচেয়ে ছোট viewport |
auto |
Browser নিজে ঠিক করে | height: auto |
উচ্চতা কন্টেন্ট অনুযায়ী ✅ |
fit-content |
কন্টেন্টের আকার অনুযায়ী | width: fit-content |
Inline Block-এর মতো আচরণ |
min-content |
সম্ভব সবচেয়ে ছোট আকার | width: min-content |
শব্দ না ভাঙার ন্যূনতম প্রস্থ |
max-content |
কন্টেন্ট না ভেঙে সম্পূর্ণ | width: max-content |
লেখা একলাইনে সম্পূর্ণ রাখতে |
🔷 ১. px — নির্দিষ্ট আকার
px দিয়ে নির্দিষ্ট পিক্সেলে আকার দেওয়া হয়।
এটি Responsive নয় — সব স্ক্রিনে একই থাকে।
Icon, Avatar, Sidebar-এর মতো নির্দিষ্ট আকারের উপাদানে ভালো।
px দিলে সাথে সবসময়
max-width: 100% বা max-width: 95vw দাও
— নইলে ছোট স্ক্রিনে এলিমেন্ট বাইরে চলে যেতে পারে।
🔷 ২. % — Parent-এর শতাংশ
% দিয়ে Parent এলিমেন্টের আকারের শতাংশে নিজের আকার নির্ধারণ করা হয়।
Width-এ % ভালো কাজ করে, কিন্তু Height-এ % কাজ করতে হলে Parent-এর
নির্দিষ্ট height থাকতে হবে।
% দিয়ে Responsive Column Responsive
🔷 ৩. Viewport Units — vw, vh, dvh, svh
Viewport Unit দিয়ে ব্রাউজারের দৃশ্যমান এলাকার শতাংশে আকার দেওয়া হয়। Full-screen Hero, Sidebar, Modal-এ খুব কাজে লাগে।
| একক | মানে | মোবাইলে আচরণ | কখন ব্যবহার |
|---|---|---|---|
vw |
Viewport প্রস্থের ১% | Scroll করলে পরিবর্তন হয় না | Full-width Section |
vh |
Viewport উচ্চতার ১% | মোবাইলে browser bar সমস্যা করে | Desktop Hero Section |
dvh |
Dynamic Viewport উচ্চতা | Bar লুকালে বড় হয়, দেখালে ছোট হয় | মোবাইলে সেরা ✅ |
svh |
Small Viewport উচ্চতা | সবসময় সবচেয়ে ছোট ধরে | মোবাইলে নিরাপদ বিকল্প |
lvh |
Large Viewport উচ্চতা | সবসময় সবচেয়ে বড় ধরে | Desktop পূর্ণ উচ্চতায় |
cqi |
Container প্রস্থের ১% | Container Query একক | Container-নির্ভর আকারে |
🔷 ৪. min/max Width ও Height — আকারের সীমা
min- ও max- দিয়ে আকারের ন্যূনতম ও সর্বোচ্চ সীমা
নির্ধারণ করা হয়। এটি Responsive Design-এর সবচেয়ে গুরুত্বপূর্ণ হাতিয়ার।
max-width — সর্বোচ্চ প্রস্থ max-width
min-width — ন্যূনতম প্রস্থ min-width
min-height ও max-height — উচ্চতার সীমা height limits
width বনাম min-width বনাম max-width তুলনা
| Property | আচরণ | জেতে যখন |
|---|---|---|
width |
সরাসরি আকার নির্ধারণ | min ও max-এর মধ্যে থাকলে |
min-width |
এর চেয়ে ছোট হবে না | width এর চেয়ে ছোট হলে min-width জেতে ✅ |
max-width |
এর চেয়ে বড় হবে না | width এর চেয়ে বড় হলে max-width জেতে ✅ |
🔷 ৫. fit-content, min-content, max-content — কন্টেন্ট-নির্ভর আকার
এই তিনটি কীওয়ার্ড কন্টেন্টের আকার দেখে নিজে নিজে প্রস্থ ঠিক করে — কোনো নির্দিষ্ট সংখ্যা দিতে হয় না।
| কীওয়ার্ড | আচরণ | কখন ব্যবহার |
|---|---|---|
max-content |
লেখা একলাইনে রাখার সর্বোচ্চ প্রস্থ | Column যতটুকু দরকার ততটুকু নিক |
min-content |
দীর্ঘতম শব্দের প্রস্থ — সম্ভব সবচেয়ে ছোট | Compact Column বানাতে |
fit-content |
max-content চায়, parent-এর চেয়ে বড় হবে না | Button, Badge, Tag-এ ✅ |
🔷 ৬. aspect-ratio — প্রস্থ ও উচ্চতার অনুপাত
aspect-ratio দিয়ে প্রস্থ ও উচ্চতার অনুপাত নির্ধারণ করা হয়।
একটি আকার দিলে অন্যটি স্বয়ংক্রিয়ভাবে হিসেব করে — ছবি বা ভিডিওর অনুপাত ঠিক রাখতে কার্যকর।
padding-top: 56.25%
দিয়ে 16:9 অনুপাত বানাতে হতো। এখন aspect-ratio: 16/9 দিলেই হয় —
অনেক সহজ ও পরিষ্কার।
🔷 ৭. clamp() — ন্যূনতম, পছন্দের, সর্বোচ্চ আকার
clamp(ন্যূনতম, পছন্দের, সর্বোচ্চ) — তিনটি মানের মধ্যে
স্বয়ংক্রিয়ভাবে সঠিক আকার বেছে নেয়।
Media Query ছাড়াই Fluid Responsive আকার বানানো যায়।
min-width + max-width +
width তিনটি আলাদা লেখার বদলে একটি clamp()-এ সব হয়।
Font size, padding, gap সবখানেই ব্যবহার করা যায়।
🔷 ৮. বাস্তব উদাহরণ — সম্পূর্ণ সেটআপ
Responsive Container Container
Responsive Image Card Image Card
Full-screen Hero Section Hero
🔷 দ্রুত রেফারেন্স — Width ও Height সব Property এক জায়গায়
| Property | কাজ | সাধারণ মান | ডিফল্ট |
|---|---|---|---|
| width | প্রস্থ নির্ধারণ | 300px, 100%, 50vw |
auto |
| height | উচ্চতা নির্ধারণ | 200px, 100vh, auto |
auto |
| min-width | ন্যূনতম প্রস্থ | 120px, 200px |
0 |
| max-width | সর্বোচ্চ প্রস্থ | 1200px, 100%, 65ch |
none |
| min-height | ন্যূনতম উচ্চতা | 100dvh, 200px |
0 |
| max-height | সর্বোচ্চ উচ্চতা | 300px, 70vh |
none |
| aspect-ratio | প্রস্থ:উচ্চতা অনুপাত | 16/9, 1, 4/3 |
auto |
| clamp() | Fluid সীমাবদ্ধ আকার | clamp(1rem, 5vw, 3rem) |
— |
| fit-content | কন্টেন্ট অনুযায়ী প্রস্থ | width: fit-content |
— |
| overflow | উপচে পড়া নিয়ন্ত্রণ | hidden, auto, scroll |
visible |
ছবিতে সবসময়
max-width: 100% দাও +
Container-এ width: 100% ও max-width একসাথে দাও +
উচ্চতায় px না দিয়ে min-height ব্যবহার করো +
মোবাইলে 100vh-এর বদলে 100dvh দাও +
Fluid আকারে clamp() ব্যবহার করো।
🌑 CSS Box Shadow — সম্পূর্ণ নোট
এই সেকশনে CSS Box Shadow-এর সব বিষয় — ছায়ার অবস্থান, ঝাপসা ভাব, আকার, রঙ, inset ছায়া, একাধিক ছায়া এবং বাস্তব ডিজাইন প্যাটার্ন বিস্তারিত ব্যাখ্যা সহ বোঝানো হয়েছে।
🔷 CSS Box Shadow কী?
box-shadow দিয়ে HTML এলিমেন্টের চারপাশে ছায়া তৈরি করা হয়।
ছায়া Box Model-এর বাইরে থাকে — কোনো জায়গা নেয় না, অন্য এলিমেন্টকে সরায় না।
ডিজাইনে ছায়া ব্যবহার করা হয় গভীরতা (depth) ও উচ্চতার অনুভূতি তৈরি করতে — Card, Button, Modal, Dropdown — সবখানেই ছায়া থাকে।
box-shadow-এর সিনট্যাক্স Syntax
প্রতিটি মানের কাজ — এক নজরে Overview
| মান | কাজ | ডিফল্ট | উদাহরণ |
|---|---|---|---|
| offset-x | অনুভূমিক সরানো | আবশ্যক | 0, 4px, -4px |
| offset-y | উল্লম্ব সরানো | আবশ্যক | 0, 8px, -2px |
| blur-radius | ঝাপসা ভাব — ০ = তীক্ষ্ণ | 0 |
6px, 20px |
| spread-radius | ছায়ার আকার বাড়া বা কমা | 0 |
0, 4px, -4px |
| color | ছায়ার রঙ | বর্তমান color |
rgba(0,0,0,0.1) |
| inset | ছায়া ভেতরে (ঐচ্ছিক) | বাইরে | inset 0 2px 4px rgba(0,0,0,0.1) |
🔷 ১. offset-x ও offset-y — ছায়ার দিক
offset-x ও offset-y দিয়ে ছায়া কোন দিকে যাবে তা নির্ধারণ হয়।
উভয় 0 দিলে ছায়া চারদিকে সমানভাবে ছড়ায়।
🔷 ২. blur-radius ও spread-radius — ঝাপসা ও আকার
blur-radius — ঝাপসা ভাব blur
blur-radius নির্ধারণ করে ছায়া কতটা ঝাপসা হবে।
0 = তীক্ষ্ণ ছায়া। বেশি হলে ছায়া ছড়িয়ে নরম হয়।
spread-radius — ছায়ার আকার spread
spread-radius দিয়ে ছায়ার আকার বাড়ানো বা কমানো যায়।
ঋণাত্মক spread দিলে ছায়া ছোট হয় — নরম, বাস্তবধর্মী ছায়া বানাতে কাজে লাগে।
🔷 ৩. color — ছায়ার রঙ
ছায়ার রঙে সবসময় rgba() বা hsla() ব্যবহার করা ভালো — স্বচ্ছতা নিয়ন্ত্রণ করলে ছায়া পেছনের কন্টেন্টের সাথে মিশে যায়, বাস্তবধর্মী দেখায়।
🔷 ৪. inset — ভেতরের ছায়া
inset কীওয়ার্ড দিলে ছায়া এলিমেন্টের ভেতরে পড়ে।
চাপা বা গর্তের মতো অনুভূতি তৈরি করে — Input field, Pressed button-এ ব্যবহৃত।
🔷 ৫. একাধিক ছায়া — স্তরে স্তরে
একটি এলিমেন্টে একাধিক box-shadow কমা দিয়ে আলাদা করে দেওয়া যায়। একাধিক স্তর মিলিয়ে আরও বাস্তবধর্মী ও সুন্দর ছায়া তৈরি করা যায়।
🔷 ৬. Elevation — উচ্চতার ধাপ
ছায়া ব্যবহার করে উচ্চতার ধাপ (Elevation) তৈরি করা হয়। উচ্চতা বাড়লে ছায়া বড় ও নরম, কমলে ছোট ও তীক্ষ্ণ — এটি Material Design-এর মূল ধারণা।
🔷 ৭. বাস্তব ডিজাইন প্যাটার্ন — সম্পূর্ণ সেটআপ
Card Component Card
Button-এর ছায়া Button
Input Focus Ring Input
Modal Dialog Modal
Glassmorphism — কাচের ছায়া Glass
🔷 দ্রুত রেফারেন্স — Box Shadow সব Pattern এক জায়গায়
| ব্যবহার | CSS | কোথায় লাগে |
|---|---|---|
| হালকা Card | 0 2px 8px rgba(0,0,0,0.08) |
সাধারণ Card, List Item |
| মাঝারি Card | 0 4px 16px rgba(0,0,0,0.12) |
Featured Card, Panel |
| Dropdown | 0 8px 24px rgba(0,0,0,0.12) |
Menu, Select, Popover |
| Modal | 0 20px 60px rgba(0,0,0,0.20) |
Dialog, Drawer |
| Focus Ring | 0 0 0 3px rgba(59,130,246,0.3) |
Input, Button focus |
| Outline | 0 0 0 2px #3b82f6 |
Selected, Active state |
| Glow | 0 0 20px rgba(59,130,246,0.5) |
Button hover, Icon |
| Inset Input | inset 0 2px 4px rgba(0,0,0,0.1) |
Input field, Textarea |
| Pressed | inset 0 3px 8px rgba(0,0,0,0.2) |
Button :active |
| Hover Lift | 0 8px 24px rgba(0,0,0,0.15) + translateY(-4px) |
Card, Button hover |
text-shadow — লেখার ছায়া text-shadow
text-shadow লেখার জন্য ছায়া তৈরি করে — box-shadow-এর মতো,
তবে spread ও inset নেই।
ছায়ার রঙে সবসময়
rgba() ব্যবহার করো +
একাধিক স্তরের ছায়া মিলিয়ে বাস্তবধর্মী করো +
transition দিয়ে hover-এ মসৃণ পরিবর্তন দাও +
Elevation অনুযায়ী ছায়ার আকার বেছে নাও +
Focus ring-এ 0 0 0 3px pattern ব্যবহার করো।
📏 CSS Units — সম্পূর্ণ নোট
এই সেকশনে CSS-এর সব একক — Absolute (px, pt, cm), Relative (em, rem, %, vw, vh), আধুনিক Viewport Units, Container Units, গণনামূলক ফাংশন এবং কোন পরিস্থিতিতে কোন একক ব্যবহার করবে তা বিস্তারিত বোঝানো হয়েছে।
🔷 CSS Units কী?
CSS-এ প্রতিটি মাপের পাশে একটি একক (Unit) লিখতে হয় —
যেমন 16px, 2rem, 50%।
একক না দিলে ব্রাউজার মান বুঝতে পারে না (0 ছাড়া)।
CSS Unit দুই ভাগে বিভক্ত — Absolute (সব পরিস্থিতিতে একই থাকে) এবং Relative (অন্য কিছুর উপর নির্ভর করে পরিবর্তন হয়)।
সব Unit — এক নজরে Overview
| Unit | ধরন | নির্ভর করে | সাধারণ ব্যবহার |
|---|---|---|---|
px |
Absolute | স্ক্রিন পিক্সেলে | Border, Shadow, Icon |
pt |
Absolute | ১pt = ১/৭২ ইঞ্চি | Print stylesheet |
cm, mm, in |
Absolute | বাস্তব পরিমাপ | Print মাধ্যমে |
em |
Relative | Parent font-size | Padding, Margin |
rem |
Relative | Root (html) font-size | Font, Spacing ✅ |
% |
Relative | Parent-এর মান | Width, Layout ✅ |
vw |
Relative | Viewport প্রস্থ | Full-width Section |
vh |
Relative | Viewport উচ্চতা | Hero Section |
dvw/dvh |
Relative | Dynamic Viewport | মোবাইল Hero ✅ |
svw/svh |
Relative | Small Viewport | মোবাইল নিরাপদ |
cqw/cqh |
Relative | Container আকার | Container Query ✅ |
ch |
Relative | "0" অক্ষরের প্রস্থ | Reading width |
ex |
Relative | "x" অক্ষরের উচ্চতা | বিরল ব্যবহার |
calc() |
ফাংশন | ভিন্ন একক গণনা | 100% - 64px ✅ |
min() |
ফাংশন | ছোট মান বেছে | max-width-এর মতো |
max() |
ফাংশন | বড় মান বেছে | min-width-এর মতো |
clamp() |
ফাংশন | সীমার মধ্যে fluid | Fluid Font ✅ |
🔷 ১. Absolute Units — নির্দিষ্ট একক
Absolute Unit-এ দেওয়া মান কোনো পরিস্থিতিতেই পরিবর্তন হয় না — স্ক্রিনের আকার, জুম, parent font-size যাই হোক।
px — পিক্সেল px
অন্য Absolute Units pt / cm / mm
🔷 ২. em — Parent font-size-এর গুণ
em = Parent এলিমেন্টের font-size-এর গুণিতক।
Nested হলে em জমতে থাকে — তাই font-size-এ rem ব্যবহার করা নিরাপদ।
em Compounding — Nested সমস্যা সমস্যা
🔷 ৩. rem — Root font-size-এর গুণ
rem = Root em — html এলিমেন্টের
font-size-এর গুণিতক। Parent যাই হোক, সবসময় html-এর
font-size দেখে — Nested সমস্যা নেই।
rem দিয়ে Accessibility Accessibility
🔷 ৪. % — Parent-নির্ভর শতাংশ
% সবসময় Parent-এর একই Property-র মান দেখে।
তবে padding ও margin-এর ক্ষেত্রে উপর-নিচেও
parent-এর width-এর %।
🔷 ৫. Viewport Units — vw, vh, dvh, svh, lvh
Viewport Unit ব্যবহার করা হয় ব্রাউজারের দৃশ্যমান এলাকার আনুপাতিক আকার নির্ধারণে।
| Unit | পূর্ণ নাম | মোবাইলে আচরণ | কখন ব্যবহার |
|---|---|---|---|
vw |
Viewport Width | স্থির | Full-width layout |
vh |
Viewport Height | bar-এ সমস্যা | Desktop Hero |
svh |
Small Viewport Height | সবসময় সবচেয়ে ছোট | মোবাইল নিরাপদ |
lvh |
Large Viewport Height | সবসময় সবচেয়ে বড় | Desktop |
dvh |
Dynamic Viewport Height | bar অনুযায়ী পরিবর্তন | মোবাইলে সেরা ✅ |
vmin |
vw ও vh-র ছোটটি | — | Responsive square |
vmax |
vw ও vh-র বড়টি | — | বিরল |
🔷 ৬. ch, ex ও Container Units — বিশেষ একক
ch — ক্যারেক্টার প্রস্থ ch
Container Query Units — cqw, cqh cqw / cqh
🔷 ৭. Units with Functions — গণনামূলক ফাংশন
CSS ফাংশনগুলো ভিন্ন একক একসাথে মিশিয়ে গণনা করতে পারে — যা সাধারণ মান দিয়ে সম্ভব নয়। Responsive Design-এ এগুলো অপরিহার্য।
calc() — মিশ্র একক গণনা calc()
calc() দিয়ে ভিন্ন একক একসাথে যোগ, বিয়োগ, গুণ, ভাগ করা যায়।
যোগ (+) ও বিয়োগ (-)-এর দুই পাশে স্পেস আবশ্যক।
| অপারেটর | কাজ | স্পেস আবশ্যক | উদাহরণ |
|---|---|---|---|
+ |
যোগ | হ্যাঁ ✅ | calc(100% + 20px) |
- |
বিয়োগ | হ্যাঁ ✅ | calc(100% - 32px) |
* |
গুণ | না | calc(2 * 1rem) |
/ |
ভাগ | না | calc(100% / 4) |
min() — সবচেয়ে ছোট মান বেছে নেওয়া min()
min() দেওয়া মানগুলোর মধ্যে সবচেয়ে ছোটটি বেছে নেয়।
এটি max-width-এর মতো আচরণ করে — যেকোনো property-তে।
max() — সবচেয়ে বড় মান বেছে নেওয়া max()
max() দেওয়া মানগুলোর মধ্যে সবচেয়ে বড়টি বেছে নেয়।
এটি min-width বা ন্যূনতম মান নিশ্চিতের মতো আচরণ করে।
clamp() — ন্যূনতম, পছন্দের, সর্বোচ্চ একসাথে clamp()
clamp(ন্যূনতম, পছন্দের, সর্বোচ্চ) — তিনটি মান একসাথে।
পছন্দের মান সাধারণত vw দেওয়া হয় — তাহলে Fluid হয়।
Media Query ছাড়াই Responsive।
calc(), min(), max(), clamp() — তুলনা তুলনা
| ফাংশন | কাজ | সমতুল্য CSS | সেরা ব্যবহার |
|---|---|---|---|
calc(a op b) |
ভিন্ন একক গণনা | — | 100% - 32px, 100vh - 64px |
min(a, b) |
ছোটটি বেছে নেওয়া | max-width-এর মতো |
Container প্রস্থ সীমাবদ্ধ করা |
max(a, b) |
বড়টি বেছে নেওয়া | min-width-এর মতো |
ন্যূনতম মান নিশ্চিত করা |
clamp(min, p, max) |
সীমার মধ্যে Fluid | min + max + width |
Fluid Font, Padding, Gap ✅ |
ভিন্ন একক মেশাতে →
calc() +
সর্বোচ্চ সীমা দিতে → min() +
ন্যূনতম সীমা দিতে → max() +
Fluid ও সীমাবদ্ধ একসাথে → clamp() +
Navbar বাদে বাকি উচ্চতা → calc(100dvh - var(--navbar-h))।
🔷 দ্রুত রেফারেন্স — সব Unit ও Function এক জায়গায়
| Property | সেরা Unit / Function | কারণ | এড়িয়ে চলো |
|---|---|---|---|
| font-size | rem |
Accessibility, scaling ✅ | px |
| line-height | unitless (1.5) |
নিজের font-size-এর গুণ | px |
| padding / margin | rem বা em |
font-size-এর সাথে সঙ্গতি | — |
| width (layout) | %, fr |
Fluid, responsive ✅ | px (fixed) |
| width (component) | px, rem |
নির্দিষ্ট আকারের উপাদান | — |
| max-width | px বা ch |
Container ও Reading width | — |
| height | auto, min-height |
কন্টেন্ট অনুযায়ী | px (fixed) |
| Hero min-height | dvh |
মোবাইল bar সমস্যা এড়ায় | vh |
| border | px |
নির্দিষ্ট পাতলা রেখা | — |
| border-radius | px, % |
নির্দিষ্ট বা বৃত্তাকার | — |
| Reading width | ch |
অক্ষর সংখ্যা নিয়ন্ত্রণ | — |
| Fluid font | clamp() + vw |
Media Query ছাড়া Fluid | — |
| মিশ্র একক | calc() |
ভিন্ন একক একসাথে | — |
| সর্বোচ্চ সীমা | min() |
max-width-এর মতো যেকোনো জায়গায় | — |
| ন্যূনতম সীমা | max() |
min-width-এর মতো যেকোনো জায়গায় | — |
| Fluid + সীমাবদ্ধ | clamp() |
min + preferred + max একসাথে | — |
Font-size →
rem +
Spacing → rem বা em +
Layout width → % বা fr +
Full-screen → dvh +
Border ও Shadow → px +
Reading width → ch +
মিশ্র একক → calc() +
Fluid আকার → clamp()।
🖥️ CSS Display — সম্পূর্ণ নোট
এই সেকশনে CSS Display Property-র সব মান — block, inline, inline-block, none, flex, grid, table এবং কোনটি কখন ব্যবহার করবে তা বিস্তারিত বোঝানো হয়েছে।
🔷 CSS Display কী?
display Property নির্ধারণ করে একটি এলিমেন্ট পেজে কীভাবে দেখাবে
এবং তার ভেতরের সন্তানরা কীভাবে সাজানো হবে। CSS-এর সবচেয়ে গুরুত্বপূর্ণ Property।
সব Display মান — এক নজরে Overview
| মান | আচরণ | কখন ব্যবহার |
|---|---|---|
block |
পূর্ণ প্রস্থ, নতুন লাইনে | div, p, section, heading |
inline |
কন্টেন্টের আকার, একই লাইনে | span, a, strong, em |
inline-block |
inline + width/height কাজ করে | Button, Badge, Tag ✅ |
none |
সম্পূর্ণ লুকিয়ে যায়, জায়গা নেয় না | Toggle, Dropdown লুকানো |
flex |
Flexbox layout container | Row/Column layout ✅ |
inline-flex |
inline + flex | Inline flex container |
grid |
CSS Grid layout container | 2D layout ✅ |
inline-grid |
inline + grid | Inline grid container |
table |
table-এর মতো আচরণ | বিরল — legacy |
contents |
নিজে অদৃশ্য, সন্তান parent-এর সন্তান হয় | Wrapper div সরাতে |
🔷 ১. block ও inline — মূল পার্থক্য
block এলিমেন্ট পূর্ণ লাইন নেয় — নতুন লাইনে শুরু হয়।
inline এলিমেন্ট কন্টেন্টের মতো একই লাইনে থাকে।
| বিষয় | block |
inline |
|---|---|---|
| প্রস্থ | Parent-এর ১০০% | কন্টেন্টের আকার |
| নতুন লাইন | হ্যাঁ — আগে ও পরে | না — একই লাইনে |
| width/height | কাজ করে ✅ | কাজ করে না ❌ |
| top/bottom margin | কাজ করে ✅ | সম্পূর্ণ কাজ করে না |
| ডিফল্ট উদাহরণ | div, p, h1, ul |
span, a, strong |
🔷 ২. inline-block — সেরা মিশ্রণ
inline-block = inline-এর মতো একই লাইনে থাকে,
কিন্তু block-এর মতো width, height, padding, margin সব কাজ করে।
🔷 ৩. display: none ও visibility: hidden — লুকানো
লুকানোর তিনটি পদ্ধতি — আচরণ সম্পূর্ণ আলাদা।
| পদ্ধতি | দৃশ্যমান | জায়গা নেয় | Event কাজ করে | Screen Reader |
|---|---|---|---|---|
display: none |
না ❌ | না ❌ | না ❌ | লুকায় |
visibility: hidden |
না ❌ | হ্যাঁ ✅ | না ❌ | লুকায় |
opacity: 0 |
না ❌ | হ্যাঁ ✅ | হ্যাঁ ✅ | দেখায় |
🔷 ৪. flex ও grid — আধুনিক Layout
display: flex ও display: grid আধুনিক CSS Layout-এর
মূল ভিত্তি। Flexbox একমাত্রিক (row বা column),
Grid দ্বিমাত্রিক (row ও column একসাথে)।
| বিষয় | Flexbox | Grid |
|---|---|---|
| মাত্রা | একমাত্রিক (row বা column) | দ্বিমাত্রিক (row ও column) |
| সেরা ব্যবহার | Navbar, Card body, Button group | Page layout, Card grid |
| কন্টেন্ট-নির্ভর | হ্যাঁ — কন্টেন্ট অনুযায়ী সাজে | না — কাঠামো আগে ঠিক করে |
🔷 দ্রুত রেফারেন্স — Display সব মান ও ব্যবহার
| মান | পূর্ণ প্রস্থ | নতুন লাইন | width/height | সেরা ব্যবহার |
|---|---|---|---|---|
block |
হ্যাঁ | হ্যাঁ | হ্যাঁ ✅ | div, section, p |
inline |
না | না | না ❌ | span, a, strong |
inline-block |
না | না | হ্যাঁ ✅ | Button, Badge, Tag |
none |
— | — | — | Toggle hide/show |
flex |
হ্যাঁ | হ্যাঁ | হ্যাঁ ✅ | Row/Column layout |
inline-flex |
না | না | হ্যাঁ ✅ | Inline flex group |
grid |
হ্যাঁ | হ্যাঁ | হ্যাঁ ✅ | 2D Grid layout |
contents |
— | — | — | Wrapper সরানো |
একলাইনে ও width/height দরকার →
inline-block +
Row বা Column layout → flex +
2D Grid layout → grid +
Toggle show/hide → none ↔ block/flex।
📍 CSS Position — সম্পূর্ণ নোট
এই সেকশনে CSS Position-এর সব মান — static, relative, absolute, fixed, sticky, z-index, Stacking Context এবং প্রতিটির বিস্তারিত ব্যাখ্যা, বাধ্যতামূলক নিয়ম ও বাস্তব ব্যবহার বোঝানো হয়েছে।
🔷 CSS Position কী?
position Property নির্ধারণ করে একটি এলিমেন্ট পেজে ঠিক কোথায় থাকবে।
top, right, bottom, left দিয়ে
নির্দিষ্ট অবস্থান দেওয়া হয় — তবে এগুলো শুধু static ছাড়া অন্য position-এ কাজ করে।
static ছাড়া বাকি সব মান (relative, absolute,
fixed, sticky) — এগুলোকে বলা হয় "positioned" এলিমেন্ট।
শুধু positioned এলিমেন্টে z-index ও top/left/right/bottom কাজ করে।
Position-এর সব মান — এক নজরে Overview
| মান | Document Flow | Anchor (কোথা থেকে) | জায়গা ধরে | কখন ব্যবহার |
|---|---|---|---|---|
static |
স্বাভাবিক | — | হ্যাঁ | ডিফল্ট — পরিবর্তন দরকার নেই |
relative |
স্বাভাবিক (গর্ত রেখে) | নিজের স্বাভাবিক অবস্থান | হ্যাঁ | সামান্য সরানো, absolute-এর Anchor ✅ |
absolute |
Flow থেকে বের | নিকটতম positioned ancestor | না | Badge, Tooltip, Dropdown, Overlay ✅ |
fixed |
Flow থেকে বের | Viewport | না | Navbar, Back-to-top, Modal Overlay ✅ |
sticky |
স্বাভাবিক → আটকে যায় | Scroll container | হ্যাঁ | Sticky Header, Table head, Sidebar ✅ |
top, right, bottom, left — offset property Offset
🔷 ১. position: static — ডিফল্ট
কী করে আচরণ
প্রতিটি HTML এলিমেন্টের ডিফল্ট position। Document flow অনুযায়ী স্বাভাবিকভাবে সাজানো হয় — block নিচে নিচে, inline পাশাপাশি।
কখন ব্যবহার করবে কখন
সাধারণত লেখার দরকার হয় না — এটি ডিফল্ট। তবে কোনো এলিমেন্টে আগে
অন্য position দেওয়া থাকলে সেটি সরিয়ে ডিফল্টে ফিরিয়ে আনতে
position: static লেখা হয়।
static এলিমেন্ট কখনো
absolute সন্তানের Anchor হয় না — Anchor হতে হলে
অন্তত relative দিতে হবে।
🔷 ২. position: relative — নিজের জায়গা থেকে সরানো
কী করে আচরণ
এলিমেন্ট তার স্বাভাবিক অবস্থান থেকে সরে, কিন্তু সেই জায়গাটি ধরে রাখে — অন্য এলিমেন্ট উপরে আসে না। Flow-এ একটি অদৃশ্য গর্ত থাকে।
সবচেয়ে গুরুত্বপূর্ণ ব্যবহার — absolute সন্তানের Anchor Anchor
relative-এর সবচেয়ে বেশি ব্যবহার হয় absolute সন্তানের
containing block (Anchor) হিসেবে। top/left
না দিলেও — শুধু position: relative লিখলেই এলিমেন্ট Anchor হয়।
কখন ব্যবহার করবে কখন
| পরিস্থিতি | ব্যবহার |
|---|---|
| absolute সন্তানের Anchor দরকার | position: relative parent-এ ✅ |
| এলিমেন্ট সামান্য সরাতে হবে | relative + top/left |
| z-index দরকার (overlapping) | relative + z-index |
| ::before/::after-কে absolute করতে | parent-এ relative |
বাধ্যতামূলক নিয়ম ⚠️ বাধ্যতামূলক
🔷 ৩. position: absolute — Ancestor-এর মধ্যে মুক্ত
কী করে আচরণ
Document flow থেকে সম্পূর্ণ বের হয় — পরের এলিমেন্ট উপরে চলে আসে।
অবস্থান হিসেব হয় নিকটতম positioned ancestor-এর কোণ থেকে।
কোনো positioned ancestor না থাকলে html এলিমেন্ট থেকে হিসেব হয়।
Containing Block — কোথা থেকে হিসেব হয় Containing Block
absolute-এর বিশেষ আচরণ বিশেষ
কখন ব্যবহার করবে কখন
| পরিস্থিতি | ব্যবহার |
|---|---|
| Card-এর কোণে Badge, Icon | parent: relative, badge: absolute ✅ |
| Dropdown Menu | trigger: relative, menu: absolute top:100% ✅ |
| Tooltip | parent: relative, tooltip: absolute ✅ |
| Image Overlay / Caption | image wrap: relative, overlay: absolute inset:0 ✅ |
| Custom Checkbox / Radio | label: relative, indicator: absolute |
| Decorative ::before/::after | parent: relative, pseudo: absolute ✅ |
বাধ্যতামূলক নিয়ম ⚠️ বাধ্যতামূলক
🔷 ৪. position: fixed — Viewport-এ স্থির
কী করে আচরণ
Viewport-এর কোণ থেকে অবস্থান হিসেব হয় — parent যাই হোক। পেজ স্ক্রল করলেও নড়ে না। Document flow থেকে বের — পরের এলিমেন্ট উপরে চলে আসে।
⚠️ fixed-এর গুরুত্বপূর্ণ সীমাবদ্ধতা সীমাবদ্ধতা
বাস্তব ব্যবহার বাস্তব
কখন ব্যবহার করবে কখন
| পরিস্থিতি | ব্যবহার | বাধ্যতামূলক |
|---|---|---|
| সবসময় দৃশ্যমান Navbar | fixed top:0 |
body { padding-top } ✅ |
| Modal পর্দা | fixed inset:0 |
z-index যথেষ্ট উঁচু |
| Back-to-top Button | fixed bottom right |
z-index |
| Side Drawer | fixed top right/left |
z-index + transform |
| Floating Action Button | fixed bottom right |
z-index |
বাধ্যতামূলক নিয়ম ⚠️ বাধ্যতামূলক
🔷 ৫. position: sticky — স্ক্রল করলে আটকে যায়
কী করে আচরণ
স্বাভাবিক flow-এ থাকে — scroll করতে করতে threshold পৌঁছালে আটকে যায় (fixed-এর মতো)। Parent-এর শেষ পর্যন্ত আটকে থাকে — parent শেষ হলে চলে যায়।
sticky কাজ না করার কারণ সমস্যা
বাস্তব ব্যবহার বাস্তব
কখন ব্যবহার করবে কখন
| পরিস্থিতি | ব্যবহার | বাধ্যতামূলক |
|---|---|---|
| Navbar scroll-এ লেগে থাকবে | sticky top:0 |
top অবশ্যই ✅ |
| Table Header স্ক্রলে দৃশ্যমান | thead th: sticky top:0 |
z-index + background |
| Blog Sidebar | sticky top:80px |
Grid-এ align-self: start ✅ |
| Section-ভিত্তিক Header | sticky top:0 |
Parent-এ overflow: visible |
| Category অনুযায়ী আটকানো | প্রতিটি category-তে sticky |
Parent height যথেষ্ট |
sticky বনাম fixed — সঠিক পছন্দ তুলনা
| বিষয় | sticky |
fixed |
|---|---|---|
| Document Flow | জায়গা ধরে রাখে ✅ | জায়গা ছেড়ে দেয় |
| body padding-top | দরকার নেই ✅ | দরকার হয় |
| Scroll boundary | Parent-এর শেষে চলে যায় | সবসময় viewport-এ |
| Parent-এর বাইরে | যেতে পারে না | সবসময় Viewport-এ ✅ |
| সেরা ব্যবহার | Navbar, Table head, Sidebar | Modal overlay, Floating button |
বাধ্যতামূলক নিয়ম ⚠️ বাধ্যতামূলক
🔷 ৬. z-index — স্তরের ক্রম
z-index দিয়ে positioned এলিমেন্ট কোন স্তরে থাকবে
তা নির্ধারণ করা হয়। বড় মান = সামনে, ছোট মান = পেছনে।
শুধু positioned এলিমেন্টে কাজ করে (static ছাড়া)।
position: static আছে কিনা দেখো — static-এ z-index কাজ করে না।
অন্তত position: relative দাও।
🔷 ৭. Stacking Context — z-index-এর নিজস্ব পরিবেশ
Stacking Context কী ধারণা
Stacking Context হলো একটি এলিমেন্টের নিজস্ব z-index জগৎ। এর ভেতরের সন্তানদের z-index শুধু নিজেদের মধ্যে তুলনা হয় — বাইরের এলিমেন্টের সাথে নয়। Stacking Context নিজে একটি আস্ত unit — বাইরের এলিমেন্ট এর সন্তানদের মাঝে ঢুকতে পারে না।
Stacking Context তৈরি হওয়ার সব কারণ কারণ
| Property | মান | Stacking Context তৈরি করে |
|---|---|---|
position + z-index |
relative/absolute/fixed/sticky + z-index ≠ auto |
হ্যাঁ ✅ |
opacity |
1-এর কম |
হ্যাঁ ✅ |
transform |
none ছাড়া যেকোনো |
হ্যাঁ ✅ |
filter |
none ছাড়া যেকোনো |
হ্যাঁ ✅ |
backdrop-filter |
none ছাড়া যেকোনো |
হ্যাঁ ✅ |
perspective |
none ছাড়া যেকোনো |
হ্যাঁ ✅ |
mix-blend-mode |
normal ছাড়া যেকোনো |
হ্যাঁ ✅ |
isolation |
isolate |
হ্যাঁ ✅ (সবচেয়ে পরিষ্কার) |
will-change |
transform, opacity ইত্যাদি |
হ্যাঁ ✅ |
contain |
layout, paint, strict |
হ্যাঁ ✅ |
clip-path |
none ছাড়া যেকোনো |
হ্যাঁ ✅ |
mask |
প্রযোজ্য মান | হ্যাঁ ✅ |
Stacking Context — সাধারণ বিভ্রান্তি ⚠️ বিভ্রান্তি
isolation: isolate — সমাধান সমাধান
Stacking Context-এর স্তর বিন্যাস স্তর বিন্যাস
z-index Debugging — কীভাবে সমস্যা খুঁজবে Debug
🔷 ৮. বাস্তব উদাহরণ — সব Position একসাথে
Page Layout — সব Position-এর ব্যবহার Page Layout
Dropdown Menu — relative + absolute Pattern Dropdown
🔷 দ্রুত রেফারেন্স — Position সব নিয়ম এক জায়গায়
| মান | Flow-এ | Anchor | top/left কাজ | z-index কাজ | সেরা ব্যবহার |
|---|---|---|---|---|---|
static |
হ্যাঁ | — | না ❌ | না ❌ | ডিফল্ট |
relative |
হ্যাঁ (গর্ত) | নিজে | হ্যাঁ ✅ | হ্যাঁ ✅ | Anchor, সামান্য সরানো |
absolute |
না | positioned ancestor | হ্যাঁ ✅ | হ্যাঁ ✅ | Badge, Tooltip, Overlay |
fixed |
না | Viewport | হ্যাঁ ✅ | হ্যাঁ ✅ | Navbar, Modal, FAB |
sticky |
হ্যাঁ → stuck | Scroll container | হ্যাঁ (threshold) ✅ | হ্যাঁ ✅ | Sticky nav, Table head |
বাধ্যতামূলক নিয়ম — সব একসাথে ⚠️ বাধ্যতামূলক
| Position | বাধ্যতামূলক নিয়ম |
|---|---|
absolute |
Parent-এ position: relative অবশ্যই দাও ✅ |
absolute |
z-index দাও — অন্যথায় অন্য এলিমেন্টের নিচে যাবে |
fixed |
z-index দাও |
fixed Navbar |
body { padding-top: [height] } দাও ✅ |
fixed |
Parent-এ transform রাখো না ⚠️ |
sticky |
top বা bottom অবশ্যই দাও ✅ |
sticky |
Parent-এ overflow: hidden/auto রাখো না ⚠️ |
sticky Sidebar |
Grid-এ align-self: start দাও ✅ |
sticky/absolute |
background-color দাও — না হলে কন্টেন্ট দেখাবে |
| যেকোনো positioned | z-index Design System Variable দিয়ে পরিচালনা করো |
absolute সন্তানের parent-এ position: relative দাও +
sticky-তে অবশ্যই top বা bottom দাও +
fixed Navbar-এ body-তে padding-top দাও +
Overlay-এ inset: 0 ব্যবহার করো +
z-index CSS Variable দিয়ে পরিচালনা করো +
Stacking Context সমস্যায় isolation: isolate ব্যবহার করো।
⚖️ CSS Specificity — সম্পূর্ণ নোট
এই সেকশনে CSS Specificity-র সব বিষয় — Specificity কী, কীভাবে হিসেব হয়, Cascade, Inheritance, !important এবং আধুনিক @layer ব্যবস্থাপনা বিস্তারিত বোঝানো হয়েছে।
🔷 CSS Specificity কী?
CSS-এ একই এলিমেন্টে একাধিক rule প্রযোজ্য হলে ব্রাউজার নির্ধারণ করে কোন rule প্রযোগ হবে — এই সিদ্ধান্তের নিয়মকে বলে Specificity।
সহজ ভাষায় — Specificity হলো প্রতিযোগিতার পয়েন্ট। বেশি পয়েন্টের Selector জেতে। পয়েন্ট সমান হলে পরে লেখা rule জেতে।
Cascade-এর সিদ্ধান্তের ধাপ — এক নজরে Cascade
| ধাপ | নিয়ম | জেতে যখন |
|---|---|---|
| ১. Origin | User Agent → Author → User | Author CSS সাধারণত জেতে |
| ২. !important | !important থাকলে সব override | !important সবসময় জেতে |
| ৩. @layer | পরের Layer জেতে | Layer ক্রম অনুযায়ী |
| ৪. Specificity | বেশি ওজনের Selector জেতে | ID > Class > Element |
| ৫. Order | পরে লেখা rule জেতে | Specificity সমান হলে |
🔷 ১. Specificity হিসেব — পয়েন্ট সিস্টেম
Specificity তিনটি স্তম্ভে হিসেব হয়: (A, B, C)। A = ID, B = Class/Attribute/Pseudo-class, C = Element/Pseudo-element। তুলনা শুরু হয় A থেকে — A সমান হলে B, তারপর C।
| Selector ধরন | A | B | C | উদাহরণ |
|---|---|---|---|---|
| Inline style | ১০০০ | ০ | ০ | style="color: red" |
| ID | ১ | ০ | ০ | #header |
| Class | ০ | ১ | ০ | .btn |
| Attribute | ০ | ১ | ০ | [type="text"] |
| Pseudo-class | ০ | ১ | ০ | :hover, :focus |
| Element | ০ | ০ | ১ | p, div, h1 |
| Pseudo-element | ০ | ০ | ১ | ::before, ::after |
| * (Universal) | ০ | ০ | ০ | * |
| :is(), :not(), :has() | ভেতরের সবচেয়ে বড় Selector-এর মান নেয় | :is(#id, .class) = (1,0,0) |
||
| :where() | ০ | ০ | ০ | সবসময় ০ ✅ |
🔷 ২. বাস্তব উদাহরণ — কোন Selector জেতে
🔷 ৩. !important — সব override করা
!important সব Specificity-র উপরে — Inline style-কেও override করে।
তবে বেশি ব্যবহার করলে CSS ভঙ্গুর হয় — debug করা কঠিন হয়।
🔷 ৪. Inheritance — উত্তরাধিকার
কিছু CSS Property Parent থেকে Child-এ স্বয়ংক্রিয়ভাবে প্রবাহিত হয়। সব Property Inherited নয় — মূলত Typography-সংক্রান্ত Property Inherit হয়।
| Inherited হয় ✅ | Inherited হয় না ❌ |
|---|---|
color |
margin, padding |
font-family, font-size, font-weight |
border, background |
line-height, letter-spacing |
width, height |
text-align, text-transform |
display, position |
list-style |
box-shadow, opacity |
cursor, visibility |
overflow, z-index |
🔷 ৫. @layer — আধুনিক CSS Cascade Layer
@layer দিয়ে CSS-কে স্তরে ভাগ করা যায়।
পরে ঘোষিত Layer জেতে — এমনকি কম Specific Selector দিয়েও
আগের Layer override করা যায়। Third-party CSS ব্যবস্থাপনায় অত্যন্ত কার্যকর।
🔷 ৬. Specificity কমানোর কৌশল — সহজ CSS
🔷 দ্রুত রেফারেন্স — Specificity সব নিয়ম এক জায়গায়
| Selector | Specificity (A,B,C) | পয়েন্ট (আনুমানিক) |
|---|---|---|
style="" (inline) |
(1,0,0,0) | সবচেয়ে বেশি |
#id |
(0,1,0,0) | ১০০ |
.class |
(0,0,1,0) | ১০ |
[attr] |
(0,0,1,0) | ১০ |
:hover, :focus |
(0,0,1,0) | ১০ |
p, div |
(0,0,0,1) | ১ |
::before, ::after |
(0,0,0,1) | ১ |
* |
(0,0,0,0) | ০ |
:where() |
(0,0,0,0) | ০ ✅ |
!important |
সব override | সবচেয়ে বেশি |
Cascade সিদ্ধান্তের ক্রম — মনে রাখার উপায় মনে রাখো
| ক্রম | নিয়ম | মনে রাখার সূত্র |
|---|---|---|
| ১ | !important | জরুরি অবস্থা — সব উপেক্ষা |
| ২ | @layer ক্রম | পরের layer জেতে |
| ৩ | Specificity | ID > Class > Element |
| ৪ | Source Order | পরে লেখা জেতে |
| ৫ | Inheritance | Parent → Child (Typography) |
| ৬ | Browser Default | সবার শেষে |
CSS-এ ID Selector এড়িয়ে শুধু Class ব্যবহার করো + Selector-এ অপ্রয়োজনীয় nesting কমাও + !important এড়িয়ে চলো — প্রয়োজন হলে কাঠামো পর্যালোচনা করো + Specificity ০ দরকার হলে
:where() ব্যবহার করো +
বড় প্রজেক্টে @layer ব্যবহার করে CSS সাজাও।
✨ CSS Pseudo-Elements — সম্পূর্ণ নোট
এই সেকশনে CSS Pseudo-Elements-এর সব বিষয় — ::before, ::after, ::first-line, ::first-letter, ::placeholder, ::selection, ::marker এবং বাস্তব ব্যবহার বিস্তারিত বোঝানো হয়েছে।
🔷 CSS Pseudo-Element কী?
Pseudo-Element হলো CSS দিয়ে তৈরি কাল্পনিক উপাদান।
HTML-এ কোনো ট্যাগ না লিখেও CSS দিয়ে নতুন কন্টেন্ট বা স্টাইল যোগ করা যায়।
:: দিয়ে লেখা হয় — Pseudo-class (:hover)-এর একটি কোলন থেকে আলাদা।
সব Pseudo-Element — এক নজরে Overview
| Pseudo-Element | কাজ | content লাগে? | কখন ব্যবহার |
|---|---|---|---|
::before |
এলিমেন্টের আগে কন্টেন্ট | হ্যাঁ ✅ | Icon, Decoration, Counter |
::after |
এলিমেন্টের পরে কন্টেন্ট | হ্যাঁ ✅ | Tooltip arrow, Clearfix |
::first-line |
প্যারাগ্রাফের প্রথম লাইন | না | Magazine style |
::first-letter |
প্যারাগ্রাফের প্রথম অক্ষর | না | Drop cap |
::placeholder |
Input-এর placeholder লেখা | না | Placeholder স্টাইল |
::selection |
ব্যবহারকারী select করা লেখা | না | Custom highlight রঙ |
::marker |
List item-এর বুলেট/নম্বর | না | List marker স্টাইল |
::backdrop |
dialog এর পেছনের পর্দা | না | Dialog backdrop স্টাইল |
::file-selector-button |
File input-এর button | না | File button স্টাইল |
🔷 ১. ::before ও ::after — কন্টেন্ট যোগ করা
মূল নিয়ম — content অবশ্যই দাও নিয়ম
Decoration — সজ্জামূলক উপাদান Decoration
Overlay ও Background Effect Overlay
Counter — স্বয়ংক্রিয় নম্বর Counter
Tooltip Arrow — ::before দিয়ে তীর Arrow
🔷 ২. ::first-line ও ::first-letter — টাইপোগ্রাফি
::first-line — প্রথম লাইন ::first-line
::first-letter — প্রথম অক্ষর (Drop Cap) ::first-letter
🔷 ৩. ::placeholder, ::selection, ::marker, ::backdrop
::placeholder — Input Placeholder স্টাইল ::placeholder
::selection — লেখা select করার স্টাইল ::selection
::marker — List Bullet/Number স্টাইল ::marker
::backdrop ও ::file-selector-button অন্যান্য
🔷 দ্রুত রেফারেন্স — Pseudo-Element সব Pattern
| ব্যবহার | Pseudo-Element | বাধ্যতামূলক |
|---|---|---|
| Heading-এর নিচে রঙিন লাইন | h2::after |
content: "" + position: absolute |
| Icon বা Emoji আগে | .item::before { content: "✓" } |
content অবশ্যই |
| Image Overlay | .wrap::after |
parent: position: relative |
| Hover Underline Animation | a::after { width:0 → 100% } |
transition |
| Tooltip Arrow | .tooltip::after |
border কৌশল |
| Drop Cap | p::first-letter |
float: left |
| Custom Placeholder | input::placeholder |
— |
| Custom Selection রঙ | ::selection |
— |
| List Bullet রঙ | li::marker |
— |
| স্বয়ংক্রিয় নম্বর | ::before { content: counter() } |
counter-reset + counter-increment |
::before ও ::after-এ content অবশ্যই দাও +
Decoration-এর জন্য content: "" দাও +
absolute করতে parent-এ position: relative দাও +
Screen Reader-এ গুরুত্বপূর্ণ কন্টেন্ট pseudo-element-এ রেখো না।
📋 CSS Lists — সম্পূর্ণ নোট
এই সেকশনে CSS List-এর সব বিষয় — list-style-type, list-style-image, list-style-position, Shorthand, Custom List ডিজাইন এবং বাস্তব ব্যবহার বোঝানো হয়েছে।
🔷 CSS List Property — এক নজরে
CSS দিয়ে HTML List-এর বুলেট বা নম্বরের ধরন, অবস্থান ও ছবি নিয়ন্ত্রণ করা হয়। Navigation, Card feature list, Custom checklist — সবখানেই list ব্যবহার হয়।
| Property | কাজ | ডিফল্ট |
|---|---|---|
list-style-type |
বুলেট বা নম্বরের ধরন | disc (ul), decimal (ol) |
list-style-image |
বুলেটের বদলে ছবি | none |
list-style-position |
বুলেট ভেতরে না বাইরে | outside |
list-style |
Shorthand — তিনটি একসাথে | — |
🔷 ১. list-style-type — বুলেটের ধরন
ul-এর ধরন ul
ol-এর ধরন ol
🔷 ২. list-style-position ও list-style-image
list-style-position — বুলেটের অবস্থান position
list-style-image — বুলেটে ছবি image
list-style Shorthand Shorthand
🔷 ৩. List Reset ও Custom List Design
List Reset — ডিফল্ট স্টাইল সরানো Reset
Custom Checklist Checklist
Numbered List — Custom Style Numbered
Navigation List Navigation
🔷 দ্রুত রেফারেন্স — Lists সব Property
| Property | কাজ | সাধারণ মান | ডিফল্ট |
|---|---|---|---|
list-style-type |
বুলেট ধরন | none, disc, decimal |
disc/decimal |
list-style-position |
বুলেট অবস্থান | outside, inside |
outside |
list-style-image |
বুলেটে ছবি | url(), none |
none |
list-style |
Shorthand | none, disc outside |
— |
Navigation-এ
list-style: none; padding: 0; margin: 0; দাও +
Custom বুলেটে list-style: none + ::before ব্যবহার করো +
নম্বরযুক্ত Custom List-এ CSS Counter ব্যবহার করো +
Accessibility-র জন্য role="list" রাখো যদি list-style: none দাও।
📊 CSS Tables — সম্পূর্ণ নোট
এই সেকশনে CSS Table-এর সব বিষয় — border-collapse, border-spacing, caption-side, empty-cells, table-layout, Responsive Table এবং সুন্দর Table ডিজাইন বোঝানো হয়েছে।
🔷 CSS Table Property — এক নজরে
HTML <table>-এর ডিফল্ট স্টাইল দেখতে ভালো না।
CSS দিয়ে পেশাদার ও ব্যবহারযোগ্য Table তৈরি করা হয়।
| Property | কাজ | ডিফল্ট |
|---|---|---|
border-collapse |
Cell-এর border মেলানো বা আলাদা | separate |
border-spacing |
Cell-এর মাঝে ফাঁক (separate-এ) | 0 |
caption-side |
Table caption কোথায় থাকবে | top |
empty-cells |
খালি cell দেখাবে কিনা | show |
table-layout |
Column-এর প্রস্থ হিসেব পদ্ধতি | auto |
vertical-align |
Cell কন্টেন্টের উল্লম্ব অবস্থান | middle |
🔷 ১. border-collapse ও border-spacing
border-collapse — সবচেয়ে গুরুত্বপূর্ণ border-collapse
border-spacing — Cell-এর মাঝে ফাঁক border-spacing
🔷 ২. table-layout, caption-side, empty-cells
table-layout — Column প্রস্থ table-layout
caption-side ও empty-cells অন্যান্য
🔷 ৩. সুন্দর Table Design — বাস্তব উদাহরণ
Clean Modern Table Modern
Sortable Column Header Sortable
Status Badge ও Action Column Status
Responsive Table — মোবাইলে scroll Responsive
🔷 দ্রুত রেফারেন্স — Tables সব Property
| Property | কাজ | সাধারণ মান | ডিফল্ট |
|---|---|---|---|
border-collapse |
Border মেলানো | collapse, separate |
separate |
border-spacing |
Cell ফাঁক | 0, 8px |
0 |
table-layout |
Column প্রস্থ নিয়ম | fixed, auto |
auto |
caption-side |
Caption অবস্থান | top, bottom |
top |
empty-cells |
খালি cell | show, hide |
show |
vertical-align |
Cell-এ উল্লম্ব | top, middle, bottom |
middle |
সবসময়
border-collapse: collapse দাও +
Responsive-এর জন্য .table-wrapper { overflow-x: auto } দাও +
table-layout: fixed + width: 100% দিলে সমান Column +
Zebra striping: tr:nth-child(even) +
Hover: tbody tr:hover।
🖼️ CSS Images ও Filters — সম্পূর্ণ নোট
এই সেকশনে CSS Images-এর সব বিষয় — object-fit, object-position, Responsive Image, CSS Filter (blur, brightness, contrast, grayscale, drop-shadow) এবং backdrop-filter বোঝানো হয়েছে।
🔷 ১. object-fit — ছবি কীভাবে ফিট হবে
object-fit নির্ধারণ করে <img> বা <video>
নির্ধারিত container-এ কীভাবে ফিট হবে।
Background-image-এর background-size-এর মতো কাজ করে।
| মান | অনুপাত | কাটে? | খালি জায়গা? | কখন |
|---|---|---|---|---|
fill |
নষ্ট হয় ❌ | না | না | এড়িয়ে চলো |
contain |
ঠিক থাকে ✅ | না | হ্যাঁ | Logo, Icon |
cover |
ঠিক থাকে ✅ | হ্যাঁ | না | Hero, Card Image ✅ |
none |
ঠিক থাকে ✅ | হতে পারে | হতে পারে | আসল আকারে |
scale-down |
ঠিক থাকে ✅ | না | হ্যাঁ | ছোট ছবিতে |
🔷 ২. object-position — ছবির ফোকাস পয়েন্ট
object-position নির্ধারণ করে object-fit: cover-এ
ছবির কোন অংশটি দেখা যাবে — ছবির ফোকাস পয়েন্ট।
🔷 ৩. Responsive Image — সব স্ক্রিনে সঠিক
🔷 ৪. CSS filter — ছবিতে ভিজ্যুয়াল ইফেক্ট
filter Property দিয়ে ছবি বা যেকোনো HTML এলিমেন্টে
ভিজ্যুয়াল ইফেক্ট প্রয়োগ করা হয়। Photoshop-এর মতো ইফেক্ট
শুধু CSS-এ সম্ভব।
| Filter | কাজ | মান (0 = স্বাভাবিক) | উদাহরণ |
|---|---|---|---|
blur() |
ঝাপসা করা | px (0 = স্পষ্ট) | blur(4px) |
brightness() |
উজ্জ্বলতা | 0–2+ (1 = স্বাভাবিক) | brightness(1.2) |
contrast() |
বৈসাদৃশ্য | 0–2+ (1 = স্বাভাবিক) | contrast(1.3) |
grayscale() |
ধূসর করা | 0–1 বা 0%–100% | grayscale(100%) |
sepia() |
পুরনো ছবির রঙ | 0–1 | sepia(0.8) |
hue-rotate() |
রঙ ঘোরানো | 0–360deg | hue-rotate(180deg) |
invert() |
রঙ উল্টানো | 0–1 | invert(1) |
opacity() |
স্বচ্ছতা | 0–1 | opacity(0.5) |
saturate() |
রঙের তীব্রতা | 0–∞ (1 = স্বাভাবিক) | saturate(1.5) |
drop-shadow() |
আকৃতি অনুযায়ী ছায়া | offset blur color | drop-shadow(0 4px 8px rgba(0,0,0,0.3)) |
Hover ও Transition-এ filter Hover
drop-shadow বনাম box-shadow তুলনা
| বিষয় | filter: drop-shadow() |
box-shadow |
|---|---|---|
| আকৃতি | element-এর আসল আকৃতি অনুসরণ ✅ | সবসময় আয়তক্ষেত্র |
| PNG transparent | স্বচ্ছ অংশে ছায়া নেই ✅ | পুরো box-এ ছায়া |
| spread | নেই | আছে ✅ |
| inset | নেই | আছে ✅ |
| SVG/Icon | সেরা ✅ | ঠিক নয় |
| Transition | সমর্থিত ✅ | সমর্থিত ✅ |
🔷 ৫. backdrop-filter — পেছনে ব্লার ইফেক্ট
backdrop-filter এলিমেন্টের পেছনের কন্টেন্টে filter প্রয়োগ করে।
filter থেকে আলাদা — নিজের উপর না, পেছনের উপর।
Glassmorphism UI তৈরির মূল হাতিয়ার।
backdrop-filter কাজ করতে এলিমেন্টের background-color
আধা-স্বচ্ছ বা স্বচ্ছ হতে হবে — সম্পূর্ণ opaque হলে পেছন দেখা যায় না,
তাই blur দেখা যাবে না। সবসময় -webkit-backdrop-filter দাও Safari-এর জন্য।
🔷 ৬. mix-blend-mode — Layer মেশানো
mix-blend-mode দিয়ে এলিমেন্ট তার নিচের কন্টেন্টের সাথে
কীভাবে মিশবে তা নির্ধারণ করা হয় — Photoshop Blend Mode-এর মতো।
🔷 দ্রুত রেফারেন্স — Images ও Filters
| Property | কাজ | সাধারণ মান | ডিফল্ট |
|---|---|---|---|
object-fit |
ছবির ফিট পদ্ধতি | cover, contain, fill |
fill |
object-position |
ফোকাস পয়েন্ট | center, top, 50% 30% |
50% 50% |
filter: blur() |
ঝাপসা | blur(4px) |
none |
filter: brightness() |
উজ্জ্বলতা | brightness(0.8) |
brightness(1) |
filter: grayscale() |
ধূসর | grayscale(100%) |
grayscale(0) |
filter: drop-shadow() |
আকৃতি ছায়া | drop-shadow(0 4px 8px rgba(0,0,0,0.3)) |
none |
backdrop-filter |
পেছনে blur | blur(12px) |
none |
mix-blend-mode |
Layer মিশানো | multiply, screen, overlay |
normal |
ব্যবহার অনুযায়ী সেরা পদ্ধতি কখন কী
| পরিস্থিতি | CSS |
|---|---|
| Card Image সমান উচ্চতায় | object-fit: cover + height: 200px |
| Avatar গোল ছবি | border-radius: 50% + object-fit: cover |
| Logo সম্পূর্ণ দেখানো | object-fit: contain |
| মুখের ছবিতে ফোকাস | object-position: top center |
| Hover-এ ধূসর → রঙিন | filter: grayscale(100%) → grayscale(0) |
| PNG Icon-এ ছায়া | filter: drop-shadow() |
| Glassmorphism Card | rgba() bg + backdrop-filter: blur() |
| Dark Mode ছবি | filter: invert(1) hue-rotate(180deg) |
| Instagram-style filter | filter: brightness() contrast() saturate() |
সবসময়
img { max-width: 100%; height: auto; } দাও +
Card Image-এ object-fit: cover ব্যবহার করো +
PNG Icon-এ filter: drop-shadow() ব্যবহার করো, box-shadow নয় +
Glassmorphism-এ -webkit-backdrop-filter অবশ্যই দাও +
filter transition করা যায় — transition: filter 0.3s দাও।
🌊 CSS Flow Layout — সম্পূর্ণ নোট
এই সেকশনে CSS Normal Flow-এর সব বিষয় — Block Formatting Context, Inline Formatting Context, Block ও Inline এলিমেন্টের আচরণ, BFC তৈরির কারণ এবং বাস্তব ব্যবহার বিস্তারিত বোঝানো হয়েছে।
🔷 Normal Flow কী?
Normal Flow হলো HTML এলিমেন্ট পেজে ডিফল্টভাবে যেভাবে সাজানো হয়।
CSS-এ position, float বা display পরিবর্তন না করলে
প্রতিটি এলিমেন্ট Normal Flow-এ থাকে।
Normal Flow দুটি নিয়মে কাজ করে — Block Formatting Context (BFC): উপর থেকে নিচে সাজানো এবং Inline Formatting Context (IFC): বাম থেকে ডানে একই লাইনে সাজানো।
Flow Layout-এর সারসংক্ষেপ Overview
| ধারণা | আচরণ | উদাহরণ এলিমেন্ট |
|---|---|---|
| Block Element | পূর্ণ প্রস্থ নেয়, নতুন লাইনে শুরু | div, p, h1–h6, ul, section |
| Inline Element | কন্টেন্টের আকার, একই লাইনে | span, a, strong, em, code |
| Inline-Block | Inline + width/height কাজ করে | img, button, input |
| BFC | নিজস্ব Block formatting পরিবেশ | float, overflow, position: absolute |
| IFC | নিজস্ব Inline formatting পরিবেশ | Paragraph-এর ভেতরের লেখা |
🔷 ১. Block Formatting Context (BFC)
BFC কেন গুরুত্বপূর্ণ গুরুত্ব
Block Formatting Context (BFC) হলো Block এলিমেন্টের জন্য একটি স্বাধীন rendering পরিবেশ। BFC-এর ভেতরের এলিমেন্ট নিজেদের মধ্যে সাজানো হয় — বাইরের layout-এ প্রভাব পড়ে না। BFC তিনটি সমস্যার সমাধান করে:
| সমস্যা | BFC সমাধান করে |
|---|---|
| Margin Collapse | BFC-এর সন্তানের Margin বাইরে Collapse হয় না |
| Float ধারণ না করা | BFC parent, float সন্তানকে ঘিরে রাখে |
| Float-এর পাশে সরানো | BFC এলিমেন্ট float-এর নিচে না গিয়ে পাশে থাকে |
BFC তৈরি হওয়ার কারণ কারণ
| CSS Property/মান | BFC তৈরি করে? | পার্শ্বপ্রতিক্রিয়া |
|---|---|---|
display: flow-root |
হ্যাঁ ✅ | কোনো পার্শ্বপ্রতিক্রিয়া নেই — সেরা পদ্ধতি |
overflow: hidden/auto/scroll |
হ্যাঁ ✅ | কন্টেন্ট কেটে যেতে পারে (hidden-এ) |
display: flex বা grid |
হ্যাঁ ✅ | Layout পরিবর্তন হয় |
display: inline-block |
হ্যাঁ ✅ | Inline আচরণ |
float: left/right |
হ্যাঁ ✅ | Flow থেকে বের হয় |
position: absolute/fixed |
হ্যাঁ ✅ | Flow থেকে বের হয় |
contain: layout |
হ্যাঁ ✅ | Performance containment |
BFC ব্যবহার ১ — Margin Collapse এড়ানো Margin Collapse
BFC ব্যবহার ২ — Float সন্তান ধারণ Float Contain
BFC ব্যবহার ৩ — Float-এর পাশে দুই কলাম Two Column
🔷 ২. Inline Formatting Context (IFC)
Inline Formatting Context (IFC)-এ Inline এলিমেন্ট বাম থেকে ডানে সাজানো হয় — জায়গা না হলে নতুন লাইনে যায়। প্রতিটি লাইনকে বলা হয় Line Box।
Line Box ও line-height Line Box
vertical-align — Inline উল্লম্ব অবস্থান vertical-align
| মান | অবস্থান | কখন |
|---|---|---|
baseline |
Parent-এর baseline-এ — ডিফল্ট | সাধারণ inline |
top |
Line Box-এর উপরে | উপরে রাখতে |
bottom |
Line Box-এর নিচে | নিচে রাখতে |
middle |
x-height-এর মাঝে | Icon + Text মেলাতে |
text-top |
Font-এর উপরে | Superscript |
text-bottom |
Font-এর নিচে | Subscript |
px / % |
Baseline থেকে নির্দিষ্ট | সুনির্দিষ্ট অবস্থান |
white-space — লেখা মোড়ানোর নিয়ম white-space
| মান | Wrap | Space Collapse | Newline রাখে | কখন |
|---|---|---|---|---|
normal |
হ্যাঁ | হ্যাঁ | না | ডিফল্ট |
nowrap |
না | হ্যাঁ | না | Single line label ✅ |
pre |
না | না | হ্যাঁ | Code block |
pre-wrap |
হ্যাঁ | না | হ্যাঁ | Code + wrap |
pre-line |
হ্যাঁ | হ্যাঁ | হ্যাঁ | User input |
🔷 ৩. writing-mode ও direction — লেখার দিক
writing-mode writing-mode
direction ও unicode-bidi direction
🔷 ৪. Containing Block — আকারের রেফারেন্স
Containing Block হলো যে এলিমেন্টের উপর ভিত্তি করে কোনো এলিমেন্টের
width, height, % মান এবং top/left
হিসেব হয়।
| Position | Containing Block |
|---|---|
static / relative |
নিকটতম Block Ancestor-এর Content এলাকা |
absolute |
নিকটতম positioned ancestor (padding এলাকা পর্যন্ত) |
fixed |
Viewport (transform থাকলে সেই ancestor) |
sticky |
Scroll Container |
🔷 ৫. display: flow-root — আধুনিক BFC
display: flow-root শুধুমাত্র BFC তৈরি করে —
অন্য কোনো পার্শ্বপ্রতিক্রিয়া নেই।
overflow: hidden-এর আধুনিক বিকল্প।
overflow: hidden-এর পরিবর্তে
display: flow-root ব্যবহার করো।
🔷 দ্রুত রেফারেন্স — Flow Layout সব ধারণা
| ধারণা | কাজ | সমাধান |
|---|---|---|
| BFC তৈরি | Float ধারণ, Margin Collapse ঠেকানো | display: flow-root ✅ |
| Margin Collapse | Block-এর মাঝের Margin যোগ না হওয়া | BFC, padding বা border দাও |
| Float সন্তান ধারণ | Parent-এর উচ্চতা শূন্য | display: flow-root বা clearfix |
| Inline gap | img-এর নিচে অতিরিক্ত gap | display: block বা vertical-align: bottom |
| লেখা কাটানো | লম্বা লেখা কন্টেইনার ছাড়িয়ে যায় | overflow-wrap: break-word |
| Single line | লেখা wrap না করা | white-space: nowrap |
| Ellipsis | লম্বা লেখায় ... | nowrap + overflow:hidden + text-overflow:ellipsis |
Float সন্তান ধারণ করতে parent-এ
display: flow-root দাও +
Margin Collapse হলে BFC বা padding-top: 1px দাও +
img-এর নিচের gap সরাতে display: block দাও +
লেখা overflow ঠেকাতে overflow-wrap: break-word দাও।
🏄 CSS Floating Elements — সম্পূর্ণ নোট
এই সেকশনে CSS Float-এর সব বিষয় — float property, Float-এর আচরণ, Clearfix, clear property, shape-outside এবং আধুনিক বিকল্প বিস্তারিত বোঝানো হয়েছে।
🔷 CSS Float কী?
float এলিমেন্টকে Normal Flow থেকে বের করে বাম বা ডানে ভাসিয়ে দেয়।
পাশের Inline কন্টেন্ট Float-এর চারপাশে wrap করে — পত্রিকার ছবির মতো।
আধুনিক CSS-এ Layout-এর জন্য Float ব্যবহার এড়িয়ে চলো — Flexbox বা Grid ব্যবহার করো। তবে Image-এর পাশে Text wrap করানোর জন্য Float এখনো সেরা পদ্ধতি।
float-এর সব মান মান
| মান | আচরণ | কখন |
|---|---|---|
left |
বামে ভাসে, কন্টেন্ট ডানে wrap করে | ছবি বামে রাখতে ✅ |
right |
ডানে ভাসে, কন্টেন্ট বামে wrap করে | ছবি ডানে রাখতে ✅ |
none |
float সরানো — ডিফল্ট | float রিসেট করতে |
inline-start |
লেখার দিকের শুরুতে (LTR=left) | RTL সমর্থিত |
inline-end |
লেখার দিকের শেষে (LTR=right) | RTL সমর্থিত |
🔷 ১. Float-এর আচরণ — বিস্তারিত
Float করলে কী হয় আচরণ
Float ও Inline কন্টেন্ট Inline Wrap
Float-এর সমস্যা — Parent উচ্চতা শূন্য ⚠️ সমস্যা
🔷 ২. clear — Float এড়িয়ে নিচে যাওয়া
clear-এর মান মান
| মান | আচরণ | কখন |
|---|---|---|
none |
Float এড়ায় না — ডিফল্ট | সাধারণ |
left |
বাম Float-এর নিচে যায় | left Float-এর পরে |
right |
ডান Float-এর নিচে যায় | right Float-এর পরে |
both |
উভয় Float-এর নিচে যায় | সবচেয়ে বেশি ✅ |
🔷 ৩. Clearfix — Float সন্তান ধারণের পদ্ধতি
পুরনো Clearfix পদ্ধতি Clearfix
Clearfix — সম্পূর্ণ প্রচলিত Version প্রচলিত
আধুনিক পদ্ধতির তুলনা তুলনা
| পদ্ধতি | কাজ করে | পার্শ্বপ্রতিক্রিয়া | সুপারিশ |
|---|---|---|---|
Empty <div> |
হ্যাঁ | HTML দূষণ | এড়িয়ে চলো ❌ |
overflow: hidden |
হ্যাঁ | কন্টেন্ট কাটতে পারে | সতর্কে ব্যবহার করো |
::after clearfix |
হ্যাঁ | Extra pseudo-element | পুরনো প্রজেক্টে ঠিক আছে |
display: flow-root |
হ্যাঁ | কোনো পার্শ্বপ্রতিক্রিয়া নেই | সেরা আধুনিক পদ্ধতি ✅ |
| Flexbox / Grid | হ্যাঁ (Float ছাড়া) | Layout পরিবর্তন | নতুন Layout-এ ব্যবহার করো ✅ |
🔷 ৪. shape-outside — Float-এর চারপাশে Text Wrap
shape-outside Float এলিমেন্টের চারপাশে Text
আকৃতি অনুযায়ী wrap করায় — শুধু আয়তক্ষেত্র নয়,
বৃত্ত বা যেকোনো আকৃতিতে।
শুধুমাত্র Float এলিমেন্টে কাজ করে।
shape-outside-এর মান মান
| মান | আকৃতি | উদাহরণ |
|---|---|---|
circle() |
বৃত্ত | circle(50%) |
ellipse() |
উপবৃত্ত | ellipse(50% 40% at 50% 50%) |
polygon() |
বহুভুজ | polygon(0 0, 100% 0, 100% 75%, 0 100%) |
inset() |
আয়তক্ষেত্র (ভেতরে) | inset(10px round 20px) |
url() |
ছবির আকৃতি অনুযায়ী | url("shape.png") |
margin-box |
Margin Box আকৃতি | ডিফল্ট |
shape-outside শুধু Float এলিমেন্টে কাজ করে।
Flex বা Grid item-এ কাজ করে না।
clip-path ও shape-outside একসাথে ব্যবহার করলে
ছবি ও Text উভয়ই আকৃতি অনুযায়ী হয়।
🔷 ৫. Float-এর বাস্তব ব্যবহার
Article-এ Image Float — সবচেয়ে প্রচলিত Article
Drop Cap — ::first-letter + Float Drop Cap
Pull Quote — ম্যাগাজিন স্টাইল Pull Quote
Legacy Grid — Float দিয়ে Legacy Grid
🔷 ৬. Float-এর আধুনিক বিকল্প
| Float-এর পুরনো ব্যবহার | আধুনিক বিকল্প | সুবিধা |
|---|---|---|
| Column Layout | CSS Grid / Flexbox | Clearfix লাগে না, সহজ ✅ |
| সমান উচ্চতার Column | Flexbox align-items: stretch |
স্বয়ংক্রিয়ভাবে সমান ✅ |
| Sidebar Layout | Grid template-areas |
পরিষ্কার কাঠামো ✅ |
| Centering | Flex place-items: center |
এক লাইনে centering ✅ |
| Image Text Wrap | Float এখনো সেরা | Shape-outside-ও পাওয়া যায় ✅ |
| Drop Cap | Float + ::first-letter |
Float-ই সেরা ✅ |
🔷 দ্রুত রেফারেন্স — Float সব Property ও Pattern
| Property | কাজ | সাধারণ মান | ডিফল্ট |
|---|---|---|---|
float |
এলিমেন্ট ভাসানো | left, right, none |
none |
clear |
Float এড়িয়ে নিচে যাওয়া | both, left, right |
none |
shape-outside |
Text Wrap-এর আকৃতি | circle(), polygon(), url() |
none |
shape-margin |
Shape ও Text-এর ফাঁক | 16px |
0 |
display: flow-root |
Float ধারণ (BFC) | flow-root |
— |
Float সমস্যা ও সমাধান সমস্যা ও সমাধান
| সমস্যা | কারণ | সমাধান |
|---|---|---|
| Parent-এর উচ্চতা শূন্য | Float সন্তান Normal Flow-এর বাইরে | display: flow-root বা ::after clearfix ✅ |
| পরের block Float-এর নিচে | Block Float-কে দেখে না | clear: both পরের block-এ ✅ |
| Float-এর পাশে text না থামা | Next block BFC নয় | display: flow-root পরের block-এ |
| Responsive-এ Float ভাঙা | Fixed width + Float | Media Query-তে float: none; width: 100% |
| Image-এর নিচে বাড়তি জায়গা | Inline baseline gap | display: block বা vertical-align: bottom |
নতুন Layout-এ Float ব্যবহার করো না — Flex বা Grid ব্যবহার করো + Image Text Wrap-এর জন্য Float এখনো সেরা + Float সন্তান ধারণে
display: flow-root ব্যবহার করো +
Float-এর পরে clear: both দাও +
shape-outside দিয়ে আকৃতি অনুযায়ী Text Wrap করো।
📐 CSS Layouts — সম্পূর্ণ নোট
এই সেকশনে CSS Layout-এর সব বিষয় — Flexbox (একমাত্রিক), CSS Grid (দ্বিমাত্রিক), Multi-column Layout, বাস্তব Layout Pattern এবং Responsive Design কৌশল বিস্তারিত বোঝানো হয়েছে।
🔷 CSS Layout পদ্ধতি — এক নজরে
আধুনিক CSS-এ Layout তৈরির প্রধান দুটি পদ্ধতি — Flexbox (একমাত্রিক: শুধু Row বা Column) এবং CSS Grid (দ্বিমাত্রিক: Row ও Column একসাথে)। দুটি ভিন্ন সমস্যার সমাধান — পরিস্থিতি বুঝে বেছে নিতে হয়।
| পদ্ধতি | মাত্রা | কখন ব্যবহার | উদাহরণ |
|---|---|---|---|
| Flexbox | একমাত্রিক (Row বা Column) | একটি সারিতে item সাজানো | Navbar, Button group, Card body |
| CSS Grid | দ্বিমাত্রিক (Row ও Column) | পূর্ণ Page বা Section layout | Card grid, Dashboard, Page layout |
| Multi-column | একমাত্রিক (Column) | লেখা পত্রিকার মতো ভাগ করা | Article, FAQ, Feature list |
Flexbox বনাম Grid — কোনটি কখন তুলনা
| বিষয় | Flexbox | Grid |
|---|---|---|
| মাত্রা | ১ মাত্রিক — Row বা Column | ২ মাত্রিক — Row ও Column |
| কন্টেন্ট-নির্ভর | হ্যাঁ — item-র আকার দেখে সাজায় | না — কাঠামো আগে ঠিক করে |
| সেরা ব্যবহার | Navigation, Toolbar, Card component | Page layout, Card grid, Dashboard |
| Alignment | একদিকে — বিপরীত দিকে সীমিত | উভয় দিকে নিখুঁত নিয়ন্ত্রণ |
| Gap | gap কাজ করে | gap কাজ করে ✅ |
🔷 FLEXBOX — একমাত্রিক Layout
display: flex দিলে Parent Flex Container হয়,
সরাসরি সন্তানরা Flex Item হয়।
দুটি অক্ষ — Main Axis (প্রধান দিক) ও
Cross Axis (আড়াআড়ি দিক)।
🔷 ১. flex-direction — Main Axis নির্ধারণ
| মান | Main Axis | item সাজানো | কখন |
|---|---|---|---|
row |
অনুভূমিক → | বাম থেকে ডানে | ডিফল্ট — Navbar, Button Group ✅ |
row-reverse |
অনুভূমিক ← | ডান থেকে বামে | RTL Layout |
column |
উল্লম্ব ↓ | উপর থেকে নিচে | Card body, Form ✅ |
column-reverse |
উল্লম্ব ↑ | নিচ থেকে উপরে | Chat messages |
🔷 ২. justify-content — Main Axis-এ সাজানো
| মান | আচরণ | কখন |
|---|---|---|
flex-start |
শুরুতে জড়ো — ডিফল্ট | সাধারণ ব্যবহার |
flex-end |
শেষে জড়ো | ডানে রাখতে |
center |
মাঝখানে | Centered content ✅ |
space-between |
প্রান্তে, মাঝে সমান ফাঁক | Navbar (logo ↔ links) ✅ |
space-around |
দুপাশে সমান (প্রান্ত অর্ধেক) | Tab bar |
space-evenly |
সব ফাঁক সমান | সুষম বিতরণ |
🔷 ৩. align-items ও align-content — Cross Axis-এ সাজানো
align-items — Single Line align-items
| মান | আচরণ | কখন |
|---|---|---|
stretch |
Cross Axis বরাবর প্রসারিত — ডিফল্ট | সমান উচ্চতার Column |
flex-start |
Cross Axis-এর শুরুতে | উপরে রাখতে |
flex-end |
Cross Axis-এর শেষে | নিচে রাখতে |
center |
Cross Axis-এর মাঝে | উল্লম্বে মাঝে ✅ |
baseline |
লেখার baseline-এ | বিভিন্ন আকারের লেখায় |
align-content — Multi Line (wrap-এ) align-content
🔷 ৪. flex-wrap ও gap — মোড়ানো ও ফাঁকা জায়গা
flex-wrap — নতুন লাইনে যাওয়া flex-wrap
gap — item-এর মাঝে ফাঁক gap
🔷 ৫. Flex Item Properties — item নিয়ন্ত্রণ
flex-grow — বাড়তি জায়গা নেওয়া flex-grow
flex-shrink — ছোট হওয়ার নিয়ম flex-shrink
flex-basis — ভিত্তি আকার flex-basis
flex Shorthand flex
order — item-এর ক্রম order
align-self — নির্দিষ্ট item-এর Alignment align-self
🔷 ৬. Flexbox — বাস্তব Layout Pattern
Navbar Navbar
Card Component Card
Holy Grail Layout Holy Grail
Centering — সব পদ্ধতি Center
🔷 CSS GRID — দ্বিমাত্রিক Layout
display: grid দিলে Parent Grid Container হয়।
grid-template-columns ও grid-template-rows দিয়ে
Column ও Row সংজ্ঞায়িত করা হয়।
fr একক — বাকি জায়গার অনুপাতে ভাগ করে।
🔷 ৭. grid-template-columns ও grid-template-rows
repeat() — Column/Row পুনরাবৃত্তি repeat()
minmax() — ন্যূনতম ও সর্বোচ্চ আকার minmax()
🔷 ৮. Grid Item Placement — item সাজানো
grid-column ও grid-row — অবস্থান Placement
grid-template-areas — নামযুক্ত এলাকা areas
🔷 ৯. Grid Alignment — item ও track সাজানো
| Property | প্রযোজ্য | দিক | মান |
|---|---|---|---|
justify-items |
Container | অনুভূমিক (cell-এ) | start, end, center, stretch |
align-items |
Container | উল্লম্ব (cell-এ) | start, end, center, stretch |
justify-content |
Container | অনুভূমিক (grid-এ) | start, center, space-between... |
align-content |
Container | উল্লম্ব (grid-এ) | start, center, space-between... |
justify-self |
Item | অনুভূমিক (নির্দিষ্ট) | start, end, center, stretch |
align-self |
Item | উল্লম্ব (নির্দিষ্ট) | start, end, center, stretch |
🔷 ১০. CSS Grid — বাস্তব Layout Pattern
Responsive Card Grid Card Grid
Magazine / Blog Layout Magazine
Dashboard Layout Dashboard
Subgrid — Parent Grid থেকে উত্তরাধিকার subgrid
🔷 ১১. Multi-column Layout — পত্রিকার মতো
Multi-column Layout-এ কন্টেন্ট পত্রিকার মতো column-এ ভাগ হয়। Flexbox বা Grid-এর বিকল্প নয় — Text কন্টেন্ট column-এ ভাগ করতে ব্যবহৃত।
🔷 ১২. Responsive Layout Patterns — আধুনিক পদ্ধতি
The Sidebar Pattern Sidebar
The RAM Pattern — Repeat, Auto, Minmax RAM
Fluid Typography — clamp() দিয়ে Fluid Type
Container Queries — Component-নির্ভর Responsive Container Query
🔷 দ্রুত রেফারেন্স — Flexbox ও Grid সব Property
Flexbox Container Properties Flex Container
| Property | কাজ | সাধারণ মান | ডিফল্ট |
|---|---|---|---|
display |
Flex চালু | flex, inline-flex |
— |
flex-direction |
Main Axis | row, column |
row |
flex-wrap |
মোড়ানো | wrap, nowrap |
nowrap |
flex-flow |
direction + wrap | row wrap |
row nowrap |
justify-content |
Main Axis সাজানো | center, space-between |
flex-start |
align-items |
Cross Axis সাজানো | center, stretch |
stretch |
align-content |
Multi-row সাজানো | center, space-between |
stretch |
gap |
item-এর ফাঁক | 16px, 16px 24px |
0 |
Flexbox Item Properties Flex Item
| Property | কাজ | সাধারণ মান | ডিফল্ট |
|---|---|---|---|
flex-grow |
বাড়তি জায়গা | 0, 1 |
0 |
flex-shrink |
ছোট হওয়া | 0, 1 |
1 |
flex-basis |
ভিত্তি আকার | auto, 200px, 0 |
auto |
flex |
grow shrink basis | 1, auto, none |
0 1 auto |
order |
ক্রম পরিবর্তন | -1, 0, 1 |
0 |
align-self |
নির্দিষ্ট alignment | center, flex-end |
auto |
CSS Grid Container Properties Grid Container
| Property | কাজ | সাধারণ মান | ডিফল্ট |
|---|---|---|---|
display |
Grid চালু | grid, inline-grid |
— |
grid-template-columns |
Column সংজ্ঞা | repeat(3,1fr), 200px 1fr |
none |
grid-template-rows |
Row সংজ্ঞা | auto 1fr auto |
none |
grid-template-areas |
নামযুক্ত এলাকা | "header header" |
none |
gap |
Track-এর ফাঁক | 16px, 16px 24px |
0 |
justify-items |
Cell-এ অনুভূমিক | start, center, stretch |
stretch |
align-items |
Cell-এ উল্লম্ব | start, center, stretch |
stretch |
place-items |
align + justify | center |
stretch |
CSS Grid Item Properties Grid Item
| Property | কাজ | সাধারণ মান |
|---|---|---|
grid-column |
Column অবস্থান ও বিস্তার | 1 / 3, span 2, 1 / -1 |
grid-row |
Row অবস্থান ও বিস্তার | 1 / 3, span 2 |
grid-area |
নামযুক্ত এলাকা বা shorthand | header, 1/2/3/4 |
justify-self |
নির্দিষ্ট অনুভূমিক | start, center, end |
align-self |
নির্দিষ্ট উল্লম্ব | start, center, end |
place-self |
align + justify | center |
কোন পরিস্থিতিতে কোন Layout কখন কী
| পরিস্থিতি | সেরা পদ্ধতি | কারণ |
|---|---|---|
| Navbar / Toolbar | Flexbox | একটি সারি, space-between |
| Button Group | Flexbox + gap | সরল row layout |
| Card Body (Icon + Text) | Flexbox | align-items: center |
| Card Grid | Grid (auto-fill/fit) | 2D, Responsive |
| Page Layout | Grid (template-areas) | দৃশ্যমান কাঠামো |
| Dashboard | Grid (12-col system) | নমনীয় widget |
| Form Layout | Grid বা Flexbox column | Label + Input align |
| Modal Center | Flexbox (place-items: center) | সহজ centering |
| Article Text | Multi-column | Text flow column-এ |
| Responsive Card | Container Query + Grid | Component-নির্ভর |
একটি Row বা Column → Flexbox + দুই দিকের কাঠামো → Grid + Responsive Grid →
repeat(auto-fill, minmax(280px, 1fr)) +
Item ফাঁক → সবসময় margin-এর বদলে gap +
সম্পূর্ণ কেন্দ্রে → display: flex; place-items: center +
Viewport নয়, Component দেখে Responsive → Container Query।
🎬 CSS Animations — সম্পূর্ণ নোট
এই সেকশনে CSS Animation-এর সব বিষয় — Transition, @keyframes, Animation Property, Transform (2D ও 3D), Timing Function, Performance এবং Accessibility কৌশল বিস্তারিত বোঝানো হয়েছে।
🔷 CSS Animation — দুটি পদ্ধতি
CSS-এ Animation দুটি পদ্ধতিতে করা হয় — Transition (দুটি state-এর মাঝে মসৃণ পরিবর্তন) এবং @keyframes Animation (একাধিক ধাপে স্বয়ংক্রিয় জটিল Animation)।
| বিষয় | Transition | @keyframes Animation |
|---|---|---|
| কখন শুরু | State পরিবর্তনে (hover, focus, class) | স্বয়ংক্রিয়ভাবে বা JS দিয়ে |
| ধাপ | দুটি — শুরু ও শেষ | যেকোনো সংখ্যক (0%–100%) |
| Loop | না | হ্যাঁ — infinite সম্ভব ✅ |
| জটিলতা | সহজ | জটিল ও নিয়ন্ত্রণযোগ্য |
| সেরা ব্যবহার | Button hover, Modal open, Menu | Loader, Skeleton, Hero animation |
🔷 ১. transition — মসৃণ State পরিবর্তন
transition Sub-Properties Sub-Properties
| Property | কাজ | সাধারণ মান | ডিফল্ট |
|---|---|---|---|
transition-property |
কোন property animate হবে | all, color, transform |
all |
transition-duration |
সময়কাল | 0.2s, 300ms |
0s |
transition-timing-function |
গতির বক্ররেখা | ease, linear, cubic-bezier() |
ease |
transition-delay |
শুরু হওয়ার আগে অপেক্ষা | 0s, 0.1s, 200ms |
0s |
transition-এর বাস্তব Pattern বাস্তব
transition — কী animate করা যায়, কী যায় না ⚠️ সীমা
🔷 ২. timing-function — গতির বক্ররেখা
পূর্বনির্ধারিত Timing Function Preset
| মান | গতি | কখন ব্যবহার |
|---|---|---|
ease |
ধীরে শুরু → দ্রুত → ধীরে শেষ | ডিফল্ট — সাধারণ ব্যবহার ✅ |
linear |
সমান গতি সবসময় | Spinner, Progress bar ✅ |
ease-in |
ধীরে শুরু → দ্রুত শেষ | Element সরে যাওয়া (exit) |
ease-out |
দ্রুত শুরু → ধীরে শেষ | Element আসা (enter) ✅ |
ease-in-out |
ধীরে শুরু → দ্রুত → ধীরে শেষ | Accordion, Slide ✅ |
step-start |
শুরুতে instant jump | বিরল |
step-end |
শেষে instant jump | বিরল |
cubic-bezier() — কাস্টম গতি cubic-bezier
steps() — ধাপে ধাপে steps()
🔷 ৩. transform — 2D রূপান্তর
transform এলিমেন্টকে ঘোরানো, সরানো, বড়-ছোট করা বা বাঁকানো যায়।
Normal Flow পরিবর্তন হয় না — অন্য এলিমেন্ট সরে না।
GPU-accelerated হওয়ায় performance সেরা।
translate() — সরানো translate
rotate() — ঘোরানো rotate
scale() — বড়-ছোট করা scale
skew() — বাঁকানো skew
transform-origin — রূপান্তরের কেন্দ্র transform-origin
একাধিক transform — ক্রম গুরুত্বপূর্ণ ⚠️ ক্রম
🔷 ৪. transform 3D — ত্রিমাত্রিক রূপান্তর
perspective — 3D দেখার দূরত্ব perspective
3D rotate ও translate 3D Transform
Card Flip — 3D-র সেরা ব্যবহার Card Flip
🔷 ৫. @keyframes — Animation সংজ্ঞায়ন
@keyframes দিয়ে Animation-এর ধাপগুলো সংজ্ঞায়িত করা হয়।
animation property দিয়ে এলিমেন্টে প্রয়োগ করা হয়।
🔷 ৬. animation — সব Sub-Property
সব Sub-Property Properties
| Property | কাজ | সাধারণ মান | ডিফল্ট |
|---|---|---|---|
animation-name |
@keyframes-এর নাম | fadeIn, spin |
none |
animation-duration |
সময়কাল | 0.3s, 1s, 500ms |
0s |
animation-timing-function |
গতির বক্ররেখা | ease, linear |
ease |
animation-delay |
শুরুর দেরি | 0s, 0.2s |
0s |
animation-iteration-count |
কতবার চলবে | 1, 3, infinite |
1 |
animation-direction |
কোন দিকে | normal, reverse, alternate |
normal |
animation-fill-mode |
শুরু/শেষের style | none, forwards, backwards, both |
none |
animation-play-state |
চালু বা বন্ধ | running, paused |
running |
animation Shorthand Shorthand
animation-fill-mode — শুরু/শেষের অবস্থা fill-mode
animation-direction direction
animation-play-state — Pause ও Resume play-state
🔷 ৭. Staggered Animation — ধাপে ধাপে আসা
🔷 ৮. জনপ্রিয় Animation Pattern
Skeleton Loading Skeleton
Loader ও Spinner Loader
Notification ও Toast Toast
Page Enter Animation Page Enter
🔷 ৯. Animation Performance — GPU-Friendly
CSS Animation-এ performance সবচেয়ে গুরুত্বপূর্ণ।
ভুল property animate করলে পেজ Lag করে।
transform ও opacity GPU-এ চলে —
কোনো Layout পরিবর্তন করে না।
কোন Property animate করবে, কোনটি করবে না Performance
| Property | Performance | কারণ | বিকল্প |
|---|---|---|---|
transform |
✅ সেরা | GPU-accelerated, Reflow নেই | — |
opacity |
✅ সেরা | GPU-accelerated, Repaint নেই | — |
filter |
✅ ভালো | GPU-accelerated | — |
background-color |
⚠️ ঠিক আছে | Repaint করে (Reflow নয়) | — |
width / height |
❌ খারাপ | Reflow তৈরি করে | transform: scale() |
top / left |
❌ খারাপ | Reflow তৈরি করে | transform: translate() |
margin / padding |
❌ খারাপ | Reflow তৈরি করে | transform: translate() |
font-size |
❌ খারাপ | Reflow তৈরি করে | transform: scale() |
will-change — Browser-কে আগাম জানানো will-change
🔷 ১০. Accessibility — সবার জন্য Animation
কিছু ব্যবহারকারীর জন্য অতিরিক্ত animation মাথা ঘোরা বা Epilepsy
ঘটাতে পারে। prefers-reduced-motion দিয়ে তাদের জন্য animation
কমিয়ে দেওয়া অত্যন্ত গুরুত্বপূর্ণ।
🔷 দ্রুত রেফারেন্স — Animation সব Property
transition দ্রুত রেফারেন্স transition
| Property | কাজ | সাধারণ মান | ডিফল্ট |
|---|---|---|---|
transition-property |
কোন property | all, transform, opacity |
all |
transition-duration |
সময়কাল | 200ms, 0.3s |
0s |
transition-timing-function |
গতির বক্ররেখা | ease, ease-out |
ease |
transition-delay |
শুরুর দেরি | 0s, 100ms |
0s |
animation দ্রুত রেফারেন্স animation
| Property | কাজ | সাধারণ মান | ডিফল্ট |
|---|---|---|---|
animation-name |
@keyframes নাম | fadeIn, spin |
none |
animation-duration |
সময়কাল | 0.4s, 1s |
0s |
animation-iteration-count |
পুনরাবৃত্তি | 1, infinite |
1 |
animation-direction |
দিক | normal, alternate |
normal |
animation-fill-mode |
শুরু/শেষ style | forwards, both |
none |
animation-delay |
শুরুর দেরি | 0s, 0.2s |
0s |
animation-play-state |
চালু/বন্ধ | running, paused |
running |
transform দ্রুত রেফারেন্স transform
| Function | কাজ | উদাহরণ |
|---|---|---|
translate(x, y) |
সরানো | translate(-50%, -50%) |
translateX/Y/Z() |
এক অক্ষে সরানো | translateY(-4px) |
rotate(deg) |
ঘোরানো | rotate(45deg) |
rotateX/Y/Z() |
3D ঘোরানো | rotateY(180deg) |
scale(n) |
বড়-ছোট | scale(1.1) |
scaleX/Y() |
এক দিকে বড়-ছোট | scaleX(-1) (mirror) |
skew(x, y) |
বাঁকানো | skewX(15deg) |
perspective() |
3D দৃষ্টিকোণ | perspective(800px) |
সবসময়
transform ও opacity animate করো — top/left/width নয়
+
Enter animation → ease-out, Exit → ease-in +
Hover-এ 200–300ms, Modal-এ 300–400ms +
animation-fill-mode: forwards প্রায়ই লাগে — ভুলো না +
Stagger-এ --i Custom Property ব্যবহার করো +
সবসময় prefers-reduced-motion সমর্থন করো।
🔧 CSS Variables — সম্পূর্ণ নোট
এই সেকশনে CSS Custom Properties (Variables)-এর সব বিষয় — ঘোষণা, ব্যবহার, scope, fallback, JavaScript সংযোগ, Design Token ও Dark Mode ব্যবস্থাপনা বিস্তারিত বোঝানো হয়েছে।
🔷 CSS Variable কী?
CSS Custom Properties (সাধারণত CSS Variables বলা হয়) হলো CSS-এ
নিজের ভেরিয়েবল তৈরির পদ্ধতি।
-- দিয়ে ঘোষণা করা হয় এবং var() দিয়ে ব্যবহার করা হয়।
সহজ ভাষায় — CSS Variable হলো একটি নামযুক্ত ধারণপাত্র। একটি মান একবার সংরক্ষণ করো, পুরো পেজে ব্যবহার করো। পরিবর্তন করতে শুধু একটি জায়গায় মান বদলাও।
CSS Variable বনাম SASS Variable তুলনা
| বিষয় | CSS Variable | SASS Variable ($var) |
|---|---|---|
| Runtime | Browser-এ — চলার সময় পরিবর্তন হয় ✅ | Compile time — CSS-এ fixed হয় |
| JavaScript | JS দিয়ে পড়া ও লেখা যায় ✅ | JS দিয়ে পরিবর্তন করা যায় না |
| Inheritance | Cascade ও Inheritance মেনে চলে ✅ | না — compile-time only |
| Scope | Selector scope | Block scope |
| Media Query | ভেতরে পরিবর্তন করা যায় ✅ | না |
🔷 ১. ঘোষণা ও ব্যবহার — মূল নিয়ম
মূল সিনট্যাক্স Syntax
যেকোনো মান সংরক্ষণ মান
🔷 ২. Scope — পরিধি ও উত্তরাধিকার
:root — Global Scope :root
Local Scope — নির্দিষ্ট এলিমেন্টে Local
Override — সন্তানে নতুন মান Override
🔷 ৩. Fallback — ডিফল্ট মান
🔷 ৪. JavaScript — Variable পড়া ও লেখা
🔷 ৫. Dark Mode — CSS Variable দিয়ে
পদ্ধতি ১ — Media Query Media Query
পদ্ধতি ২ — data-theme Attribute (সেরা ✅) data-theme
🔷 ৬. Design Token — সম্পূর্ণ Design System
🔷 ৭. @property — Type-safe CSS Variable
@property দিয়ে CSS Variable-এর type ঘোষণা করা যায়।
সবচেয়ে বড় সুবিধা — Typed Variable animate করা যায়।
🔷 দ্রুত রেফারেন্স — CSS Variable সব নিয়ম
| বিষয় | সিনট্যাক্স / নিয়ম |
|---|---|
| ঘোষণা | --variable-name: value; |
| ব্যবহার | property: var(--variable-name); |
| Fallback | var(--variable, fallback-value) |
| Global Scope | :root { --var: value; } |
| JS পড়া | getComputedStyle(el).getPropertyValue('--var') |
| JS লেখা | el.style.setProperty('--var', value) |
| Typed Variable | @property --var { syntax: "<color>"; } |
| Dark Mode | [data-theme="dark"] { --var: newValue; } |
Global মান →
:root-এ রাখো +
Component ডিফল্ট → Local Variable + Fallback দাও +
Dark Mode → data-theme attribute পদ্ধতি ব্যবহার করো +
Design Token → Primitive ও Semantic দুটি স্তরে আলাদা করো +
Animation করতে → @property দিয়ে Typed Variable বানাও।
🎯 CSS Selector Functions — সম্পূর্ণ নোট
এই সেকশনে CSS Selector Function-এর সব বিষয় — :is(), :not(), :has(), :where(), :nth-child(), :nth-of-type() এবং অন্যান্য Pseudo-class Function বিস্তারিত ব্যাখ্যা ও বাস্তব ব্যবহার সহ বোঝানো হয়েছে।
🔷 CSS Selector Function কী?
CSS Selector Function হলো Selector-এর ভেতরে ফাংশনের মতো যুক্তি গ্রহণকারী বিশেষ Pseudo-class। এগুলো দিয়ে জটিল Selector সহজে লেখা যায় এবং পুনরাবৃত্তি কমানো যায়।
| Function | কাজ | Specificity | সমর্থন |
|---|---|---|---|
:is() |
যেকোনো একটি match হলে | সবচেয়ে নির্দিষ্ট argument-এর মান | সব আধুনিক browser ✅ |
:not() |
match না হলে | argument-এর মান | সব browser ✅ |
:has() |
নির্দিষ্ট সন্তান থাকলে | argument-এর মান | Chrome 105+, Safari 15.4+, Firefox 121+ ✅ |
:where() |
:is() এর মতো কিন্তু Specificity = 0 | সবসময় 0 | সব আধুনিক browser ✅ |
:nth-child() |
n-তম সন্তান | Pseudo-class (0,1,0) | সব browser ✅ |
:nth-of-type() |
ঐ ধরনের n-তম | Pseudo-class (0,1,0) | সব browser ✅ |
🔷 ১. :is() — যেকোনো একটি match
:is() দিয়ে একাধিক Selector-এর যেকোনো একটি match হলে
style প্রযোজ্য হয়। দীর্ঘ পুনরাবৃত্তিমূলক Selector
সংক্ষিপ্ত করার সেরা পদ্ধতি।
🔷 ২. :not() — বাদ দিয়ে
:not() নির্দিষ্ট Selector বাদ দিয়ে
বাকি সবকিছুতে style প্রযোজ্য করে।
আধুনিক CSS-এ একাধিক Selector দেওয়া যায়।
:not() — বাস্তব Pattern বাস্তব
🔷 ৩. :has() — Parent Selector (CSS-এর বিপ্লব)
:has() হলো CSS-এর সবচেয়ে শক্তিশালী নতুন Selector।
নির্দিষ্ট সন্তান থাকলে parent-এ style দেওয়া যায় —
CSS-এ এতদিন এটি সম্ভব ছিল না। "Parent Selector" নামে পরিচিত।
:has() — Sibling Selector Sibling
🔷 ৪. :where() — Specificity-মুক্ত :is()
:where() ঠিক :is()-এর মতো কাজ করে —
তবে Specificity সবসময় (0,0,0)।
CSS Reset ও Base Style-এ ব্যবহার করলে যেকোনো জায়গায় সহজে override করা যায়।
:is() বনাম :where() বনাম :not() — পার্থক্য তুলনা
| Function | Match | Specificity | সেরা ব্যবহার |
|---|---|---|---|
:is() |
যেকোনো একটি match হলে | সবচেয়ে নির্দিষ্ট argument | Component Style, State |
:where() |
যেকোনো একটি match হলে | সবসময় 0 ✅ | Reset, Base Style, Framework |
:not() |
কোনোটি match না হলে | argument-এর মান | বাদ দিয়ে, Separator |
:has() |
সন্তান/sibling match হলে | argument-এর মান | Parent Selector, Layout |
🔷 ৫. :nth-child() ও সংখ্যাভিত্তিক Selector
:nth-child() — সংখ্যা অনুযায়ী nth-child
:nth-of-type() — ধরন অনুযায়ী nth-of-type
প্রথম
— p:nth-of-type(1), p:nth-child(1) span — span, nth-child(2)দ্বিতীয়
— p:nth-of-type(2), p:nth-child(3)অন্যান্য Pseudo-class Selector অন্যান্য
🔷 দ্রুত রেফারেন্স — Selector Functions
| Selector | কাজ | উদাহরণ |
|---|---|---|
:is(A, B) |
A বা B match হলে | :is(h1,h2,h3) a |
:not(A, B) |
A ও B match না হলে | li:not(:last-child) |
:has(A) |
A সন্তান/sibling থাকলে | .card:has(img) |
:where(A, B) |
A বা B match, Specificity=0 | :where(h1,h2) { margin:0 } |
:nth-child(n) |
n-তম সন্তান | tr:nth-child(even) |
:nth-of-type(n) |
ঐ type-এর n-তম | p:nth-of-type(1) |
:first-child |
প্রথম সন্তান | li:first-child |
:last-child |
শেষ সন্তান | li:last-child |
:focus-visible |
Keyboard focus | .btn:focus-visible |
:focus-within |
সন্তানে focus | .form:focus-within |
:empty |
কন্টেন্ট নেই | .badge:empty { display:none } |
:placeholder-shown |
Input খালি | input:placeholder-shown |
পুনরাবৃত্তি কমাতে →
:is() +
Reset/Base Style-এ → :where() (Specificity 0) +
বাদ দিতে → :not() +
Parent Selector দরকার → :has() +
Keyboard Accessibility → :focus-visible ব্যবহার করো, :focus নয়।
🔢 CSS Functions — সম্পূর্ণ নোট
এই সেকশনে CSS-এর সব Built-in Function — Math, Color, Gradient, Shape, Grid, Transform, Filter, Variable, Image, Timing এবং Content Function প্রতিটি বাস্তব উদাহরণ সহ বিস্তারিত বোঝানো হয়েছে।
🔷 CSS Function — এক নজরে
CSS Function হলো CSS-এ built-in গণনা ও প্রক্রিয়াকরণের পদ্ধতি।
name(argument) আকারে CSS Property-র মান হিসেবে ব্যবহার হয়।
ফাংশনগুলো নেস্ট করা যায় — একটির মধ্যে আরেকটি।
| ধরন | প্রধান Functions | কোথায় ব্যবহার |
|---|---|---|
| Math |
calc, min, max, clamp, round, mod, rem, abs, sin, cos, tan, pow, sqrt, log, exp, sign, hypot, atan2
|
যেকোনো সংখ্যামূলক property |
| Color | rgb, hsl, hwb, lab, lch, oklab, oklch, color, color-mix |
color, background-color, border-color |
| Gradient | linear-gradient, radial-gradient, conic-gradient, repeating-* |
background-image |
| Shape | circle, ellipse, polygon, inset, path, xywh, rect |
clip-path, shape-outside, offset-path |
| Grid | repeat, minmax, fit-content |
grid-template-columns/rows |
| Transform | translate, rotate, scale, skew, perspective, matrix, rotate3d |
transform |
| Filter |
blur, brightness, contrast, grayscale, sepia, hue-rotate, invert, saturate, opacity, drop-shadow
|
filter, backdrop-filter |
| Variable | var, env |
যেকোনো property |
| Content | attr, counter, counters, format, symbols |
content, list-style-type |
| Image | url, image-set, cross-fade, element, image |
background-image, content |
| Timing | cubic-bezier, steps, linear |
transition-timing-function, animation-timing-function |
🔷 ১. Math Functions — গণনা
① calc() — মিশ্র একক গণনা calc()
② min(), max(), clamp() — তুলনামূলক গণনা Comparison
③ Advanced Math — round(), mod(), abs(), Trigonometry Advanced Math
🔷 ২. Color Functions — রঙ তৈরি
① rgb(), hsl(), hwb() — ক্লাসিক Color Function rgb hsl hwb
② oklab(), oklch(), lab(), lch() — আধুনিক Perceptual Color oklab oklch
③ color(), color-mix() এবং Relative Color Syntax color color-mix
🔷 ৩. Gradient Functions — রঙের ধাপ
① linear-gradient() — সরল রেখায় linear-gradient
② radial-gradient() ও conic-gradient() radial conic
🔷 ৪. Shape Functions — আকৃতি নির্ধারণ
🔷 ৫. Grid Functions — Track তৈরি
🔷 ৬. Variable ও Reference Functions
① var() — CSS Variable ব্যবহার var()
② env() — Environment Variable env()
③ attr() — HTML Attribute থেকে মান attr()
🔷 ৭. Content ও Counter Functions
🔷 ৮. Image Functions — ছবি ও URL
🔷 ৯. Timing Functions — Animation গতি
① cubic-bezier() — কাস্টম গতি বক্ররেখা cubic-bezier
② steps() — ধাপে ধাপে পরিবর্তন steps()
③ linear() — Custom Easing Keyframe linear()
🔷 ১০. Transform Functions — সম্পূর্ণ রেফারেন্স
2D Transform Functions 2D
3D Transform Functions 3D
🔷 ১১. Filter Functions — ভিজ্যুয়াল ইফেক্ট
🔷 দ্রুত রেফারেন্স — CSS Functions সম্পূর্ণ গাইড
Function → Property মানচিত্র কোথায় কী
| Property | ব্যবহারযোগ্য Functions |
|---|---|
width, height, padding, margin, gap |
calc(), min(), max(), clamp(),
var(), env()
|
font-size, line-height |
clamp(), calc(), var(), max() |
color, background-color, border-color |
rgb(), hsl(), hwb(), oklab(),
oklch(), lab(), lch(), color(),
color-mix(), var()
|
background-image |
url(), linear-gradient(), radial-gradient(),
conic-gradient(), repeating-*-gradient(), image-set(),
cross-fade()
|
clip-path |
circle(), ellipse(), polygon(), inset(),
path(), xywh(), rect()
|
shape-outside |
circle(), ellipse(), polygon(), inset(),
url()
|
transform |
translate(), translateX/Y/Z(), translate3d(),
rotate(), rotateX/Y/Z(), rotate3d(),
scale(), scaleX/Y/Z(), skew(), skewX/Y(),
perspective(), matrix(), matrix3d()
|
filter, backdrop-filter |
blur(), brightness(), contrast(),
grayscale(), sepia(), hue-rotate(),
invert(), saturate(), opacity(),
drop-shadow()
|
grid-template-columns/rows |
repeat(), minmax(), fit-content() |
transition-timing-function, animation-timing-function |
cubic-bezier(), steps(), linear() |
content |
attr(), counter(), counters(), url() |
list-style-type |
symbols() |
cursor |
url() |
পরিস্থিতি → সেরা Function কখন কী
| পরিস্থিতি | সেরা Function | উদাহরণ |
|---|---|---|
| max-width বিকল্প | min() |
width: min(100%, 1280px) |
| min-width বিকল্প | max() |
padding: max(16px, 5%) |
| Fluid Typography | clamp() |
font-size: clamp(1rem, 4vw, 3rem) |
| Mixed-unit Layout | calc() |
width: calc(100% - 280px) |
| Hover রঙ | color-mix() |
color-mix(in srgb, var(--bg) 85%, black) |
| Shade System | oklch() |
oklch(0.6 0.2 250) |
| Responsive Grid | repeat() + minmax() |
repeat(auto-fill, minmax(280px, 1fr)) |
| Pie Chart | conic-gradient() |
conic-gradient(red 30%, blue 65%) |
| Glow Effect | radial-gradient() |
radial-gradient(circle, rgba(...,0.4), transparent) |
| Retina Image | image-set() |
image-set(url("2x.png") 2x) |
| Tooltip Content | attr() |
content: attr(data-tooltip) |
| Step Counter | counter() |
content: counter(step) |
| Spring Animation | cubic-bezier() |
cubic-bezier(0.34, 1.56, 0.64, 1) |
| Sprite Animation | steps() |
steps(8, end) |
| PNG Icon Shadow | drop-shadow() |
filter: drop-shadow(0 4px 8px rgba(0,0,0,0.3)) |
| Glass UI | backdrop-filter: blur() |
backdrop-filter: blur(12px) |
| iPhone Safe Area | env() |
padding-bottom: env(safe-area-inset-bottom) |
| Custom Shape | polygon() |
clip-path: polygon(50% 0%, 0% 100%, 100% 100%) |
| Animated Gradient | @property + conic-gradient() |
Typed variable animate |
| Bৃত্তাকার Layout | sin() + cos() |
left: calc(50% + 120px * cos(var(--angle))) |
Fluid Design →
clamp(min, vw, max) +
max-width → min(100%, 1280px) +
Mixed unit → calc() +
Responsive Grid → repeat(auto-fill, minmax(280px, 1fr)) +
আধুনিক রঙ → oklch() +
Hover রঙ → color-mix() +
Spring animation → cubic-bezier(0.34, 1.56, 0.64, 1) +
Functions নেস্ট করা যায় → min(calc(100% - 32px), 1280px)।
✅ CSS Best Practices — সম্পূর্ণ নোট
এই সেকশনে CSS লেখার সেরা অভ্যাস — কোড সংগঠন, Naming Convention, Performance, Maintainability, Accessibility এবং আধুনিক CSS কৌশল বিস্তারিত বোঝানো হয়েছে।
🔷 ১. CSS Reset ও Base Style
Modern CSS Reset — শুরুতেই দাও Reset
🔷 ২. Naming Convention — নামকরণের নিয়ম
BEM — Block Element Modifier BEM
Utility-First — Tailwind পদ্ধতি Utility
CSS Naming — সাধারণ নিয়মাবলী নিয়ম
🔷 ৩. CSS কোড সংগঠন ও File Structure
File Structure — বড় প্রজেক্টে Structure
একটি CSS ফাইলের ভেতরের ক্রম ক্রম
🔷 ৪. Selector-এর সেরা অভ্যাস
Specificity কম রাখো Specificity
!important এড়িয়ে চলো ⚠️ !important
🔷 ৫. Performance — দ্রুত CSS
Critical CSS — Render-blocking কমানো Critical
Animation Performance Animation
Font Loading ও FOUT এড়ানো Font
🔷 ৬. Accessibility — সবার জন্য
🔷 ৭. Maintainability — রক্ষণাবেক্ষণযোগ্য CSS
🔷 দ্রুত রেফারেন্স — Best Practice Checklist
| বিভাগ | সেরা অভ্যাস | এড়িয়ে চলো |
|---|---|---|
| Reset | box-sizing: border-box সবসময় |
Browser default-এ ভরসা |
| Font | font-size: 100% :root-এ |
font-size: 16px fix করা |
| Specificity | Class-level Selector ব্যবহার | ID Selector, !important |
| Variable | Magic Number-এর বদলে Variable | Hardcoded মান |
| Animation | transform, opacity |
top, width animate |
| Layout | Flex/Grid | Float-based Layout |
| Naming | BEM বা kebab-case | অর্থহীন নাম (a, b, red) |
| Accessibility | :focus-visible style |
outline: none |
| Motion | prefers-reduced-motion |
Infinite animation সবসময় |
| Maintenance | @layer, Comment | Deep nesting |
প্রতিটি প্রজেক্টে Modern CSS Reset দিয়ে শুরু করো + CSS Variable দিয়ে Design Token তৈরি করো + Specificity কম রাখো — Class-level-এ কাজ করো + Animation-এ শুধু
transform ও opacity +
prefers-reduced-motion সমর্থন করো +
:focus-visible দিয়ে Keyboard navigation সহজ করো।
📱 CSS Responsiveness — সম্পূর্ণ নোট
এই সেকশনে CSS Responsive Design-এর সব বিষয় — Viewport Meta, Media Query, Breakpoint, Mobile-First পদ্ধতি, Fluid Design, Responsive Typography, Responsive Image ও Container Query বিস্তারিত বোঝানো হয়েছে।
🔷 Responsive Design কী?
Responsive Web Design মানে একটি ওয়েবসাইট সব ডিভাইসে — মোবাইল, ট্যাবলেট, ডেস্কটপ — সঠিকভাবে দেখানো। CSS দিয়ে layout, typography ও image স্ক্রিনের আকার অনুযায়ী পরিবর্তন করা হয়।
| পদ্ধতি | কাজ | CSS কৌশল |
|---|---|---|
| Fluid Layout | % ও fr দিয়ে নমনীয় layout | Flexbox, Grid, % |
| Flexible Images | ছবি container-এর চেয়ে বড় হবে না | max-width: 100% |
| Media Query | স্ক্রিনের আকার অনুযায়ী CSS | @media |
| Fluid Typography | Font স্বয়ংক্রিয়ভাবে মাপ বদলায় | clamp() |
| Container Query | Viewport নয়, Parent দেখে | @container |
🔷 ১. Viewport Meta Tag
🔷 ২. Media Query — স্ক্রিন অনুযায়ী CSS
Media Query সিনট্যাক্স Syntax
Breakpoint — Standard স্ক্রিন আকার Breakpoint
🔷 ৩. Mobile-First — ছোট থেকে শুরু
Mobile-First বনাম Desktop-First তুলনা
| বিষয় | Mobile-First (min-width) | Desktop-First (max-width) |
|---|---|---|
| শুরু | মোবাইল style ডিফল্ট | Desktop style ডিফল্ট |
| Media Query | min-width দিয়ে বড়ে | max-width দিয়ে ছোটে |
| Performance | ✅ ভালো — কম override | ❌ বেশি CSS override |
| Priority | ✅ মোবাইল — বেশি ব্যবহারকারী | Desktop — কম ব্যবহারকারী |
| সুপারিশ | ✅ সেরা অভ্যাস | পুরনো প্রজেক্টে |
🔷 ৪. Responsive Layout — বাস্তব Pattern
Responsive Container Container
Responsive Navigation Navigation
Responsive Card Grid Card Grid
Responsive Sidebar Layout Sidebar
Responsive Table Table
🔷 ৫. Responsive Typography — Fluid Font
clamp() — সেরা পদ্ধতি clamp()
Fluid Type Scale System Type Scale
🔷 ৬. Responsive Image
🔷 ৭. Container Query — Component-নির্ভর Responsive
@container — Viewport নয়, Parent Container-এর আকার দেখে
Responsive হয়। একই Component sidebar-এ ছোট, main-এ বড় — স্বয়ংক্রিয়ভাবে।
Container Query বনাম Media Query তুলনা
| বিষয় | Media Query | Container Query |
|---|---|---|
| কী দেখে | Viewport (browser window) | Parent container |
| Component | Context-নির্ভর নয় | Context-নির্ভর ✅ |
| Reusability | সীমিত | উচ্চ ✅ |
| সেরা ব্যবহার | Page-level Layout, Typography | Component-level Responsive |
| Browser | সব ✅ | Chrome 105+, Safari 16+, Firefox 110+ |
🔷 দ্রুত রেফারেন্স — Responsiveness Checklist
| বিভাগ | সেরা অভ্যাস | CSS |
|---|---|---|
| Meta Tag | Viewport Meta অবশ্যই দাও | <meta name="viewport"...> |
| পদ্ধতি | Mobile-First ব্যবহার করো | @media (min-width: ...) |
| Image | সবসময় Responsive করো | max-width: 100%; height: auto |
| Container | Fluid + max-width দাও | width: min(100%, 1280px) |
| Typography | Fluid Font ব্যবহার করো | clamp(min, vw, max) |
| Spacing | Fluid Spacing | clamp(16px, 5vw, 80px) |
| Grid | auto-fill + minmax | repeat(auto-fill, minmax(280px, 1fr)) |
| Table | Horizontal scroll বা Card view | overflow-x: auto |
| Sidebar | Mobile-এ Stack করো | Grid + order |
| Component | Container Query ব্যবহার করো | @container |
| Hero height | dvh ব্যবহার করো | min-height: 100dvh |
| Touch Target | ন্যূনতম 44×44px | min-height: 44px; padding: 12px |
Media Query Breakpoint Reference Breakpoint
| নাম | মান | লক্ষ্য ডিভাইস | Mobile-First |
|---|---|---|---|
| xs | 0px | Small phone (default) | ডিফল্ট CSS |
| sm | 640px | Large phone, Small tablet | @media (min-width: 640px) |
| md | 768px | Tablet | @media (min-width: 768px) |
| lg | 1024px | Laptop | @media (min-width: 1024px) |
| xl | 1280px | Desktop | @media (min-width: 1280px) |
| 2xl | 1536px | Large Desktop | @media (min-width: 1536px) |
সবসময় Viewport Meta Tag দাও + Mobile-First পদ্ধতি (
min-width) ব্যবহার করো +
Image → max-width: 100% +
Font → clamp() দিয়ে Fluid +
Card Grid → repeat(auto-fill, minmax()) +
Hero Height → 100dvh +
Component → @container +
Touch Target → ন্যূনতম 44×44px।
🏗️ CSS Methodologies — সম্পূর্ণ নোট
এই সেকশনে CSS Methodology-এর সব বিষয় — BEM, OOCSS, SMACSS, ITCSS, Utility-First, CSS-in-JS, Sass ও PostCSS — বাস্তব উদাহরণসহ বিস্তারিত বোঝানো হয়েছে। বড় প্রজেক্টে CSS সুশৃঙ্খল ও maintainable রাখার সেরা পদ্ধতি।
🔷 CSS Methodology কী?
CSS প্রজেক্ট বড় হলে class-এর নাম conflict করে, কোড duplicate হয়, কে কোন CSS লিখেছে বোঝা যায় না। CSS Methodology হলো CSS লেখার একটি সুনির্দিষ্ট নিয়ম ও কাঠামো যা কোড পরিষ্কার, পুনর্ব্যবহারযোগ্য ও দলগত কাজে সহজ করে।
| Methodology | মূল ধারণা | সেরা ব্যবহার |
|---|---|---|
| BEM | Block, Element, Modifier দিয়ে নামকরণ | যেকোনো প্রজেক্ট — সবচেয়ে জনপ্রিয় ✅ |
| OOCSS | Structure ও Skin আলাদা, পুনর্ব্যবহার | বড় UI library, Design System |
| SMACSS | CSS ৫ ভাগে ভাগ করা | মাঝারি থেকে বড় প্রজেক্ট |
| ITCSS | Specificity অনুযায়ী স্তরে স্তরে CSS | বড় Enterprise প্রজেক্ট |
| Utility-First | ছোট ছোট utility class দিয়ে design | Tailwind CSS — দ্রুত development ✅ |
| CSS-in-JS | JavaScript-এ CSS লেখা | React, Component-based App |
| Sass / SCSS | CSS-এর উপরে Variable, Nesting, Mixin | যেকোনো প্রজেক্ট — সবচেয়ে বেশি ব্যবহৃত ✅ |
| PostCSS | Plugin দিয়ে CSS Transform করো | Autoprefixer, Build pipeline, Modern CSS |
🔷 ১. BEM — Block Element Modifier
BEM (Block Element Modifier) হলো CSS class-এর নামকরণের একটি নিয়ম। Class-এর নাম দেখেই বোঝা যায় HTML-এ সেটা কোথায় আছে এবং কী কাজ করে।
BEM নামকরণের নিয়ম Syntax
BEM — সম্পূর্ণ বাস্তব উদাহরণ উদাহরণ
BEM-এর সুবিধা ও সীমাবদ্ধতা মূল্যায়ন
| বিষয় | ✅ সুবিধা | ⚠️ সীমাবদ্ধতা |
|---|---|---|
| Class নাম | দেখেই বোঝা যায় — self-documenting | নাম অনেক লম্বা হয় |
| Specificity | সব class একই level — conflict নেই | — |
| Reusability | Block যেকোনো জায়গায় ব্যবহার করো | — |
| Team | দলে সবাই একই নিয়মে লেখে | শিখতে একটু সময় লাগে |
| HTML | Structure স্পষ্ট | HTML-এ অনেক class |
🔷 ২. OOCSS — Object Oriented CSS
OOCSS (Object Oriented CSS) — CSS-কে Object-এর মতো ভাবো। একই CSS বারবার লেখার বদলে পুনর্ব্যবহারযোগ্য class তৈরি করো। দুটি মূল নিয়ম: Structure ও Skin আলাদা করো এবং Container ও Content আলাদা করো।
নিয়ম ১: Structure ও Skin আলাদা নিয়ম ১
নিয়ম ২: Container ও Content আলাদা নিয়ম ২
🔷 ৩. SMACSS — Scalable and Modular Architecture for CSS
SMACSS (Scalable and Modular Architecture for CSS) — CSS ফাইলকে ৫টি ভাগে সাজাও। প্রতিটি ভাগের আলাদা দায়িত্ব আছে। বড় প্রজেক্টে CSS খুঁজে পেতে সহজ হয়।
SMACSS-এর ৫টি Category ৫ ভাগ
| Category | কী থাকে | Prefix / ফাইল | উদাহরণ |
|---|---|---|---|
| Base | Default HTML element style, Reset | prefix নেই | body, h1, p, a, img |
| Layout | Page-এর বড় structure: header, sidebar | l- বা #id |
.l-grid, .l-sidebar |
| Module | পুনর্ব্যবহারযোগ্য UI component | Component নাম | .card, .btn, .modal |
| State | JS দিয়ে পরিবর্তিত অবস্থা | is- |
.is-active, .is-hidden |
| Theme | রঙ, font — চেহারা পরিবর্তন | t- |
.t-dark, .t-large-text |
SMACSS — বিস্তারিত কোড উদাহরণ উদাহরণ
🔷 ৪. ITCSS — Inverted Triangle CSS
ITCSS (Inverted Triangle CSS) — CSS ফাইলগুলো উল্টো ত্রিভুজের মতো ৭টি স্তরে সাজাও। উপরের স্তরে কম specific CSS, নিচে বেশি specific CSS। এতে CSS cascade সমস্যা হয় না।
ITCSS-এর ৭টি স্তর ৭ স্তর
| স্তর | কী থাকে | Specificity | উদাহরণ |
|---|---|---|---|
| 1. Settings | CSS Variable, Color, Font — কোনো CSS output নয় | কোনো নেই | --color-primary: #3b82f6 |
| 2. Tools | Mixin, Function — কোনো CSS output নয় | কোনো নেই | SASS mixin, custom property |
| 3. Generic | Reset, Normalize, box-sizing | খুব কম | *, html, body |
| 4. Elements | Default HTML element style | কম | h1, p, a, img |
| 5. Objects | Layout pattern — চেহারাবিহীন (prefix: o-) | মাঝারি | .o-container, .o-grid |
| 6. Components | UI Component — চেহারাসহ (prefix: c-) | বেশি | .c-card, .c-btn |
| 7. Utilities | Helper class — সর্বোচ্চ priority (prefix: u-) | সর্বোচ্চ | .u-hidden, .u-text-center |
🔷 ৫. Utility-First CSS — Tailwind পদ্ধতি
Utility-First CSS — প্রতিটি CSS property-র জন্য একটি আলাদা class থাকে। HTML-এ এই class গুলো জুড়ে দিয়ে design করো — আলাদা CSS ফাইল লিখতে হয় না। Tailwind CSS এই পদ্ধতির সবচেয়ে জনপ্রিয় উদাহরণ।
Utility Class কীভাবে কাজ করে কীভাবে কাজ করে
Utility-First — বাস্তব উদাহরণ উদাহরণ
Utility-First-এর সুবিধা ও সীমাবদ্ধতা মূল্যায়ন
| বিষয় | ✅ সুবিধা | ⚠️ সীমাবদ্ধতা |
|---|---|---|
| গতি | CSS ফাইল লিখতে হয় না — দ্রুত ✅ | প্রথমে Tailwind class শিখতে হয় |
| Naming | Class-এর নাম ভাবতে হয় না ✅ | HTML অনেক verbose দেখায় |
| CSS আকার | PurgeCSS দিয়ে ছোট Bundle ✅ | Setup ছাড়া বড় CSS ফাইল |
| Design | Design System-এ বাঁধা থাকে ✅ | Custom design-এ override দরকার |
| Reuse | @apply দিয়ে component তৈরি | বারবার একই class লিখতে হয় |
🔷 ৬. CSS-in-JS — JavaScript-এ CSS
CSS-in-JS — JavaScript ফাইলেই CSS লেখো। React Component-এর সাথে CSS একসাথে থাকে। Styled Components ও Emotion সবচেয়ে জনপ্রিয়। Class-এর নাম automatically unique হয় — conflict নেই।
🔷 ৭. SASS / SCSS — CSS Preprocessor
SASS (Syntactically Awesome Style Sheets) হলো একটি CSS Preprocessor — CSS-এর উপরে বসে extra শক্তি দেয়। আমরা SCSS ফাইলে লিখি, compiler সেটাকে সাধারণ CSS-এ রূপান্তর করে। Variable, Nesting, Mixin-সহ CSS লেখা অনেক সহজ ও maintainable হয়।
SASS বনাম SCSS Syntax Syntax পার্থক্য
| বিষয় | SASS (পুরনো) | SCSS (আধুনিক ✅) |
|---|---|---|
| ফাইল Extension | .sass |
.scss |
| Curly Brace {} | নেই — Indentation দিয়ে | আছে — CSS-এর মতো |
| Semicolon ; | নেই | আছে — CSS-এর মতো |
| CSS Compatible | ❌ সরাসরি CSS paste করা যায় না | ✅ যেকোনো CSS সরাসরি কাজ করে |
| জনপ্রিয়তা | কম ব্যবহৃত | সর্বাধিক প্রচলিত ✅ |
Feature ১: Variables — CSS Variable-এর মতো, কিন্তু আরও শক্তিশালী Variable
Feature ২: Nesting — BEM-এর সাথে সুন্দরভাবে কাজ করে Nesting
Feature ৩: Mixin — পুনর্ব্যবহারযোগ্য CSS Block Mixin
Feature ৪: @extend, @function, @each, @for — উন্নত SCSS উন্নত Feature
Feature ৫: Partials ও @use — ফাইল ভাগ করো ফাইল কাঠামো
SASS Install ও Compile করার পদ্ধতি Setup
SASS-এর সুবিধা ও সীমাবদ্ধতা মূল্যায়ন
| বিষয় | ✅ সুবিধা | ⚠️ সীমাবদ্ধতা |
|---|---|---|
| Variable | একবার বদলাও — সব জায়গায় বদলায় | CSS Custom Property-ও এখন একই কাজ করে |
| Nesting | BEM-এর সাথে পরিষ্কার কোড | বেশি deep nesting ↗ specificity সমস্যা |
| Mixin | Responsive, animation — DRY code | অনেক @include ↗ CSS ফাইল বড় হয় |
| Build Step | — | Compile দরকার — সরাসরি browser-এ চলে না |
| Debugging | Source Map দিয়ে সমাধান | Compiled CSS debug করা জটিল |
| Modern CSS | — | CSS Nesting ও Custom Property এখন native-এ আছে |
🔷 ৮. PostCSS — CSS Postprocessor
PostCSS — CSS লেখার পরে JavaScript plugin দিয়ে সেটাকে রূপান্তর করার একটি tool। SASS যেমন লেখার আগে CSS তৈরি করে, PostCSS তেমনি লেখা CSS-কে প্রসেস করে উন্নত করে — vendor prefix যোগ করা, ভবিষ্যতের CSS চালানো, অথবা unused CSS বাদ দেওয়া।
SASS বনাম PostCSS — মূল পার্থক্য তুলনা
| বিষয় | SASS / SCSS | PostCSS |
|---|---|---|
| ধরন | Preprocessor — SCSS → CSS | Postprocessor — CSS → উন্নত CSS |
| ভাষা | নিজস্ব SCSS syntax | সাধারণ CSS লেখো, plugin process করে |
| কাজ | Variable, Mixin, Nesting | Autoprefixer, Future CSS, PurgeCSS |
| নমনীয়তা | নির্দিষ্ট feature set | Plugin দিয়ে যা খুশি যোগ করো ✅ |
| একসাথে? | ✅ হ্যাঁ! SCSS লেখো → PostCSS দিয়ে process করো | |
Plugin ১: Autoprefixer — সবচেয়ে গুরুত্বপূর্ণ Autoprefixer
Plugin ২: postcss-preset-env — ভবিষ্যতের CSS আজই লেখো Future CSS
Plugin ৩: cssnano — CSS Minify করো (Production) Minification
PostCSS Setup — postcss.config.js Setup
Vite + PostCSS + SCSS একসাথে — বাস্তব প্রজেক্ট Setup বাস্তব Setup
জনপ্রিয় PostCSS Plugin-এর তালিকা Plugin তালিকা
| Plugin | কী করে | কখন লাগে |
|---|---|---|
| autoprefixer | Vendor prefix স্বয়ংক্রিয় যোগ করে | সব প্রজেক্টে ✅ |
| postcss-preset-env | Future CSS → Compatible CSS | Modern CSS feature ব্যবহারে ✅ |
| cssnano | CSS Minify — ফাইল ছোট করে | Production Build ✅ |
| postcss-import | @import এক ফাইলে merge করে | Plain CSS project |
| postcss-mixins | CSS-এ Mixin — SCSS ছাড়া | Plain CSS + mixin দরকার হলে |
| postcss-nested | CSS Nesting — SCSS ছাড়া | Plain CSS + nesting দরকার হলে |
| stylelint | CSS-এর Linter — ভুল ধরে | টিম প্রজেক্ট, Code Quality |
| tailwindcss | Tailwind — PostCSS plugin হিসেবে চলে | Tailwind ব্যবহারে ✅ |
নতুন প্রজেক্টে → SCSS দিয়ে লেখো (Variable, Mixin, Nesting) + PostCSS + Autoprefixer দিয়ে process করো (prefix স্বয়ংক্রিয় হবে) + Production-এ cssnano যোগ করো (ফাইল ছোট হবে) + Modern CSS feature লিখতে চাইলে postcss-preset-env ব্যবহার করো + React / Next.js-এ → Tailwind (যা ভেতরে PostCSS চালায়) বা CSS Modules + PostCSS + SASS ও PostCSS একসাথে ব্যবহার করা যায় — এরা পরস্পরের পরিপূরক।
🔷 সব Methodology তুলনা ও কোনটি বেছে নেবে?
| Methodology | Naming | শেখার কষ্ট | টিমে কাজ | React/Component | সেরা প্রজেক্ট |
|---|---|---|---|---|---|
| BEM | .block__el--mod |
কম ✅ | ✅ সহজ | ✅ সম্ভব | যেকোনো প্রজেক্ট — শুরু করার সেরা ✅ |
| OOCSS | Structure + Skin আলাদা class | মাঝারি | ✅ ভালো | ✅ সম্ভব | Design System, UI Library |
| SMACSS | l-, is-, t- |
মাঝারি | ✅ ভালো | ✅ সম্ভব | মাঝারি থেকে বড় প্রজেক্ট |
| ITCSS | o-, c-, u- |
বেশি | ✅ সেরা | ✅ সম্ভব | বড় Enterprise প্রজেক্ট |
| Utility-First | HTML-এ সরাসরি class | মাঝারি (Tailwind) | ✅ সহজ | ✅ সেরা | দ্রুত development, Tailwind প্রজেক্ট ✅ |
| CSS-in-JS | JS component-এ CSS | বেশি | মাঝারি | ✅ React-এর জন্য | React / Next.js App |
| Sass / SCSS | $var, @mixin, & |
কম-মাঝারি ✅ | ✅ সেরা | ✅ সব framework-এ | যেকোনো বড় প্রজেক্ট — BEM-এর সাথে আদর্শ ✅ |
| PostCSS | Plugin-based transform | কম (config মাত্র) | ✅ ভালো | ✅ সব framework-এ | সব প্রজেক্টে — Build pipeline-এ ✅ |
কোন পরিস্থিতিতে কোনটি? সিদ্ধান্ত গাইড
| পরিস্থিতি | সেরা পছন্দ | কারণ |
|---|---|---|
| শিখছি, ছোট প্রজেক্ট | BEM | সহজ, সর্বত্র কাজ করে, শিল্পমান |
| দ্রুত prototype বানাতে চাই | Utility-First (Tailwind) | CSS লিখতে হয় না — সবচেয়ে দ্রুত |
| বড় টিমে কাজ, বড় প্রজেক্ট | Sass + BEM + ITCSS | সুশৃঙ্খল, Variable ও Mixin দিয়ে সহজ |
| React / Next.js App | CSS Modules বা Tailwind | Automatic scope, Component-friendly |
| Design System বানাচ্ছি | Sass + OOCSS + ITCSS | Variable, Mixin ও পুনর্ব্যবহার — সেরা |
| Legacy প্রজেক্ট সংস্কার | SMACSS | আস্তে আস্তে ভাগ করা যায় |
| Browser compatibility দরকার | PostCSS + Autoprefixer | prefix নিজে লিখতে হয় না — স্বয়ংক্রিয় |
| Modern CSS (nesting, oklch) লিখতে চাই | PostCSS preset-env | Draft CSS → পুরনো browser-এও চলে |
Methodology মিশিয়ে ব্যবহার — বাস্তব দলের পদ্ধতি বাস্তব
শুরুতে BEM শেখো — নামকরণ পরিষ্কার হবে + ফাইল সংগঠনে ITCSS-এর ধারণা ব্যবহার করো + JavaScript state-এ
is- prefix (SMACSS) দাও +
Helper class-এ u- prefix (ITCSS) দাও +
Variable, Mixin, Nesting-এর জন্য Sass/SCSS ব্যবহার করো +
Browser prefix-এর জন্য PostCSS Autoprefixer সবসময় চালু রাখো +
Production build-এ cssnano দিয়ে CSS minify করো +
React-এ CSS Modules বা Tailwind ব্যবহার করো +
একটি প্রজেক্টে একটি নিয়মে থাকো — মাঝপথে বদলো না +
টিমে Style Guide লিখে রাখো যাতে সবাই একই নিয়মে লেখে।
📖 CSS Quick Reference — সম্পূর্ণ Property রেফারেন্স
CSS-এর সব গুরুত্বপূর্ণ Property, তাদের সংজ্ঞা, ব্যবহার এবং সংক্ষিপ্ত উদাহরণ — এক জায়গায়।
🔷 Selectors — নির্বাচক
| Selector | সংজ্ঞা | ব্যবহার | সংক্ষিপ্ত উদাহরণ |
|---|---|---|---|
* |
সব element নির্বাচন (Universal) | CSS Reset, box-sizing সব element-এ | * { box-sizing: border-box; } |
element |
নির্দিষ্ট HTML element নির্বাচন | সব p, h1, a-এ style দিতে | p { line-height: 1.6; } |
.class |
নির্দিষ্ট class-এর element নির্বাচন | Component style দিতে | .card { border-radius: 12px; } |
#id |
নির্দিষ্ট id-এর element নির্বাচন | পেজে অনন্য element-এ | #header { position: sticky; } |
A, B |
A অথবা B উভয় নির্বাচন (Group) | একই style একাধিক element-এ | h1, h2, h3 { font-weight: 700; } |
A B |
A-র ভেতরে যেকোনো B (Descendant) | Nested element-এ style | .nav a { color: white; } |
A > B |
A-র সরাসরি সন্তান B (Child) | শুধু সরাসরি সন্তানে | ul > li { list-style: none; } |
A + B |
A-র ঠিক পরের Sibling B (Adjacent) | পরের element-এ style | h2 + p { margin-top: 8px; } |
A ~ B |
A-র পরের সব Sibling B (General) | সব পরবর্তী sibling-এ | h2 ~ p { color: #64748b; } |
[attr] |
নির্দিষ্ট Attribute আছে এমন | Attribute-নির্ভর style | [required] { border-color: red; } |
[attr="val"] |
Attribute-এর মান নির্দিষ্ট | নির্দিষ্ট মানের element | [type="text"] { padding: 10px; } |
[attr*="val"] |
Attribute-এ val আছে | আংশিক মান match করতে | [class*="btn"] { cursor: pointer; } |
:hover |
Mouse উপরে থাকলে | Button, Link hover effect | .btn:hover { opacity: 0.9; } |
:focus |
Element-এ Focus থাকলে | Input, Button focus style | input:focus { border-color: blue; } |
:focus-visible |
Keyboard-এ Focus (Mouse-এ নয়) | Keyboard Accessibility | .btn:focus-visible { outline: 3px solid blue; } |
:active |
ক্লিক করার সময় | Button press effect | .btn:active { transform: scale(0.97); } |
:visited |
পরিদর্শিত Link | দেখা লিংকের রঙ বদলাতে | a:visited { color: purple; } |
:checked |
Checked Checkbox বা Radio | Custom Checkbox style | input:checked + label { color: green; } |
:disabled |
Disabled Form element | Disabled input style | input:disabled { opacity: 0.5; } |
:valid |
সঠিক মানের Input | Form Validation feedback | input:valid { border-color: green; } |
:invalid |
ভুল মানের Input | Error state style | input:invalid { border-color: red; } |
:first-child |
Parent-এর প্রথম সন্তান | প্রথম element আলাদা style | li:first-child { font-weight: 700; } |
:last-child |
Parent-এর শেষ সন্তান | শেষ element-এ border সরানো | li:last-child { border: none; } |
:nth-child(n) |
n-তম সন্তান | Zebra Striping, Stagger | tr:nth-child(even) { background: #f8fafc; } |
:not(selector) |
নির্দিষ্ট selector বাদে বাকি সব | শেষেরটি বাদে Margin | li:not(:last-child) { margin-bottom: 12px; } |
:is(A, B) |
A বা B যেকোনো একটি match | পুনরাবৃত্তি কমানো | :is(h1,h2,h3) a { color: inherit; } |
:where(A, B) |
:is() এর মতো, Specificity = 0 | Reset ও Base style-এ | :where(h1,h2) { margin: 0; } |
:has(B) |
B সন্তান থাকলে Parent নির্বাচন | Parent Selector | .card:has(img) { padding: 0; } |
::before |
element-এর content-এর আগে কাল্পনিক element | Decoration, Icon, Counter | .btn::before { content: "→ "; } |
::after |
element-এর content-এর পরে কাল্পনিক element | Tooltip arrow, Overlay | h2::after { content: ""; display: block; } |
::placeholder |
Input Placeholder-এর style | Placeholder রঙ ও font | input::placeholder { color: #94a3b8; } |
::selection |
Mouse দিয়ে select করা লেখা | Custom Highlight রঙ | ::selection { background: #3b82f6; color: white; } |
::marker |
List-এর বুলেট বা নম্বর | List Marker রঙ ও content | li::marker { color: #3b82f6; } |
🔷 Box Model — বাক্স মডেল
| Property | সংজ্ঞা | ব্যবহার | সংক্ষিপ্ত উদাহরণ |
|---|---|---|---|
width |
Element-এর প্রস্থ | Content area-র প্রস্থ নির্ধারণ | width: 300px; |
height |
Element-এর উচ্চতা | Content area-র উচ্চতা নির্ধারণ | height: 200px; |
min-width |
ন্যূনতম প্রস্থ | Button, Dropdown সর্বনিম্ন প্রস্থ | min-width: 120px; |
max-width |
সর্বোচ্চ প্রস্থ | Container, Image প্রস্থ সীমা | max-width: 1280px; |
min-height |
ন্যূনতম উচ্চতা | Hero section, Card সর্বনিম্ন উচ্চতা | min-height: 100dvh; |
max-height |
সর্বোচ্চ উচ্চতা | Scrollable Dropdown, Modal body | max-height: 300px; |
padding |
Content ও Border-এর মাঝের ভেতরের ফাঁকা জায়গা | Button, Card-এর ভেতরের ফাঁকা জায়গা | padding: 12px 24px; |
padding-top / right / bottom / left |
চার দিকের আলাদা Padding | নির্দিষ্ট দিকে Padding দিতে | padding-top: 20px; |
padding-inline |
বাম-ডান Padding (Logical) | Horizontal Padding একসাথে | padding-inline: 24px; |
padding-block |
উপর-নিচ Padding (Logical) | Vertical Padding একসাথে | padding-block: 16px; |
margin |
Border-এর বাইরে অন্য element-এর সাথে দূরত্ব | Element-এর মাঝে ফাঁকা জায়গা | margin: 0 auto; |
margin-top / right / bottom / left |
চার দিকের আলাদা Margin | নির্দিষ্ট দিকে Margin দিতে | margin-bottom: 24px; |
margin-inline |
বাম-ডান Margin (Logical) | Horizontal centering | margin-inline: auto; |
border |
Element-এর সীমারেখা (Shorthand) | Card, Input-এর border | border: 1px solid #e2e8f0; |
border-width |
Border-এর মোটা | নির্দিষ্ট মোটার border | border-width: 2px; |
border-style |
Border-এর ধরন | solid, dashed, dotted, none | border-style: dashed; |
border-color |
Border-এর রঙ | Border রঙ নির্ধারণ | border-color: #3b82f6; |
border-radius |
Border-এর কোণ গোল করা | Card, Button, Avatar | border-radius: 8px; |
box-sizing |
width/height হিসেবের নিয়ম | border-box: Padding ও Border যোগ করে না | box-sizing: border-box; |
overflow |
কন্টেন্ট উপচে পড়লে কী করবে | hidden, auto, scroll, visible | overflow: hidden; |
overflow-x / overflow-y |
নির্দিষ্ট দিকে overflow নিয়ন্ত্রণ | Responsive Table, Scroll | overflow-x: auto; |
outline |
Border-এর বাইরে রেখা (জায়গা নেয় না) | Focus indicator | outline: 3px solid #3b82f6; |
outline-offset |
Outline ও Border-এর মাঝের ফাঁক | Focus ring সৌন্দর্য | outline-offset: 2px; |
box-shadow |
Element-এর চারপাশে ছায়া | Card, Button Elevation | box-shadow: 0 4px 12px rgba(0,0,0,0.1); |
aspect-ratio |
প্রস্থ ও উচ্চতার অনুপাত | Video, Image Card অনুপাত | aspect-ratio: 16 / 9; |
🔷 Typography — টাইপোগ্রাফি
| Property | সংজ্ঞা | ব্যবহার | সংক্ষিপ্ত উদাহরণ |
|---|---|---|---|
font-family |
লেখার ফন্ট নির্ধারণ | Body, Heading-এর ফন্ট | font-family: 'Inter', system-ui, sans-serif; |
font-size |
লেখার আকার | Heading, Body, Caption আকার | font-size: clamp(1rem, 4vw, 3rem); |
font-weight |
লেখার মোটা (পাতলা-মোটা) | Heading bold, Body normal | font-weight: 700; |
font-style |
লেখার ধরন — italic, normal | উদ্ধৃতি, বিশেষ শব্দ Italic | font-style: italic; |
font-variant |
Small Caps ও অন্যান্য ভিন্নতা | Small-caps Typography | font-variant: small-caps; |
font |
Font-এর সব property Shorthand | এক লাইনে সব font property | font: 700 1.5rem/1.2 'Inter', sans-serif; |
line-height |
লাইনের উচ্চতা (পঙক্তির ফাঁক) | পড়ার উপযোগী spacing | line-height: 1.6; |
letter-spacing |
অক্ষরের মাঝে ফাঁক | Heading, Uppercase Label | letter-spacing: 0.05em; |
word-spacing |
শব্দের মাঝে ফাঁক | Justified লেখায় | word-spacing: 0.1em; |
text-align |
লেখার অনুভূমিক সারিবদ্ধতা | Heading center, Body left | text-align: center; |
text-decoration |
লেখায় রেখা যোগ করা | Link underline সরানো বা যোগ | text-decoration: none; |
text-transform |
লেখার Case পরিবর্তন | uppercase, lowercase, capitalize | text-transform: uppercase; |
text-indent |
অনুচ্ছেদের প্রথম লাইনের ইন্ডেন্ট | বইয়ের মতো Paragraph | text-indent: 2em; |
text-overflow |
লেখা উপচে পড়লে ... দেখানো | Single-line Truncation | text-overflow: ellipsis; |
text-shadow |
লেখার ছায়া | Heading-এ subtle shadow | text-shadow: 0 2px 4px rgba(0,0,0,0.2); |
white-space |
লেখা wrap হবে কিনা ও space রাখবে কিনা | nowrap: একলাইনে, pre: code block | white-space: nowrap; |
word-break |
লম্বা শব্দ কোথায় ভাঙবে | URL, লম্বা লেখা overflow ঠেকানো | word-break: break-word; |
overflow-wrap |
লেখা container-এ না ধরলে ভাঙবে কিনা | URL, Email overflow রোধে | overflow-wrap: break-word; |
vertical-align |
Inline element-এর উল্লম্ব অবস্থান | Icon ও লেখা মেলানো | vertical-align: middle; |
color |
লেখার রঙ | Body, Heading, Link রঙ | color: #1e293b; |
🔷 Color ও Background — রঙ ও ব্যাকগ্রাউন্ড
| Property | সংজ্ঞা | ব্যবহার | সংক্ষিপ্ত উদাহরণ |
|---|---|---|---|
color |
লেখার রঙ | সব লেখার রঙ নির্ধারণ | color: #1e293b; |
background-color |
Element-এর Background রঙ | Card, Button, Section রঙ | background-color: #f8fafc; |
background-image |
Background-এ ছবি বা Gradient | Hero image, Pattern, Gradient | background-image: url("hero.jpg"); |
background-repeat |
Background ছবি বারবার দেখাবে কিনা | no-repeat: একবার, repeat: টাইল | background-repeat: no-repeat; |
background-position |
Background ছবির অবস্থান | center, top, custom position | background-position: center; |
background-size |
Background ছবির আকার | cover: ঢাকা, contain: সম্পূর্ণ | background-size: cover; |
background-attachment |
Scroll করলে Background সরবে কিনা | fixed: Parallax, scroll: সাধারণ | background-attachment: fixed; |
background-clip |
Background কতটুকু এলাকা ঢাকবে | text: Gradient লেখা | background-clip: text; |
background |
সব Background property Shorthand | এক লাইনে সব Background | background: #1a1a2e url("hero.jpg") no-repeat center/cover; |
opacity |
Element-এর স্বচ্ছতা (0=স্বচ্ছ, 1=অস্বচ্ছ) | Hover dim, Disabled state | opacity: 0.8; |
filter |
ভিজ্যুয়াল ইফেক্ট প্রয়োগ | blur, grayscale, brightness ইত্যাদি | filter: grayscale(100%); |
backdrop-filter |
পেছনের কন্টেন্টে ভিজ্যুয়াল ইফেক্ট | Glassmorphism, Frosted Glass | backdrop-filter: blur(12px); |
mix-blend-mode |
Element পেছনের কন্টেন্টের সাথে কীভাবে মিশবে | Duotone, Overlay effect | mix-blend-mode: multiply; |
🔷 Layout — Display ও Position
| Property | সংজ্ঞা | ব্যবহার | সংক্ষিপ্ত উদাহরণ |
|---|---|---|---|
display |
Element কীভাবে পেজে প্রদর্শিত হবে | block, inline, flex, grid, none | display: flex; |
position |
Element পেজে কোথায় থাকবে | static, relative, absolute, fixed, sticky | position: sticky; top: 0; |
top / right / bottom / left |
Positioned Element-এর offset | position: absolute/fixed/sticky-তে | top: 0; right: 0; |
inset |
top, right, bottom, left Shorthand | Overlay তৈরিতে | inset: 0; |
z-index |
Element কোন স্তরে থাকবে | Dropdown, Modal, Tooltip | z-index: 100; |
float |
Element বাম বা ডানে ভাসানো | Image Text Wrap | float: left; |
clear |
Float-এর নিচে নামানো | Float-এর পরে layout ঠিক করা | clear: both; |
visibility |
Element দৃশ্যমান কিনা (জায়গা ধরে রাখে) | hidden: লুকানো কিন্তু জায়গা আছে | visibility: hidden; |
cursor |
Mouse Cursor-এর ধরন | pointer: হাত, not-allowed: নিষিদ্ধ | cursor: pointer; |
pointer-events |
Mouse Event কাজ করবে কিনা | none: ক্লিক অসম্ভব করতে | pointer-events: none; |
user-select |
লেখা Select করা যাবে কিনা | none: Select রোধ করতে | user-select: none; |
resize |
Textarea আকার পরিবর্তন নিয়ন্ত্রণ | none, vertical, horizontal | resize: vertical; |
🔷 Flexbox — নমনীয় Layout
| Property | সংজ্ঞা | ব্যবহার | সংক্ষিপ্ত উদাহরণ |
|---|---|---|---|
display: flex |
Flex Container চালু করা | যেকোনো Row বা Column layout-এ | display: flex; |
flex-direction |
Item সাজানোর দিক | row: পাশাপাশি, column: উপর-নিচ | flex-direction: column; |
flex-wrap |
Item নতুন লাইনে যাবে কিনা | wrap: নতুন লাইন, nowrap: একলাইন | flex-wrap: wrap; |
flex-flow |
flex-direction ও flex-wrap Shorthand | এক লাইনে দুটি property | flex-flow: row wrap; |
justify-content |
Main Axis বরাবর Item সাজানো | center, space-between, flex-end | justify-content: space-between; |
align-items |
Cross Axis বরাবর Item সাজানো | center: মাঝে, stretch: প্রসারিত | align-items: center; |
align-content |
Multi-line Flex Row সাজানো | flex-wrap: wrap থাকলে কাজ করে | align-content: space-between; |
gap |
Item-এর মাঝে ফাঁকা জায়গা | Margin-এর পরিবর্তে Gap | gap: 24px; |
flex-grow |
বাড়তি জায়গা কীভাবে নেবে | 1: সব বাড়তি জায়গা, 0: নেবে না | flex-grow: 1; |
flex-shrink |
জায়গা কম হলে কতটা ছোট হবে | 0: ছোট হবে না, 1: হবে | flex-shrink: 0; |
flex-basis |
Item-এর ভিত্তি আকার | grow/shrink হওয়ার আগের আকার | flex-basis: 200px; |
flex |
grow, shrink, basis Shorthand | flex: 1 = সমান ভাগে বাড়ে | flex: 1; |
order |
Item-এর দৃশ্যমান ক্রম পরিবর্তন | Mobile-এ কন্টেন্ট আগে আনতে | order: -1; |
align-self |
নির্দিষ্ট Item-এর Cross Axis alignment | Container-এর align-items override | align-self: flex-end; |
place-items |
align-items ও justify-items Shorthand | Grid/Flex-এ সম্পূর্ণ Center | place-items: center; |
🔷 CSS Grid — দ্বিমাত্রিক Layout
| Property | সংজ্ঞা | ব্যবহার | সংক্ষিপ্ত উদাহরণ |
|---|---|---|---|
display: grid |
Grid Container চালু করা | যেকোনো 2D Layout-এ | display: grid; |
grid-template-columns |
Grid Column-এর সংখ্যা ও আকার | Card Grid, Page Layout | grid-template-columns: repeat(3, 1fr); |
grid-template-rows |
Grid Row-এর সংখ্যা ও আকার | Fixed height Row তৈরিতে | grid-template-rows: auto 1fr auto; |
grid-template-areas |
Grid-এর নামযুক্ত এলাকা সংজ্ঞায়ন | Page Layout — Header, Sidebar, Main | grid-template-areas: "header header" "sidebar main"; |
grid-area |
Grid Item-কে নামযুক্ত এলাকায় রাখা | grid-template-areas-এর সাথে | grid-area: header; |
grid-column |
Item কোন Column-এ ও কতটুকু জুড়ে | span দিয়ে একাধিক Column জুড়ে | grid-column: 1 / -1; |
grid-row |
Item কোন Row-এ ও কতটুকু জুড়ে | span দিয়ে একাধিক Row জুড়ে | grid-row: span 2; |
gap / row-gap / column-gap |
Grid Track-এর মাঝে ফাঁকা জায়গা | Card-এর মাঝে সমান ফাঁক | gap: 24px; |
justify-items |
Grid Cell-এ Item-এর অনুভূমিক অবস্থান | start, center, end, stretch | justify-items: center; |
align-items |
Grid Cell-এ Item-এর উল্লম্ব অবস্থান | start, center, end, stretch | align-items: start; |
justify-self |
নির্দিষ্ট Item-এর অনুভূমিক অবস্থান | Container-এর justify-items override | justify-self: end; |
align-self |
নির্দিষ্ট Item-এর উল্লম্ব অবস্থান | Sidebar sticky top | align-self: start; |
grid-auto-flow |
Auto-placed Item-এর দিক | row (ডিফল্ট), column, dense | grid-auto-flow: dense; |
grid-auto-columns |
Auto-created Column-এর আকার | Dynamic Column তৈরিতে | grid-auto-columns: 1fr; |
🔷 Transform ও Animation — রূপান্তর ও অ্যানিমেশন
| Property | সংজ্ঞা | ব্যবহার | সংক্ষিপ্ত উদাহরণ |
|---|---|---|---|
transform |
Element ঘোরানো, সরানো, বড়-ছোট করা | Hover lift, Rotate, Scale | transform: translateY(-4px) scale(1.02); |
translate |
Element সরানো (Individual Property) | transform ছাড়াই সরানো | translate: 0 -4px; |
rotate |
Element ঘোরানো (Individual Property) | Dropdown Arrow, Spinner | rotate: 45deg; |
scale |
Element বড়-ছোট (Individual Property) | Hover zoom, Button press | scale: 1.1; |
transform-origin |
Transform-এর কেন্দ্র বিন্দু | কোণ থেকে ঘোরানো | transform-origin: top left; |
perspective |
3D Transform-এর দৃষ্টিকোণ দূরত্ব | Card Flip, 3D effect | perspective: 800px; |
transform-style |
3D-তে সন্তানরা নিজেই 3D হবে কিনা | preserve-3d: Card Flip-এ | transform-style: preserve-3d; |
backface-visibility |
উল্টো দিক দেখা যাবে কিনা | hidden: Card Flip-এ | backface-visibility: hidden; |
transition |
Property পরিবর্তনে মসৃণ animation | Hover, Focus state পরিবর্তন | transition: all 0.3s ease; |
transition-property |
কোন property animate হবে | নির্দিষ্ট property-তে transition | transition-property: transform, opacity; |
transition-duration |
Transition-এর সময়কাল | 200ms: দ্রুত, 500ms: ধীর | transition-duration: 300ms; |
transition-timing-function |
Transition-এর গতির বক্ররেখা | ease, ease-out, cubic-bezier() | transition-timing-function: ease-out; |
transition-delay |
Transition শুরুর আগে অপেক্ষা | Stagger animation-এ | transition-delay: 0.1s; |
animation |
@keyframes Animation চালানো Shorthand | Loader, Skeleton, Hero animation | animation: spin 1s linear infinite; |
animation-name |
@keyframes-এর নাম | কোন @keyframes চলবে | animation-name: fadeIn; |
animation-duration |
Animation-এর সময়কাল | 0.4s: দ্রুত, 2s: ধীর | animation-duration: 0.5s; |
animation-iteration-count |
Animation কতবার চলবে | infinite: অনন্তকাল, 3: তিনবার | animation-iteration-count: infinite; |
animation-direction |
Animation কোন দিকে চলবে | alternate: এগিয়ে-পিছিয়ে | animation-direction: alternate; |
animation-fill-mode |
Animation শেষে কোন style থাকবে | forwards: শেষের style ধরে রাখে | animation-fill-mode: forwards; |
animation-play-state |
Animation চালু বা বন্ধ | paused: Hover-এ থামানো | animation-play-state: paused; |
will-change |
Browser-কে আগাম জানানো কী পরিবর্তন হবে | Performance অপ্টিমাইজেশন | will-change: transform; |
🔷 CSS Variable ও Function — ভেরিয়েবল ও ফাংশন
| Property / Function | সংজ্ঞা | ব্যবহার | সংক্ষিপ্ত উদাহরণ |
|---|---|---|---|
--variable |
CSS Custom Property (Variable) ঘোষণা | Design Token, Theme, Reusable value | --color-primary: #3b82f6; |
var() |
CSS Variable-এর মান ব্যবহার | যেকোনো Property-তে Variable ব্যবহার | color: var(--color-primary); |
calc() |
CSS-এ গণনা — মিশ্র একক সমর্থিত | width: calc(100% - 240px) | width: calc(100% - 2rem); |
min() |
দুটি মানের মধ্যে ছোটটি বেছে নেয় | max-width-এর বিকল্প | width: min(100%, 1280px); |
max() |
দুটি মানের মধ্যে বড়টি বেছে নেয় | min-padding-এর বিকল্প | padding: max(16px, 5%); |
clamp() |
ন্যূনতম, পছন্দের ও সর্বোচ্চ মানের মধ্যে | Fluid Typography, Fluid Spacing | font-size: clamp(1rem, 4vw, 3rem); |
env() |
Device Environment Variable | iPhone Safe Area Inset | padding-bottom: env(safe-area-inset-bottom); |
attr() |
HTML Attribute-এর মান CSS-এ ব্যবহার | content-এ Tooltip, Table label | content: attr(data-tooltip); |
counter() |
CSS Counter-এর মান দেখানো | Numbered List, Step Indicator | content: counter(step) "."; |
rgb() / rgba() |
RGB রঙের মান | রঙ ও স্বচ্ছতা নির্ধারণ | color: rgb(59 130 246 / 0.8); |
hsl() / hsla() |
Hue, Saturation, Lightness রঙের মান | Shade System, Dynamic Theme | color: hsl(220 90% 56%); |
oklch() |
Perceptually uniform আধুনিক রঙ | আধুনিক Design System | color: oklch(0.6 0.2 250); |
color-mix() |
দুটি রঙ নির্দিষ্ট অনুপাতে মেশানো | Hover রঙ, Tint/Shade তৈরি | background: color-mix(in srgb, var(--bg) 85%, black); |
linear-gradient() |
সরল রেখায় রঙের ধাপ | Button, Hero, Overlay | background: linear-gradient(135deg, #3b82f6, #8b5cf6); |
radial-gradient() |
কেন্দ্র থেকে বাইরে রঙের ধাপ | Glow, Spotlight | background: radial-gradient(circle, #3b82f6, transparent); |
conic-gradient() |
শঙ্কু আকারে রঙের ধাপ | Pie Chart, Color Wheel | background: conic-gradient(#3b82f6 30%, #22c55e 70%); |
🔷 Responsive ও Media Query — Responsive Design
| Property / At-Rule | সংজ্ঞা | ব্যবহার | সংক্ষিপ্ত উদাহরণ |
|---|---|---|---|
@media |
নির্দিষ্ট শর্তে CSS প্রযোজ্য | Screen size, Orientation, Preference | @media (min-width: 768px) { } |
@media (min-width) |
নির্দিষ্ট প্রস্থের বেশি হলে — Mobile-First | Tablet ও বড় স্ক্রিনে style | @media (min-width: 1024px) { .grid { columns: 3; } } |
@media (max-width) |
নির্দিষ্ট প্রস্থের কম হলে — Desktop-First | মোবাইলে override | @media (max-width: 640px) { .nav { display: none; } } |
@media (orientation) |
স্ক্রিনের দিক — portrait বা landscape | মোবাইল orientation অনুযায়ী layout | @media (orientation: landscape) { } |
@media (prefers-color-scheme) |
সিস্টেমের Dark বা Light Mode | স্বয়ংক্রিয় Dark Mode | @media (prefers-color-scheme: dark) { } |
@media (prefers-reduced-motion) |
ব্যবহারকারী Motion কমাতে চান কিনা | Animation Accessibility | @media (prefers-reduced-motion: reduce) { } |
@media (hover) |
Mouse আছে কিনা | Touch device-এ hover style বাদ দিতে | @media (hover: hover) { .btn:hover { } } |
@container |
Parent Container-এর আকার অনুযায়ী CSS | Component-level Responsive | @container (min-width: 400px) { .card { flex-direction: row; } } |
container-type |
Element-কে Container হিসেবে ঘোষণা | @container-এর আগে parent-এ | container-type: inline-size; |
@layer |
CSS Cascade Layer সংজ্ঞায়ন | !important ছাড়া CSS override | @layer components { .btn { } } |
@keyframes |
Animation-এর ধাপ সংজ্ঞায়ন | Loader, Skeleton, Hero Animation | @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } |
@font-face |
কাস্টম Font লোড করা | Google Font, Local Font ব্যবহার | @font-face { font-family: 'Inter'; src: url('inter.woff2'); } |
@property |
Typed CSS Variable সংজ্ঞায়ন | Animatable CSS Variable | @property --hue { syntax: "<number>"; inherits: false; initial-value: 220; }
|
🔷 Miscellaneous — বিবিধ Property
| Property | সংজ্ঞা | ব্যবহার | সংক্ষিপ্ত উদাহরণ |
|---|---|---|---|
clip-path |
Element-এর দৃশ্যমান এলাকা কেটে দেওয়া | Circle, Triangle, Polygon আকৃতি | clip-path: circle(50%); |
shape-outside |
Float Element-এর চারপাশে Text Wrap আকৃতি | Magazine-style Image Text Wrap | shape-outside: circle(50%); |
object-fit |
img/video নির্ধারিত আকারে কীভাবে ফিট হবে | cover: ঢাকা, contain: সম্পূর্ণ | object-fit: cover; |
object-position |
object-fit: cover-এ ছবির ফোকাস পয়েন্ট | মুখের ছবিতে উপরে ফোকাস | object-position: top center; |
content |
::before ও ::after-এর কন্টেন্ট | Icon, Counter, Tooltip text | content: attr(data-label); |
counter-reset |
CSS Counter তৈরি বা শূন্যে সেট | Numbered List শুরু করতে | counter-reset: step; |
counter-increment |
প্রতিটি Element-এ Counter বাড়ানো | Step Indicator, Custom OL | counter-increment: step; |
list-style |
List-এর বুলেট বা নম্বরের ধরন Shorthand | none: বুলেট সরানো, Navigation | list-style: none; |
list-style-type |
বুলেট বা নম্বরের ধরন | disc, decimal, lower-alpha | list-style-type: decimal; |
list-style-position |
বুলেট ভেতরে না বাইরে | inside: ভেতরে, outside: বাইরে | list-style-position: inside; |
columns |
Multi-column Layout Shorthand | পত্রিকার মতো Column Layout | columns: 3 280px; |
column-gap |
Multi-column Layout-এর Column ফাঁক | Column-এর মাঝে ফাঁকা জায়গা | column-gap: 32px; |
column-rule |
Column-এর মাঝে বিভাজক রেখা | Multi-column বিভাজক | column-rule: 1px solid #e2e8f0; |
break-inside |
Item দুই Column-এ ভাঙবে কিনা | avoid: ভাঙবে না | break-inside: avoid; |
writing-mode |
লেখার প্রবাহের দিক | Vertical Label, Japanese text | writing-mode: vertical-rl; |
direction |
লেখার দিক — LTR বা RTL | আরবি, হিব্রু ভাষায় | direction: rtl; |
scroll-behavior |
Anchor Link-এ Scroll-এর ধরন | smooth: মসৃণ Scroll | scroll-behavior: smooth; |
scroll-snap-type |
Scroll করলে নির্দিষ্ট বিন্দুতে আটকানো | Carousel, Full-page Scroll | scroll-snap-type: x mandatory; |
scroll-snap-align |
Snap হওয়ার বিন্দু নির্ধারণ | start, center, end | scroll-snap-align: start; |
isolation |
নিজস্ব Stacking Context তৈরি | isolate: z-index সমস্যা সমাধান | isolation: isolate; |
contain |
Layout Isolation — Performance | layout, paint, strict | contain: layout; |
content-visibility |
Viewport-এর বাইরে Render না করা | Long Page-এ Performance | content-visibility: auto; |
appearance |
Native Browser UI সরানো | Custom Form Element তৈরিতে | appearance: none; |
caret-color |
Input-এর Text Cursor রঙ | Custom Input Cursor রঙ | caret-color: #3b82f6; |
accent-color |
Checkbox, Radio, Range-এর Accent রঙ | Native Form Element Theme | accent-color: #3b82f6; |
touch-action |
Touch Gesture নিয়ন্ত্রণ | none: Default gesture বন্ধ | touch-action: pan-y; |
🔷 Color Formats — রঙের ফরম্যাট Reference
| ফরম্যাট | সংজ্ঞা | Alpha সমর্থন | উদাহরণ |
|---|---|---|---|
| Named Color | ইংরেজি নামে রঙ (১৪০+) | না | color: tomato; |
| Hex | #RRGGBB — ১৬ ভিত্তিক রঙ | না | color: #3b82f6; |
| Hex Short | #RGB — সংক্ষিপ্ত Hex | না | color: #fff; |
| Hex Alpha | #RRGGBBAA — Alpha সহ Hex | হ্যাঁ ✅ | color: #3b82f680; |
| rgb() | লাল, সবুজ, নীল — 0–255 | না | color: rgb(59 130 246); |
| rgba() / rgb() + Alpha | RGB + Alpha স্বচ্ছতা | হ্যাঁ ✅ | color: rgb(0 0 0 / 0.5); |
| hsl() | Hue, Saturation, Lightness | না | color: hsl(220 90% 56%); |
| hsla() / hsl() + Alpha | HSL + Alpha স্বচ্ছতা | হ্যাঁ ✅ | color: hsl(220 90% 56% / 0.8); |
| hwb() | Hue, Whiteness, Blackness | হ্যাঁ ✅ | color: hwb(220 10% 0%); |
| oklch() | Perceptually uniform — Lightness, Chroma, Hue | হ্যাঁ ✅ | color: oklch(0.6 0.2 250); |
| oklab() | Perceptually uniform — Lightness, a, b | হ্যাঁ ✅ | color: oklab(0.6 -0.1 0.1); |
| lch() | Lightness, Chroma, Hue (Lab-based) | হ্যাঁ ✅ | color: lch(50 40 250); |
| color() | নির্দিষ্ট Color Space-এ রঙ | হ্যাঁ ✅ | color: color(display-p3 0.5 0.2 0.8); |
| color-mix() | দুটি রঙ নির্দিষ্ট অনুপাতে মেশানো | হ্যাঁ ✅ | color: color-mix(in srgb, #3b82f6 80%, white); |
| currentColor | বর্তমান color property-র মান | — | border-color: currentColor; |
| transparent | সম্পূর্ণ স্বচ্ছ রঙ | — | background: transparent; |
🔷 CSS Units — একক Reference
| একক | সংজ্ঞা | ব্যবহার | উদাহরণ |
|---|---|---|---|
px |
Pixel — নির্দিষ্ট আকার | Border, Shadow, Icon | border: 1px solid; |
rem |
Root font-size-এর গুণ | Font, Spacing — সেরা ✅ | font-size: 1.5rem; |
em |
Parent font-size-এর গুণ | Padding, Margin — font-এর সাথে | padding: 0.75em 1.5em; |
% |
Parent-এর আকারের শতাংশ | Width, Fluid Layout | width: 50%; |
vw |
Viewport প্রস্থের ১% | Full-width Section, Fluid Font | font-size: 5vw; |
vh |
Viewport উচ্চতার ১% | Full-screen Hero | height: 100vh; |
dvh |
Dynamic Viewport উচ্চতা | মোবাইলে Hero — সেরা ✅ | min-height: 100dvh; |
svh |
Small Viewport উচ্চতা | মোবাইলে নিরাপদ | min-height: 100svh; |
fr |
Grid-এ বাকি জায়গার ভাগ | CSS Grid Column/Row | grid-template-columns: 1fr 2fr; |
ch |
"0" অক্ষরের প্রস্থ | Reading Width, Input | max-width: 65ch; |
cqw |
Container প্রস্থের ১% | Container Query Unit | font-size: 5cqw; |
deg |
ডিগ্রি — কোণ পরিমাপ | rotate, gradient direction | rotate: 45deg; |
turn |
চক্কর — ১ = ৩৬০° | Spinner Animation | rotate: 0.5turn; |
s / ms |
Second / Millisecond — সময় | Transition, Animation duration | transition-duration: 300ms; |
