"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > How Can We Group Descendant Elements in CSS?

How Can We Group Descendant Elements in CSS?

Published on 2024-11-08
Browse:554

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:


  ...
  

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

#myTable th, #myTable td {}

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:

#myTable (th, td) {}

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:

    #myTable tr > * {}

    (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.

Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3