
display: contents is a relatively unfamiliar property. Although display is basically the most common CSS property, the value of contents is rarely used. But it has been supported by Firefox since 2016.
This article will take a closer look at this interesting attribute value.
Basic usage
According to W3C’s definition of display: contents.
The element itself does not generate any boxes, but its children and pseudo-elements still generate boxes and text runs as normal. For the purposes of box generation and layout, the element must be treated as if it had been replaced in the element tree by its contents (including both its source-document children and its pseudo-elements, such as ::before and ::after pseudo-elements, which are generated before/after the element's children as normal) .
A simple translation means that the element itself with this attribute value set will not generate any boxes, but it will retain the normal display of its descendant elements.
Look at a simple example. There is a simple three-layer structure as follows:
<div class="container">
<div class="wrap">
<div class="inner"></div>
</div>
</div>The simple CSS is as follows:
.container {
width: 200px;
height: 200px;
background: #bbb;
}
.wrap {
border: 2px solid red;
padding: 20px;
box-sizing: border-box;
}
.inner {
border: 2px solid green;
padding: 20px;
box-sizing: border-box;
}The performance is as follows:

<div class="container">
<div class="wrap" style="display: contents">
<div class="inner"></div>
</div>
</div>

Acts as a semantic-less wrapping box
When I was writing React and Vue recently, I found that this attribute can play a very good role when writing JSX, and it is also very useful. In line with the positioning of this attribute itself. When we write React and RN, we often need to output a template.return (
<div class="wrap">
<h2 id="Title">Title</h2>
<div>...</div>
</div>
)We just want to output the content within the .wrap div, but due to framework requirements, the output JSX template must be included under a parent element, so as a last resort, we need to add a .wrap for wrapping, but this. wrap itself has no style. If the output elements are to be placed under other display: flex, display: grid containers, after adding a layer of meaningless .wrap, the entire layout needs to be readjusted, which is troublesome. One way is to use the container return (
<div class="wrap" style="display: contents">
<h2 id="Title">Title</h2>
<div>...</div>
</div>
)In this way, it not only plays the role of wrapping, but in actual rendering, this div does not actually generate any box, killing two birds with one stone. And some flex layouts and grid layouts will not be affected. Codepen Demo -- display: contents | display: flex penetration effect
Make the code more semantic
Consider this very practical Scenario, now our pages are filled with a large number of clickable buttons, or text and other elements that trigger corresponding functions. However, semantically speaking, they should beThe above is the detailed content of How to use CSS display: contents?. For more information, please follow other related articles on the PHP Chinese website!
Two Images and an API: Everything We Need for Recoloring ProductsApr 15, 2025 am 11:27 AMI recently found a solution to dynamically update the color of any product image. So with just one of a product, we can colorize it in different ways to show
Weekly Platform News: Impact of Third-Party Code, Passive Mixed Content, Countries with the Slowest ConnectionsApr 15, 2025 am 11:19 AMIn this week's roundup, Lighthouse sheds light on third-party scripts, insecure resources will get blocked on secure sites, and many country connection speeds
Options for Hosting Your Own Non-JavaScript-Based AnalyticsApr 15, 2025 am 11:09 AMThere are loads of analytics platforms to help you track visitor and usage data on your sites. Perhaps most notably Google Analytics, which is widely used
It's All In the Head: Managing the Document Head of a React Powered Site With React HelmetApr 15, 2025 am 11:01 AMThe document head might not be the most glamorous part of a website, but what goes into it is arguably just as important to the success of your website as its
What is super() in JavaScript?Apr 15, 2025 am 10:59 AMWhat's happening when you see some JavaScript that calls super()?.In a child class, you use super() to call its parent’s constructor and super. to access its
Comparing the Different Types of Native JavaScript PopupsApr 15, 2025 am 10:48 AMJavaScript has a variety of built-in popup APIs that display special UI for user interaction. Famously:
Why Are Accessible Websites so Hard to Build?Apr 15, 2025 am 10:45 AMI was chatting with some front-end folks the other day about why so many companies struggle at making accessible websites. Why are accessible websites so hard
The `hidden` Attribute is Visibly WeakApr 15, 2025 am 10:43 AMThere is an HTML attribute that does exactly what you think it should do:


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Atom editor mac version download
The most popular open source editor

Dreamweaver CS6
Visual web development tools

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function







