- From: Jan Miksovsky via GitHub <sysbot+gh@w3.org>
- Date: Tue, 11 Dec 2018 22:06:56 +0000
- To: public-css-archive@w3.org
JanMiksovsky has just created a new issue for https://github.com/w3c/csswg-drafts: == [css-shadow-parts-1] Can class name selectors apply to a part? == We're experimenting with the shadow part support in Chrome (behind the flag), and have a number of situations where we'd like to conditionally style parts based on the state of the relevant part. E.g., we have a [Tabs](https://component.kitchen/elix/Tabs) component, and would like to expose the tab buttons as parts for styling. Significantly, the selected state of the tab button is relevant to styling, i.e., a selected tab button should look different than an unselected tab button. The selected state of the tab button is not reflected in any existing pseudo-class. (While it'd be theoretically possible to reimplement the tab buttons as check boxes to expose the `:checked` pseudo-class, that's an extremely awkward approach just to get some styling.) Short of having some way for components to expose custom pseudo-classes, we were wondering if it'd be possible to access classes on a part: e.g., ``` my-tabs-component::part(tab-button) { color: black; } my-tabs-component::part(tab-button).selected { color: red; } ``` Here the component author communicates part state to the outside world by applying CSS classes to the parts. It's not explicitly indicated in https://drafts.csswg.org/css-shadow-parts/#part, but our experiments in Chrome at least suggest that the above is not supported. That places hard limits on how customizable we can make our components, even when `::part` is widely supported. It doesn't seem like supporting class selectors on a part leaks much critical information or would produce brittle components. If the component author needs to refactor their component's shadow tree — e.g., to replace one type of shadow element with a different type of element — it'd be safe for them to support the same class names on the new element. Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/3431 using your GitHub account
Received on Tuesday, 11 December 2018 22:06:57 UTC