Responsive Design
Responsive Units
%, vw/vh, clamp()
💡 Fixed units (px) ek fixed-size photo frame jaisa hai — chahe deewar badi ho ya chhoti, frame same size. Responsive units (%, vw, clamp()) ek elastic frame jaisa hai — deewar ke size ke hisaab se khud adjust ho jaata hai.
% parent element ke relative. vw/vh viewport ke relative. clamp(min, preferred, max) ek modern, POWERFUL function hai — value ek range mein rehta hai (min se max ke beech), preferred value viewport ke hisaab se scale karta hai — bina media queries ke fluid typography/spacing.
.fluid-heading {
font-size: clamp(1.5rem, 4vw, 3rem);
/* Minimum 1.5rem, Maximum 3rem,
beech mein screen width ke hisaab se smoothly scale karta hai */
}
.responsive-width {
width: clamp(300px, 50%, 600px);
/* Kabhi 300px se chhota nahi, 600px se bada nahi,
beech mein 50% follow karta hai */
}📏
Fixed units (px) ek fixed-size photo frame jaisa hai — chahe deewar badi ho ya chhoti, frame same size. Responsive units (%, vw, clamp()) ek elastic frame jaisa hai — deewar ke size ke hisaab se khud adjust ho jaata hai.
1 / 2
⚡ Quick Recap
- % = parent-relative, vw/vh = viewport-relative
- clamp(min, preferred, max) = fluid, bounded scaling
- clamp() se bina media queries ke responsive typography possible hai
On this page (2 subtopics)
min()/max() CSS functions multiple values compare karke smallest/largest choose karte hain — clamp() jaisa hi concept, lekin simpler two-value cases ke liye.
.container {
width: min(90%, 1200px);
/* 90% width le, LEKIN 1200px se zyada kabhi nahi
— chhoti screens par 90%, badi screens par capped */
}
.text {
font-size: max(16px, 2vw);
/* Kam se kam 16px, bada screen par 2vw follow kare */
}Tip: min()/max() clamp() ke "building blocks" hain — clamp(MIN, PREF, MAX) actually max(MIN, min(PREF, MAX)) ke equivalent hai internally.
Container queries (@container) modern CSS feature hai — media queries VIEWPORT size check karti hain, container queries apne PARENT CONTAINER ki size check karti hain. Isse truly reusable, context-aware components ban sakte hain.
.card-container {
container-type: inline-size;
}
@container (min-width: 400px) {
.card {
display: flex; /* container 400px se bada ho to horizontal layout */
}
}
/* Same .card component, sidebar mein chhota to vertical,
main area mein bada to horizontal — automatically! */Tip: Container queries relatively new hain (2023+ browser support) — bade design systems mein bahut powerful, kyunki ek hi component har jagah "context-aware" responsive ho sakta hai, viewport size se independent.