← Back to CSS Course | Chapter 3: Box Model | Lesson 5 of 7

CSS Box Model

यहाँ एक secret है जो हर CSS developer आख़िरकार सीखता है: किसी page का हर एक HTML element secretly एक rectangular box है। Text, images, buttons, पूरे sections, ये सभी अंदर से boxes हैं, और box model यह rulebook है कि इनमें से हर box असल में कितना बड़ा है। चार layers की कल्पना करें, एक picture frame की तरह एक-दूसरे के अंदर nested: बीच में content, उसके चारों ओर padding, padding के चारों ओर एक border, और सबसे बाहरी layer के रूप में margin जो पूरे box को उसके पड़ोसियों से अलग करता है। box-sizing property फिर तय करती है कि padding और border किसी element की declared width में गिने जाएँ, या उसके ऊपर जोड़े जाएँ। एक बार जब box model समझ आ जाता है, तो cookiescursor.com जैसी किसी असली site पर बहुत सारा confusing layout behavior अचानक पूरी तरह समझ में आने लगता है।
Syntax
css
selector {
  width: length;
  padding: length;
  border: width style color;
  margin: length;
}

Box Model की चार Layers

हर element बीच में content, content के चारों ओर padding, padding के चारों ओर एक border, और सबसे बाहरी layer के रूप में margin से बना होता है। ये चारों layers मिलकर page पर किसी element का total footprint तय करती हैं।

Note:
  • एक framed photo की कल्पना करें:
  • photo content है
  • उसके चारों ओर mat padding है
  • frame खुद border है
  • frame के आस-पास की wall space margin है।
Warning: यह भूलना आसान है कि margin पूरी तरह border के बाहर बैठता है और उसका अपना कभी कोई background color या visible edge नहीं होता।

उदाहरण: The Four Layers of the Box Model

css
<style>
.box {
  padding: 20px;
  border: 5px solid black;
  margin: 20px;
  background: lightyellow;
}
</style>
<div class="box">Content, padding, border, margin</div>

Browsers Total Width कैसे Calculate करते हैं

Default रूप से, आपकी declare की गई width और height सिर्फ content box को describe करती हैं। Padding और border इसके ऊपर जुड़ते हैं, इसलिए किसी element का final rendered size अक्सर सिर्फ उसकी declared width से बड़ा होता है।

Note: Default रूप से किसी element की असली rendered width जानने के लिए, जोड़ें: width + left padding + right padding + left border + right border।
Warning: यह default behavior unexpected layout overflow का एक बहुत common कारण है, खासतौर पर multi-column grids में।

उदाहरण: How Browsers Calculate Total Width

css
<style>
.box {
  width: 200px;
  padding: 20px;
  border: 5px solid black;
  background: lightyellow;
}
</style>
<div class="box">Renders wider than 200px: content + padding + border</div>

box-sizing: content-box (default)

content-box, box-sizing की default value है। इसका मतलब है कि आपकी set की गई width और height सिर्फ content area पर लागू होती हैं, और उसके ऊपर padding और border जुड़ते हैं।

Note:
  • आपको शायद ही कभी 'box-sizing: content-box' explicitly लिखने की ज़रूरत पड़े क्योंकि यह पहले से ही browser default है, यह ज़्यादातर एक comparison के तौर पर जानना उपयोगी है।
  • Accepted values:
  • content-box — width और height सिर्फ content पर लागू होती हैं (initial value)
  • border-box — width और height में padding और border शामिल होते हैं
  • inherit | initial | unset | revert — हर property द्वारा accepted CSS-wide keywords
Warning: क्योंकि content-box चुपचाप default है, कई layout bugs इसी बात पर वापस जाते हैं कि developers को यह नहीं पता कि यह behavior active है।

उदाहरण: box-sizing: content-box (the default)

css
<style>
.box {
  box-sizing: content-box;
  width: 200px;
  padding: 20px;
  background: lightyellow;
  border: 2px solid #cc9900;
}
</style>
<div class="box">200px is just the content area</div>

box-sizing: border-box

box-sizing को border-box set करना declared width और height में padding और border को शामिल कर देता है, इसलिए element का final rendered size हमेशा उससे match करता है जो आपने असल में type किया था।

Note:
  • कई developers किसी project की stylesheet में सबसे ऊपर एक बार '* { box-sizing: border-box; }' set कर देते हैं, ताकि हर element default रूप से predictably behave करे।
  • Accepted values:
  • content-box — width और height सिर्फ content पर लागू होती हैं (initial value)
  • border-box — width और height में padding और border शामिल होते हैं
  • inherit | initial | unset | revert — हर property द्वारा accepted CSS-wide keywords
Warning: किसी मौजूदा project के बीच में box-sizing बदलना उन layouts को shift कर सकता है जो पुराने default के आस-पास बनाए गए थे, इसलिए इसे जल्दी और consistently बदलें।

उदाहरण: box-sizing: border-box

css
<style>
.box {
  box-sizing: border-box;
  width: 200px;
  padding: 20px;
  background: lightyellow;
  border: 2px solid #cc9900;
}
</style>
<div class="box">200px now includes the padding</div>

DevTools में Box Model को Visualize करना

हर modern browser का DevTools Elements या Inspector panel में एक visual box model diagram शामिल करता है, जो currently selected element पर content, padding, border, और margin की exact pixel values दिखाता है।

Note: जब कोई layout गलत दिखे, तो पहले DevTools खोलें और box model diagram check करें, यह आमतौर पर मिस्ट्री को सेकंडों में समझा देता है।
Warning: Box model diagram live, computed values दिखाता है, जो आपकी raw CSS से अलग हो सकती हैं अगर कोई और rules या inheritance उस element को असर कर रहे हों।

उदाहरण: Visualizing the Box Model in DevTools

css
<style>
.box {
  width: 150px;
  padding: 10px;
  border: 2px solid black;
  margin: 15px;
}
</style>
<div class="box">Open DevTools and inspect this box's model diagram</div>
Live Example
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. यह भूल जाना कि padding और border default रूप से किसी element की total width में जुड़ते हैं, जिससे layouts उम्मीद से wider हो जाते हैं।
  2. globally box-sizing: border-box set न करना, जिससे किसी project में unpredictable width calculations होती हैं।
  3. spacing issues debug करते समय margin (border के बाहर) को padding (border के अंदर) के साथ confuse करना।
चैप्टर सारांश
  • हर HTML element चार layers से बना एक box है: content, padding, border, और margin।
  • Default रूप से, padding और border किसी element की declared width और height में जुड़ते हैं।
  • box-sizing: border-box इसे बदल देता है, इसके बजाय padding और border को declared width के अंदर शामिल करता है।
ब्राउज़र सपोर्ट

CSS box model और box-sizing property हर modern browser में supported हैं।

🔒

Chapter Quiz — Complete all 7 topics to unlock

0/7 topics done

Complete these topics first:

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.