What is the true purpose of \'display: table-column\' in CSS?
Unraveling the Enigma of CSS "display: table-column"
The exploration of HTML and CSS properties often leads to intriguing questions. One such query arises when implementing a CSS table-based layout using the enigmatic "display: table-column" declaration. Despite its allure, this property has a rather specific purpose, which can lead to puzzling results if not understood correctly.
Background: The CSS Table Model
The CSS table model is an intricate system that borrows heavily from the HTML table model. In this model, a table is composed of rows and columns, with cells occupying each intersection of a row and column. While cells are direct descendants of rows, they have no direct relationship with columns.
Purpose of "display: table-column"
Contrary to popular belief, the "display: table-column" property does not provide a way to create columnar layouts. Its sole purpose is to define attributes that apply specifically to cells within the table rows. In other words, it allows us to specify characteristics like background color or font size for specific cells based on their position within the row.
However, it is important to note that the table structure remains the same as in traditional HTML. Columns do not contain content directly; instead, they exist solely as logical constructs that influence the layout of cells within rows.
Illustrative Example
Consider the following HTML and CSS code:
<code class="html"><section> <div id="colLeft"> <div id="row1"> <div id="cell1">AAA</div> </div> <div id="row2"> <div id="cell2">BBB</div> </div> </div> <div id="colRight"> <div id="row3"> <div id="cell3">CCC</div> </div> </div> </section></code>
<code class="css">section { display: table; height: 100%; background-color: grey; } #colLeft, #colRight { display: table-column; height: 100%; } #row1, #row2, #row3 { display: table-row; height: 100%; } #cell1, #cell2, #cell3 { display: table-cell; height: 100%; }</code>
In this example, the "display: table-column" declaration is applied to the "colLeft" and "colRight" elements. These elements do not contain any content; their sole purpose is to define the layout of cells within their respective rows.
Despite the presence of these column definitions, you may notice that nothing appears in the browser. This is because, as mentioned earlier, columns do not contain content directly. Content must be placed within table cells, which are children of table rows.
To remedy this, we need to modify our HTML structure to place content within table cells:
<code class="html"><section> <div id="colLeft"> <div id="row1"> <div id="cell1">AAA</div> </div> <div id="row2"> <div id="cell2">BBB</div> </div> </div> <div id="colRight"> <div id="row3"> <div id="cell3">CCC</div> </div> </div> </section></code>
With this modification, the content appears as expected, demonstrating the proper use of "display: table-column."
The above is the detailed content of What is the true purpose of \'display: table-column\' in CSS?. For more information, please follow other related articles on the PHP Chinese website!

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

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

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

Hot Topics

It's out! Congrats to the Vue team for getting it done, I know it was a massive effort and a long time coming. All new docs, as well.

With the recent climb of Bitcoin’s price over 20k $USD, and to it recently breaking 30k, I thought it’s worth taking a deep dive back into creating Ethereum

I had someone write in with this very legit question. Lea just blogged about how you can get valid CSS properties themselves from the browser. That's like this.

The other day, I spotted this particularly lovely bit from Corey Ginnivan’s website where a collection of cards stack on top of one another as you scroll.

I'd say "website" fits better than "mobile app" but I like this framing from Max Lynch:

There are a number of these desktop apps where the goal is showing your site at different dimensions all at the same time. So you can, for example, be writing

If we need to show documentation to the user directly in the WordPress editor, what is the best way to do it?

Questions about purple slash areas in Flex layouts When using Flex layouts, you may encounter some confusing phenomena, such as in the developer tools (d...
