CSS Box Model

CSS Box Model is a fundamental concept in web design that determines how elements are rendered and sized on a web page. It encompasses the layout and sizing of elements, including content, padding, border, and margin. Mastery of the box model is essential for creating well-designed and responsive layouts.

Overview of the CSS Box Model

The CSS Box Model describes the rectangular boxes generated for elements in the document tree. Each box consists of four parts:

  • Content: The actual content of the box, such as text or an image.
  • Padding: Space between the content and the border, providing inner spacing.
  • Border: A line surrounding the padding (if any) and content, defining the edge of the box.
  • Margin: Space outside the border, separating the element from adjacent elements.

Diagram of the Box Model

css
+------------------------------------------+
|        Margin                            |
|      +-----------------------------+     |
|      |      Border                 |     |
|      |      +---------------+      |     |
|      |      |   Padding     |      |     |
|      |      |  +---------+  |      |     |
|      |      |  | Content |  |      |     |
|      |      |  +---------+  |      |     |
|      |      |               |      |     |
|      |      +---------------+      |     |
|      |                             |     |
|      +-----------------------------+     |
|                                          |
+------------------------------------------+

CSS Box Model Properties

Content

The content area is where the actual content of the element is displayed. Its size can be controlled using the width and height properties.

Padding

Padding is the space between the content and the border. It can be set uniformly for all sides or individually for each side.

Syntax

css
element {
    padding: value; /* All sides */
    padding-top: value; /* Top side */
    padding-right: value; /* Right side */
    padding-bottom: value; /* Bottom side */
    padding-left: value; /* Left side */
}

Example

html
<!DOCTYPE html>
<html>

<head>
    <style>
        .padding-example {
            padding: 20px;
            background-color: #4CAF50;
            color: white;
        }
    </style>
</head>

<body>
    <div class="padding-example">
        This div has 20px padding 
        on all sides.
    </div>
</body>

</html>

CSS Border

The border surrounds the padding (if any) and content. You can set the border width, style, and color.

Syntax

css
element {
  border: width style color;
  border-top: width style color; /* Top border */
  border-right: width style color; /* Right border */
  border-bottom: width style color; /* Bottom border */
  border-left: width style color; /* Left border */
}

Example

html
<!DOCTYPE html>
<html>

<head>
    <style>
        .border-example {
            border: 5px solid #FFC107;
            padding: 20px;
        }
    </style>
</head>

<body>
    <div class="border-example">
        This div has a 5px solid border.
    </div>
</body>

</html>

CSS Margin

Margin is the space outside the border, creating distance between the element and its neighbors. Like padding, margins can be set for all sides or individually.

Syntax

css
element {
  margin: value; /* All sides */
  margin-top: value; /* Top side */
  margin-right: value; /* Right side */
  margin-bottom: value; /* Bottom side */
  margin-left: value; /* Left side */
}

Example

html
<!DOCTYPE html>
<html>

<head>
    <style>
        .margin-example {
            margin: 30px;
            background-color: #2196F3;
            color: white;
            padding: 20px;
        }
    </style>
</head>

<body>
    <div class="margin-example">
        This div has a 30px margin 
        on all sides.
    </div>
</body>

</html>

CSS Combining Padding, Border, and Margin

When combining padding, border, and margin, it's essential to understand how they interact with each other to create the desired layout.

Example

html
<!DOCTYPE html>
<html>

<head>
    <style>
        .combined-box {
            width: 300px;
            padding: 15px;
            border: 2px solid #FF5722;
            margin: 25px;
            background-color: #FFC107;
        }
    </style>
</head>

<body>
    <div class="combined-box">
        This box combines padding, 
        border, and margin.
    </div>
</body>

</html>

CSS Box Model Calculation

The total width and height of an element are calculated as follows:

  • Total Width = width + padding-left + padding-right + border-left + border-right + margin-left + margin-right
  • Total Height = height + padding-top + padding-bottom + border-top + border-bottom + margin-top + margin-bottom

Example

html
<!DOCTYPE html>
<html>

<head>
    <style>
        .box-model-calculation {
            width: 200px;
            height: 100px;
            padding: 20px;
            border: 5px solid #009688;
            margin: 30px;
            background-color: #4CAF50;
            color: white;
        }
    </style>
</head>

<body>
    <div class="box-model-calculation">
        This box's total size is the sum of 
        width, padding, border, and margin.
    </div>
</body>

</html>

CSS box-sizing Property

The box-sizing property controls how the width and height of elements are calculated. There are two main values:

  • content-box (default): Width and height apply only to the content box. Padding and border are added to the total size.
  • border-box: Width and height include content, padding, and border, making sizing more intuitive.

CSS Syntax

css
element {
  box-sizing: content-box; /* Default */
  box-sizing: border-box; /* Includes padding and border */
}

Example

html
<!DOCTYPE html>
<html>

<head>
    <style>
        .box-sizing-example {
            width: 200px;
            padding: 20px;
            border: 5px solid #FF5722;
            box-sizing: border-box;
            background-color: #FFC107;
            color: white;
        }
    </style>
</head>

<body>
    <div class="box-sizing-example">
        This box uses border-box sizing, 
        making its total width 200px.
    </div>
</body>

</html>

CSS

1814

795

Related Articles