Sobes.tech
Junior

What is a box model, what does it consist of, and what are its types?

sobes.tech AI

Answer from AI

The CSS Box Model is an abstract concept that describes how HTML elements are represented on a page as rectangular blocks. It defines the size and position of the content, padding, borders, and margins of an element.

The box model consists of the following parts:

  • Content: The content of the element (text, images, etc.). Its size is determined by the width and height properties.
  • Padding: The space between the content of the element and its border. It is defined by the padding-top, padding-right, padding-bottom, padding-left properties or the shorthand padding property.
  • Border: The border around the padding and content. It is defined by the border-width, border-style, border-color properties or the shorthand border property.
  • Margin: The space between the element's border and external elements. It is defined by the margin-top, margin-right, margin-bottom, margin-left properties or the shorthand margin property.

There are two main types of box models, determined by the box-sizing property:

  • content-box (default value): The width and height of the element, set by width and height, only refer to the content area. Padding and border are added to these sizes, increasing the overall size of the element.
    div {
      width: 100px;
      height: 100px;
      padding: 10px; /* Adds 20px to the total size on each axis */
      border: 2px solid black; /* Adds 4px to the total size on each axis */
      box-sizing: content-box; /* Default behavior */
    }
    /* The total size of the element will be 124px by 124px */
    
  • border-box: The width and height of the element, set by width and height, include the content, padding, and border. Padding and border do not increase the overall size but "shrink" the content area.
    div {
      width: 100px;
      height: 100px;
      padding: 10px; /* Included in total width/height */
      border: 2px solid black; /* Included in total width/height */
      box-sizing: border-box;
    }
    /* The total size of the element will be 100px by 100px */
    

border-box is often used for more predictable sizing behavior when adding padding and borders. This is convenient, for example, when creating responsive layouts where elements should occupy a certain percentage of width.