Understanding the box model
<<<<<<< HEAD
Let's get started
=======
Intro
One of the best ways to control your website's design and functionality is CSS.
CSS β or Cascading Style Sheets β enables you to make stylistic changes to your web page layouts and to the elements on those pages to ultimately improve your site's look and feel. Before you do so, you need to first understand one of the most fundamental principles of web design: the CSS box model.
What is the box model in CSS?
The box model in CSS is a set of rules that determine how your web page is rendered on the internet. In this model, a rectangular box is generated for HTML elements. Each is laid out according to their dimension, type, positioning, relationship to other elements, and external factors like viewport size. This box consists of content, padding, a border, and margin.
Kindly preview this code
This means any web page you see is actually made up of elements wrapped in rectangular boxes and arranged in relation to each other. These elements can exist beside, above, below, and within each other, depending on the type of element they are.
There are two types of HTML elements: block-level elements and inline elements. Let's take a closer look at each below.
Block-Level Elements
By default, block-level elements start on a new line and take up 100% of the space available β which might be the full width of the viewport or of its container if itβs inside another element. Since they start on a new line by default, block-level elements break the flow of the document.
As mentioned before, block-level elements can contain other elements, including inline elements and other block-level elements. For example, a div element can contain a heading, paragraph, or another div element.
With the padding, border, and margin properties applied to a block-level element, other elements will be forced away from the box around the element. As a result of this β and the fact that they span the full width of their container β block-level elements take up more space than inline elements and can therefore create larger structures.
Of course, the width and height of these elements can be specified in CSS to take up less space.
Block-level elements include the following:
Inline Elements
By default, inline elements do not begin on a new line or take up the full width of the viewport. In fact, width and height properties do not apply. Unlike block-level elements, inline elements do not break the flow of the document.
Inline elements can contain other inline elements and data, but not block-level elements. For example, a paragraph element can contain an emphasis element β but not a heading element.
If the padding, border, and margin properties are applied vertically, then other inline boxes will not be forced away from the box around the element. If the padding, border, and margin properties are applied horizontally however, then other inline elements will be forced away from the box around the element.
Inline level elements include:
CSS Box Model Examples
Now, letβs examine the CSS box model in action with these CSS box model examples. Each example focuses on a specific layer of the box, moving from the inside out. We'll start with the content area.
Content Area Example
The innermost rectangle, known as the content area, may contain text or other visual elements.
Its dimensions are the content width and content height. When specified, the width and height attributes determine the content edge or perimeter of the content box. Often, the width and height aren't specified so the rendered content determines the content edge. In other words, the content area is only as wide and as at all as it needs to be to hold the content, which might be as little as one word. If the element is a block element, then the content edge can also be set with the min-width, max-width, min-height, and max-height properties.
Let's look at an example of a standard CSS box model.
In a standard CSS box model, the height and width attribute are specified. This determines the size of the content area. If the padding, border, and margin properties are also specified, then they must be added to the width and height to calculate the total size of the element.
Say you specify the content width to 400px and add 30px padding, 10px border, and 10px margin. Then the total width of the box is 500. You get that total by adding the content-width, padding-left and padding-right, border-left and border-right, and margin-left and margin-right (400 + 30 + 30 + 10 + 10 + 10 + 10). The total height of the box is 250. You get that by adding the content-height, padding-top and padding-bottom, border-top and border-bottom, and margin-top and margin-bottom (150 + 30 + 30 + 10 + 10 + 10 + 10).
Here's the CSS:
Here's the HTML:
Here's the result: run the code to see the result
Padding Example
Padding is the space between the border and content of an element. Padding is an important element in web design because it helps make content more visible and readable.
An element's padding can be defined with the following properties: padding-top, padding-bottom, padding-left, padding-right, or the shorthand property padding.
If you'd like to add the same amount of padding on all four sides of the content area, then you can set the shorthand padding property with one value. If you'd like to set different amounts of padding, then you can use the long-form method. Let's use both methods in the example below.
Here's the HTML:
Here's the CSS:
Here's the result: run to view the result
Borders Example
The border property lets us add and style a line around the content padding area. The thickness, color, style of this line can be defined by the border-width, border-color, and border-style properties, or you can use the shorthand border property to define all three. Border-style values include solid, dotted, dashed, double, groove, ridge, and none.
The dimensions of the border area are the border-box width and border-box height. When specified, the width and height attributes determine the perimeter of the border area. If the box-sizing property is set to border-box, you can also define the border size with min-width, max-width, min-height, and max-height.
Let's use the max-width and min-height properties in the example below. We'll also use as many properties and values as possible to show the versatility of the border area.
Here's the CSS:
Here's the HTML:
Here's the result: run to view the result
Margins Example
The margin is the empty space separating the element from its neighbors, and the outermost layer of the CSS box model. Its dimensions are the margin-box width and the margin-box height.
Its size can be defined by the following properties: the margin-left, margin-right, margin-top, margin-bottom properties or the shorthand margin property.
If the shorthand property is used, and only one value is defined, then it applies to all sides of the element. If two values are defined, then the first value represents the top and bottom margins and the second represents the right and left margins. If three values are defined, the first value represents the top margin, the second represents the left and right, and the fourth represents the bottom margin. If four values are defined, they represent the top, right, bottom, and left, respectively.
Before we dive into an example, you may realize that margins and padding seem similar. In case you get confused what the right option is for a certain element or layout, consider the following key differences between CSS margin and padding:
-Margin is the space outside of the border area, whereas padding is the space inside the border area. -Margin backgrounds are always transparent, whereas the background of the padding area of a box is specified by the background property of the element. -When increased, margins increase the gap between an element and any adjacent elements. When increased, padding increases the size of the element. -In CSS, adjoining margins of two or more boxes can combine to form a single "collapsed" margin. While margin areas can collapse vertically, padding areas cannot.
Box Model Without A Collapse Margin
Kindly preview
Box Model With A Collapse Margin
Kindly preview
To read more about Css box model, click here
d05fd124de4a37b05860bda1b0e62ba5ee9fbb1b