- From: François REMY <francois.remy.dev@outlook.com>
- Date: Sat, 8 Feb 2014 18:09:21 +0100
- To: "Boris Zbarsky" <bzbarsky@MIT.EDU>, <www-style@w3.org>
> The rules in the component are scoped to the component in the sense that
> they can only affect the styles of nodes in the shadow DOM (modulo
> inheritance issues).
>
> What :ancestor lets you do is change the styles of the nodes in the shadow
> DOM based on, say, a class on the <body> of the page. It doesn't let you
> change the styles of the <body> itself.
Hum, that's already more acceptable. I either misread the spec or it wasn't
quite obvious.
> > In all seriousness, can you provide a single "responsible" use case for
> > this?
>
> Tab and I actually discussed this a bit yesterday, offline. The use case
> he cited was theming, where a theme-aware component would basically do
> something like ":ancestor([theme=dark]) .myThingie" and
> ":ancestor([theme=light]) .myThingie" to hook into existing theme styling
> setups, which commonly use an attribute of some sort on the <body>.
That's a probable use case. I wonder whether it would not be better to use
custom css properties for that, though.
You could do .myThingie:inherited(var-theme: light)) ... { ...} where
:inherited(...) only consider the inherited value of a property, and not its
final value. We could restrict to custom properties as a starter to avoid
issues with shorthand/longhand properties.
> > The reverse, however, should not be true because, otherwise, "siblings"
> > shadow DOMs may break into each-other privacy and totally make nut the
> > purpose of the Shadow DOM specification.
>
> A bigger issue for _this_ is the scripting model, in which afaict the
> component can just mess with the DOM of the page all it wants, should it
> choose to do so. Including by accident, I expect; if a component uses
> jQuery and does $("div") it'll get the divs of the page, not its own...
Not sure there exists a good way to solve this, though.
Received on Saturday, 8 February 2014 17:09:28 UTC