Table of Contents
What is the CSS box model?
box-sizing
display
3. The difference?
Margin (margin) collapse
What will happen
be solved?
Home Web Front-end CSS Tutorial What is margin collapse? Under what circumstances does it appear? How to deal with it?

What is margin collapse? Under what circumstances does it appear? How to deal with it?

Aug 19, 2021 am 10:37 AM
css box model block-level elements inline elements

This article will take you to understand the CSS box model and introduce what is margin collapse? Under what circumstances does margin collapse occur? And talk about solutions.

What is margin collapse? Under what circumstances does it appear? How to deal with it?

In CSS, all elements are surrounded by "boxes" one by one. We widely use two kinds of "boxes" - block-level boxes (block box) and inline box (inline box).

What is the CSS box model?

In CSS, the box model is used during design and layout.

The definition of the box model can be divided into these parts:

  • Content box: This area is used to display content, and the size can be set by width and height.
  • Padding box: The blank area enclosed outside the content area; the size is set through the padding related properties.
  • Border box: Wrap content and padding. The size is set via the border related properties.
  • Margin box: This is the outermost area, the blank space between the box and other elements. The size is set via the margin related properties.

What is margin collapse? Under what circumstances does it appear? How to deal with it?

Block-level boxes fully apply the CSS box model, while inline boxes only use part of the content defined in the box model.

box-sizing

box-sizing attribute defines how the browser should calculate the total width of an element and total height.

  • content-box (default value) , which is the standard box model, width: 100px refers to the content area 100px wide.
    • The size of the box = content(100px) padding border
  • border-box, which is the alternative (IE) box model, width: 100px refers to the sum of the content area border inner margins being 100px wide.
    • The size of the box = content padding border = 100px

No matter which model, margin is not included in the actual size - Of course, it will affect the space occupied by the box on the page, but it will affect the space outside the box.

display

Here you can add a concept - internal and external display types.

  • External display type, we set the display attribute of the box, such as inline or block , to control whether the box is inline or block level.
  • Internal display type, which determines how the elements inside the box are laid out.

If display: flex is set, on an element, the external display type is block, but the internal display type is changed to flex. All direct child elements of the box will become flex elements and will be laid out according to the rules of the flexible box (Flexbox).

There is also a special value -- display: inline-block, which provides an intermediate state between inline and block. This is very useful for the following situations: no line wrapping occurs, but the width and height can be set, which means that some block-level effects are achieved:

  • Settingwidth and ## The #height property will take effect.
  • padding, margin, and border push other elements away.

Inline elements/block-level elements

In HTML4, elements are divided into two categories:

inline (inline elements) and block (block-level element).

1. What are inline elements?

An inline element only occupies the space contained by the border of its corresponding label.

Common inline elements include

a, b, span, img, strong, sub supbuttoninputlabelselecttextarea

2. What are block-level elements?

A block-level element occupies the entire space of its parent element (container), thus creating a "block". Usually browsers will add a new line before and after block-level elements.

Common block-level elements include

div, ul, ol, li, dl, dt, dd, h1, h2, h3, h4 , h5h6 p

3. The difference?

  • Format (by default), inline elements will not wrap, but block-level elements will.

  • On content (by default), inline elements can only contain data and other inline elements. Block-level elements can contain inline elements and other block-level elements.

  • On attributes:

    • Inline elements
      • width and height settings are invalid (line-height can be set),
      • inner margin (padding), outer margin (margin) and borders (border) in the up and down direction will not affect other elements.
    • Block-level elements
      • width and height properties come into play,
      • Padding (padding), margins (margin), and borders (border) will "push" other elements away from the surroundings of the current element

What is margin collapse? Under what circumstances does it appear? How to deal with it?

Margin (margin) collapse

block The top margin (margin-top) and bottom margin (margin-bottom) are sometimes merged (collapsed) into a single margin whose size is the maximum of the single margin (or If they are equal, then only one of them), a behavior called margin collapsing.

What will happen

The vertical margin of two or more adjacent block elements in the ordinary flow will collapse

  • Adjacent: Refers to not being separated by non-empty content, padding, border or clear
  • Vertical direction: Refers to only vertical margins. How will

be solved?

  • The element BFC created and its children/siblings will not be collapsed

  • Settingspadding / border, some specific scenarios:

    • # of the parent element ##margin-top overlaps with the child element's margin-top.

      The overlap occurs because they are adjacent, so we can solve the problem through this. We can set the

      border-top and padding-top values ​​for the parent element to separate them.

    • The

      margin-bottom of the parent element with a height of auto overlaps with the margin-bottom of the child element.

      One overlap occurs because they are adjacent, and the other is because the height of the parent element is not fixed. So we can set

      border-bottom, padding-bottom for the parent element to separate them, or we can set a height for the parent element, max-height and min-height can also solve this problem.

    • is an element without content, and its own

      margin-top and margin-bottom overlap.

      We can solve this problem by setting

      border, padding or height for it.

Factors that trigger BFC

  • float (Except none)
  • overflow (Except visible)
  • display (table-cell / table-caption / inline-block)
  • position (except static / relative)
For more programming-related knowledge, please visit:

Programming Video! !

The above is the detailed content of What is margin collapse? Under what circumstances does it appear? How to deal with it?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What are inline elements and block-level elements? What are inline elements and block-level elements? Aug 17, 2023 am 11:33 AM

Inline elements include div, p, h1-h6, ul, ol, li, table, form, etc.; block-level elements include span, a, img, strong, em, input, label, etc. The characteristics of the two elements: 1. Inline elements will occupy a row, automatically fill the width of the parent container, can set width, height, inner and outer margins and other attributes, and can contain other block-level elements and inline elements; 2. Inline elements will not It will occupy an exclusive line, the width and height are determined by the content, and the inner and outer margins only affect the arrangement of the elements themselves, etc.

What is the difference between inline elements and block-level elements? What is the difference between inline elements and block-level elements? Oct 16, 2023 am 09:51 AM

There are five differences between inline elements and block-level elements: "box model", "arrangement", "content display", "relative position" and "default size": 1. Inline elements do not generate independent boxes, width and height Determined by the content, block-level elements will generate an independent rectangular frame, and attributes such as width, height, margins, and padding can be set; 2. Inline elements are arranged horizontally on the same line, while block-level elements will be pressed from top to bottom. Arrange in order; 3. Inline elements cannot contain block-level elements, while block-level elements can contain other block-level elements and inline elements.

The difference between inline elements and block-level elements: an in-depth understanding of element classification in HTML The difference between inline elements and block-level elements: an in-depth understanding of element classification in HTML Dec 23, 2023 am 10:01 AM

The difference between inline elements and block-level elements: In-depth understanding of the classification of elements in HTML In HTML, elements can be divided into two categories: inline elements and block-level elements. Understanding their differences is very important to correctly master the layout and style of HTML. This article will provide an in-depth understanding of the characteristics of inline elements and block-level elements, and provide specific code examples. Inline elements Inline elements are elements that are displayed inline by default in HTML documents. They do not occupy an entire row, but appear closely within a row based on how the document flow is arranged. Common in the industry

What are html inline elements and block elements? What are html inline elements and block elements? Feb 20, 2021 pm 04:03 PM

HTML inline elements include: a (anchor element), b (bold), br (line break), code, em (emphasis), font (font setting), i (italic), img (picture), input (input box) ), span, strong (bold emphasis), textarea, u, etc.; block elements include: address (address), blockquote (block quote), center (center-aligned block), div, h1~h6 (title), hr ( Horizontal dividing line), p, ul, ol, etc.

The margin attribute does not affect inline elements The margin attribute does not affect inline elements Feb 18, 2024 pm 04:36 PM

The effect of margin on inline elements is different from that of block-level elements. In inline elements, the margin attribute only affects the vertical top and bottom margins, not the horizontal left and right margins. For example, if there is a paragraph element in HTML, we can set some styles for it and observe the effect of the margin attribute on it. The HTML code looks like this:

What are inline and block-level elements? What are inline and block-level elements? Nov 24, 2023 pm 01:57 PM

Inline elements include a, span, strong, b, em, i, label, img, input, select, textarea, button, abbr, cite, code, big, small, sub, sup, etc. Block-level elements include div, p, h1-h6, form, ul, ol, dl, dt, dd, li, table, tr, td, th, hr, blockquote, address, menu, pre, etc.

Common examples of CSS inline and block-level elements: giving you a deeper understanding of them Common examples of CSS inline and block-level elements: giving you a deeper understanding of them Dec 23, 2023 am 11:58 AM

Common examples of CSS inline elements and block-level elements: To give you a deeper understanding of them, specific code examples are needed Introduction: In CSS, inline elements and block-level elements are two element types we often encounter. For web page layout and style design, it is very important to understand the difference and usage of inline elements and block-level elements. This article will introduce inline elements and block-level elements in CSS with specific code examples to help readers understand their characteristics and usage more deeply. 1. Inline elements Inline elements (inlineelem

Detailed explanation of usage scenarios and methods of CSS inline elements and block-level elements Detailed explanation of usage scenarios and methods of CSS inline elements and block-level elements Dec 23, 2023 pm 02:19 PM

Detailed explanation of CSS inline elements and block-level elements: Explore their application scenarios and usage methods In CSS, elements can be divided into two types based on their display characteristics: inline elements and block-level elements. For web developers, it is very important to understand these two concepts, because their different characteristics determine their application scenarios and usage methods. Inline elements are elements that occupy only one line in a web page. Common inline elements include <span>, <img>, and <input>

See all articles