Home Web Front-end CSS Tutorial How Can We Group Descendant Elements in CSS?

How Can We Group Descendant Elements in CSS?

Nov 02, 2024 pm 03:19 PM

How Can We Group Descendant Elements in CSS?

The Elusive CSS Selector for Descendant Grouping

While CSS provides powerful options for styling elements, one notable absence is the ability to easily group descendants. This limitation becomes apparent when styling complex elements like HTML tables, where assigning the same style to both column headings and cells requires cumbersome selectors.

The Dilemma of Descendant Styling

Consider the following table example:

<code class="html"><table id='myTable'>
  <tr>
    <th></th>
    <th></th>
    <th></th>
  </tr>
  ...
  <tr>
    <td></td>
    <td></td>
    <td></td>
  </tr>
</table></code>
Copy after login

To style both the headings and cells with a single selector, one would typically use:

<code class="css">#myTable th, #myTable td {}</code>
Copy after login

However, this approach is verbose and tedious when dealing with a large number of elements.

The (th, td) Selector: A Missed Opportunity

A more intuitive syntax would be to use a grouping selector similar to:

<code class="css">#myTable (th, td) {}</code>
Copy after login

Unfortunately, such syntax doesn't exist in CSS.

The Futility of Pre-2008 Proposals

As it turns out, the lack of a descendant grouping selector has been a longtime issue. Early attempts to introduce one, such as the :any() pseudo-class proposed in 2008, did not gain traction.

Recent Developments and a Glimmer of Hope

However, the Selectors level 4 working draft reintroduces the concept of a grouping pseudo-class, :matches(). While this proposal shows promise, browser support is still a long way off.

Alternative Solutions

In the meantime, there are some workarounds for descendant grouping:

  • Using the * selector:

    <code class="css">#myTable tr > * {}</code>
    Copy after login

    (Note that this assumes tr elements only contain td or th elements and not other elements)

  • Sticking with the verbose th, td approach for maximum performance

Conclusion

The lack of a descendant grouping selector in CSS has been a persistent issue for many years. While recent proposals offer a glimmer of hope, widespread browser support remains elusive. Until then, developers must rely on alternative approaches or resign themselves to the verbosity of the existing th, td selector.

The above is the detailed content of How Can We Group Descendant Elements in CSS?. 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 Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

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)

Hot Topics

Java Tutorial
1664
14
PHP Tutorial
1269
29
C# Tutorial
1249
24
A Proof of Concept for Making Sass Faster A Proof of Concept for Making Sass Faster Apr 16, 2025 am 10:38 AM

At the start of a new project, Sass compilation happens in the blink of an eye. This feels great, especially when it’s paired with Browsersync, which reloads

A Comparison of Static Form Providers A Comparison of Static Form Providers Apr 16, 2025 am 11:20 AM

Let’s attempt to coin a term here: "Static Form Provider." You bring your HTML

Weekly Platform News: HTML Loading Attribute, the Main ARIA Specifications, and Moving from iFrame to Shadow DOM Weekly Platform News: HTML Loading Attribute, the Main ARIA Specifications, and Moving from iFrame to Shadow DOM Apr 17, 2025 am 10:55 AM

In this week&#039;s roundup of platform news, Chrome introduces a new attribute for loading, accessibility specifications for web developers, and the BBC moves

The Deal with the Section Element The Deal with the Section Element Apr 12, 2025 am 11:39 AM

Two articles published the exact same day:

Multi-Thumb Sliders: General Case Multi-Thumb Sliders: General Case Apr 12, 2025 am 10:52 AM

The first part of this two-part series detailed how we can get a two-thumb slider. Now we&#039;ll look at a general multi-thumb case, but with a different and

Some Hands-On with the HTML Dialog Element Some Hands-On with the HTML Dialog Element Apr 16, 2025 am 11:33 AM

This is me looking at the HTML element for the first time. I&#039;ve been aware of it for a while, but haven&#039;t taken it for a spin yet. It has some pretty cool and

How We Tagged Google Fonts and Created goofonts.com How We Tagged Google Fonts and Created goofonts.com Apr 12, 2025 pm 12:02 PM

GooFonts is a side project signed by a developer-wife and a designer-husband, both of them big fans of typography. We’ve been tagging Google

It's All In the Head: Managing the Document Head of a React Powered Site With React Helmet It's All In the Head: Managing the Document Head of a React Powered Site With React Helmet Apr 15, 2025 am 11:01 AM

The 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

See all articles