search
HomeWeb Front-endCSS TutorialGetting started with CSS layout

Getting started with CSS layout

Jun 28, 2017 am 10:22 AM
css

Elements and boxes

The concept often used in HTML is the element, but in CSS, the basic unit of layout is the box, which is always rectangular.

There is no one-to-one correspondence between elements and boxes. One element may generate multiple boxes. Pseudo-elements in CSS rules may also generate boxes. Elements with a display attribute of none will not generate boxes.

In addition to elements, text nodes in HTML may also generate boxes.

Box model

A box includes content, border, Padding, Margin(margin). The following figure shows the intuitive meaning of the box model:

Image illustrating the relationship between content, padding, borders, and margins.

The definition of the size (width and height) of the box is affected by the box-sizing attribute. Box-sizing can choose from three modes: content-box (default), padding-box and border-box.

Normal flow

The normal flow is the page, and most of the boxes are arranged in the normal flow. Boxes in the normal stream must be located in a certain formatting context. There are two formatting contexts in the normal stream: block formatting context (BFC) and inline formatting context (IFC).

In block-level formatting context, boxes are arranged vertically, and in inline formatting context, boxes are arranged horizontally.

The normal flow root container is a block-level formatting context. Different boxes may generate inline formatting context or block-level formatting context internally.

Block level and inline level

Boxes in the normal flow are divided into block level and inline level. No inline level box can be directly put into the block level formatting context. . If an

HTML element generates an inline box, and its context is block level, then an anonymous block level box should be generated for it. The anonymous block level box will generate an inline formatting context internally. . The display attribute of the

element will determine whether the box is inline level or block level:

  • block, table, flex, grid, list-item is block level

  • inline, inline-block, inline-table, inline-flex, inline-grid are inline levels

Formatting context

display may also determine how to display inside the element. The boxes generated by some container elements will generate formatting contexts other than BFC and IFC.

There is a class of boxes called block containers, which can contain block-level boxes. A block container either creates a block-level formatting context, so that it contains only block-level boxes, or an inline-level formatting context, so that it contains only inline-level elements. (That is to say, it is impossible for a block container to contain both block-level boxes and inline-level boxes. Once there are block-level boxes in its sub-box, all inline-level boxes will be automatically wrapped by anonymous boxes).

Block containers in non-block-level formatting contexts always create new block-level formatting contexts: such as display boxes generated for inline-blocks, table-cells, and table-captions. A block container that is also in a block-level formatting context will create a new block-level formatting context only if

overflow is not visible.

Absolute positioning and floating block containers always create a new block-level formatting context.

Elements whose display value is table or inline-table will generate a table, and a special formatting method will be used inside the table to arrange its internal elements.

Elements whose display value is grid or inline-grid will generate grid elements. Similar to the table situation, it also uses a special formatting method internally to mark its internal elements.

Elements with a display value of flex or inline-flex will generate an adaptive container (flex container), and the adaptive container will generate an adaptive formatting context (flex formatting context) inside it.

The above is the detailed content of Getting started with CSS layout. For more information, please follow other related articles on the PHP Chinese website!

Statement
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
CSS Animations: Is it hard to create them?CSS Animations: Is it hard to create them?May 09, 2025 am 12:03 AM

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For

@keyframes CSS: The most used tricks@keyframes CSS: The most used tricksMay 08, 2025 am 12:13 AM

@keyframesispopularduetoitsversatilityandpowerincreatingsmoothCSSanimations.Keytricksinclude:1)Definingsmoothtransitionsbetweenstates,2)Animatingmultiplepropertiessimultaneously,3)Usingvendorprefixesforbrowsercompatibility,4)CombiningwithJavaScriptfo

CSS Counters: A Comprehensive Guide to Automatic NumberingCSS Counters: A Comprehensive Guide to Automatic NumberingMay 07, 2025 pm 03:45 PM

CSSCountersareusedtomanageautomaticnumberinginwebdesigns.1)Theycanbeusedfortablesofcontents,listitems,andcustomnumbering.2)Advancedusesincludenestednumberingsystems.3)Challengesincludebrowsercompatibilityandperformanceissues.4)Creativeusesinvolvecust

Modern Scroll Shadows Using Scroll-Driven AnimationsModern Scroll Shadows Using Scroll-Driven AnimationsMay 07, 2025 am 10:34 AM

Using scroll shadows, especially for mobile devices, is a subtle bit of UX that Chris has covered before. Geoff covered a newer approach that uses the animation-timeline property. Here’s yet another way.

Revisiting Image MapsRevisiting Image MapsMay 07, 2025 am 09:40 AM

Let’s run through a quick refresher. Image maps date all the way back to HTML 3.2, where, first, server-side maps and then client-side maps defined clickable regions over an image using map and area elements.

State of Devs: A Survey for Every DeveloperState of Devs: A Survey for Every DeveloperMay 07, 2025 am 09:30 AM

The State of Devs survey is now open to participation, and unlike previous surveys it covers everything except code: career, workplace, but also health, hobbies, and more. 

What is CSS Grid?What is CSS Grid?Apr 30, 2025 pm 03:21 PM

CSS Grid is a powerful tool for creating complex, responsive web layouts. It simplifies design, improves accessibility, and offers more control than older methods.

What is CSS flexbox?What is CSS flexbox?Apr 30, 2025 pm 03:20 PM

Article discusses CSS Flexbox, a layout method for efficient alignment and distribution of space in responsive designs. It explains Flexbox usage, compares it with CSS Grid, and details browser support.

See all articles

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

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.