- From: Roman Komarov via GitHub <sysbot+gh@w3.org>
- Date: Tue, 22 Oct 2024 08:02:58 +0000
- To: public-css-archive@w3.org
kizu has just created a new issue for https://github.com/w3c/csswg-drafts: == `[css-values]` Proposal: `descendant-count()` function == This is a more powerful/versatile version of my previous `children-count()` proposal (https://github.com/w3c/csswg-drafts/issues/11068). ## The Proposal Unlike `children-count()`, this one counts _all_ descendant elements. If we were to approximate it with JS, it could be something like `el.querySelectorAll('*').length`. I imagine this function being the most useful with the optional selector (so the https://github.com/w3c/csswg-drafts/issues/9572 must be resolved first), as it allows narrowing down what exactly we want to count. Example usage: > An accumulated padding based on the count of nested lists: ```CSS .table-of-contents { padding-inline-start: calc( 1ch * descendant-count(ul:first-of-type) ) } ``` ### Other use cases - Same as `children-count()`, but when there are extra wrappers between the element on which we need to get the value, and the items: it could happen easily with `display: contents` or subgrids. - A way to check if we have some content in a way similar to `:has()`, but where we get the count of elements as the result. ### Why not just `descendant-count()`? Can we have just it, and skip the `children-count()` I think that we need both: - Most use cases could just use `children-count()`, while `descendant-count()` could be used for more complicated use cases. - `descendant-count()` is harder to spell compared to `children-count()` - `children-count()` will be likely more performant (fewer DOM changes will cause a recalc), so it will be better than `descentant-count(> *)`, and an alternative of having `> *` as the default value for the `descentant-count()` would not be too logical. - `children-count()` sounds like a much easier thing to implement. While I would prefer both to be implemented alongside `sibling-index()` and `sibling-count()`, if the complexity of `descendant-count()` will be problematic, I don't want it to be a roadblock. ### Could this be a selector instead? I think we need both, as in one case we conditionally apply some styles, and in another we use the count itself for some purpose. I will try to fill a separate proposal for such a selector in the future. Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/11069 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Tuesday, 22 October 2024 08:02:59 UTC