Mastering the CSS Box Model and Specificity


.
🔹 The CSS Box Model (Refresher)
Every element in CSS is treated as a box made up of:
Content → Text, image, or element inside.
Padding → Space inside the element (between content and border).
Border → Surrounds padding + content.
Margin → Space outside the element (between this box and others).
🔹 How Margin and Padding Behave Differently
1. Effect on Size
Padding increases the visual size of the element because it adds space inside the box.
Margin doesn’t change the element’s size but pushes other elements away.
Example:
.box1 {
width: 200px;
padding: 20px; /* adds 40px total width */
}
.box2 {
width: 200px;
margin: 20px; /* does not increase element size */
}
2. Collapsing Margins
When two vertical margins meet (like between two paragraphs), they collapse into one instead of adding together.
Example:
p {
margin: 20px 0;
}
If two <p>
elements are stacked, the space between them will be 20px, not 40px.
👉 Padding never collapses — it always adds.
3. Inline vs Block Elements
Padding & margin apply differently to inline elements (like
<span>
) vs block elements (like<div>
).Inline elements only respect left & right padding/margin (not vertical, unless line-height changes).
Block elements respect all four sides.
🔹 Use Cases of Margin vs Padding
✅ Use Padding When:
You want space inside a button, card, or box.
Example: Button padding makes it clickable and visually balanced.
.button {
padding: 10px 20px; /* space inside button */
background: blue;
color: white;
}
✅ Use Margin When:
You want space between elements (separating sections, cards, images, etc.).
Example: Creating spacing between multiple cards.
.card {
margin: 20px; /* space outside each card */
padding: 15px; /* space inside card */
border: 1px solid #ddd;
}
✅ Combined Example (Navbar)
.navbar {
background: #333;
padding: 10px 20px; /* spacing inside navbar */
}
.navbar a {
margin-right: 15px; /* spacing between links */
color: white;
text-decoration: none;
}
👉 Padding creates breathing space inside the navbar, margin separates the links.
🔹 Box Model in Layouts
1. Card Layout
Padding → inside card (content spacing).
Margin → space between cards.
2. Form Layout
Padding → inside input fields (so text isn’t touching the edge).
Margin → spacing between form fields.
3. Grid / Flexbox
Padding → to create space within each grid item.
Margin → to create space between grid items.
🔹 Pro Tips
- Use
box-sizing: border-box;
→ ensures padding and border are included in the element’s width & height (avoids unexpected size growth).
* {
box-sizing: border-box;
}
Use padding for internal spacing and margin for external spacing.
Be mindful of collapsing margins in vertical layouts.
Subscribe to my newsletter
Read articles from prashant chouhan directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
