- From: Koji Ishii <kojiishi@gmail.com>
- Date: Thu, 11 Jun 2015 14:53:38 +0900
- To: Rune Lillesveen <rune@opera.com>
- Cc: "Tab Atkins Jr." <jackalmage@gmail.com>, Hayato Ito <hayato@google.com>, www-style list <www-style@w3.org>, sorvell@google.com, esprehn@google.com, Olli Pettay <olli@pettay.fi>
- Message-ID: <CAN9ydbW9Cy=SDETvY9EiAOFKSZzY5jyLwdhnMHM=o1PdZCvE7g@mail.gmail.com>
Back to the Rune's proposal: On Sat, May 16, 2015 at 6:59 AM, Rune Lillesveen <rune@opera.com> wrote: > On Fri, Feb 6, 2015 at 10:11 AM, Rune Lillesveen <rune@opera.com> wrote: > > On Fri, Feb 6, 2015 at 1:13 AM, Tab Atkins Jr. <jackalmage@gmail.com> > wrote: > > > >> Hmm, you're right, this isn't very stable. If you remove #3, it > >> completely changes the ordering, so that #2 sorts ahead of #1, rather > >> than at the end. The ordering of any two declarations shouldn't be > >> affected by the presence or absence of other declarations. > >> > >> We should fix this up somehow to make things work better. It probably > >> means adding some special cascade behavior for ::content? > > > > I don't have experience in making real web components. > > > > I don't know the rationale for handling re-distribution to shadow tree > > siblings differently from distribution to shadow trees for other > > hosts. > > > > If specificity should beat ordering for redistribution and ::content > > through different hosts, like the spec says now, why isn't that what > > you want for re-distribution through shadow tree siblings as well? > > We have a similar sort of complex inter-dependencies even with single > shadow roots when some of the scopes have an ascendant/descendant > relationship in the tree-of-trees, and some not. > > Example: > > <style id="A"></style> > <host1> > <:shadowroot> > <style id="B"></style> > <host1_1> > <:shadowroot> > <style id="C"></style> > <div> > <content/> > </div> > </:shadowroot> > <content/> > </host1_1> > </:shadowroot> > <host2> > <:shadowroot> > <style id="D"></style> > <content/> > </:shadowroot> > <inner/> > </host2> > </host1> > > Plain ::content rules stylesheets A, B, C and D may apply to <inner>. > > Rules from A beats non-important rules in B, C, D because it's in an > outer scope. > Rules from B beats non-important rules in C (outer scope). > Rules from B and C beats rules in D if they have higher specificity, > but D wins for rules with the same specificity because of > order-of-appearance in the tree-of-trees. > Then, !important rules also have to be taken into account, turning > things upside down for inner/outer case. > > This is mildly said complicated to implement. > > It should be noted that Blink currently only tries to implement the > tree-of-trees order-of-appearance part of the cascading order in the > CSS Scoping spec, which means specificity currently trumps scope. Even > that part has bugs [1]. > > What I think would be simpler, both to grasp for authors(?), and to > implement, is to specify the cascading order in terms of the composed > tree. > We discussed on your proposal, and this sounds like a reasonable change to us. What's important to us is the conceptual notion of the outer scope wins over the inner scope. As long as it is kept, I agree that using the composed tree can solve complex cases. For the example above, the composed tree path from the <inner> element > and up is: > > inner -> host2 -> div -> host1_1 -> host1 > > This gives a total parent/child ordering of the scopes that apply to a > given element: > > scope(D) -> scope(C) -> scope(B) -> scope(A) > > If you include the shadow roots you pass through traversing the > composed tree, you end up with: > > inner -> scope(D) -> host2 -> div -> scope(C) -> host1_1 -> scope(B) > -> host1 -> scope(A) > > (should work for multiple shadow roots as well) > > The ordering of rules from stylesheets A-D for the <inner> element > would then be: > > 1. scope(D) Important > 2. scope(C) Important > 3. scope(B) Important > 4. scope(A) Important > 5. scope(A) normal > 6. scope(B) normal > 7. scope(C) normal > 8. scope(D) normal > > That means specificity will not make a rule from one shadow tree beat > a rule from another. I don't know why it currently is like that, or if > it makes sense. Yes, "Origin and Scopes" should win over the specificity in terms of the priority. I believe that's what the current spec defines, and that's what you would like it to be, right? /koji
Received on Thursday, 11 June 2015 05:54:09 UTC