- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Tue, 27 Aug 2013 22:19:53 -0700
- To: Brian Kardell <bkardell@gmail.com>
- Cc: Ojan Vafai <ojan@chromium.org>, Corey Ford <cford@mozilla.com>, "www-style@w3.org" <www-style@w3.org>, "L. David Baron" <dbaron@dbaron.org>
On Tue, Aug 27, 2013 at 7:10 PM, Brian Kardell <bkardell@gmail.com> wrote: > On Tue, Aug 27, 2013 at 9:27 PM, Tab Atkins Jr. <jackalmage@gmail.com> > wrote: >> On Tue, Aug 27, 2013 at 5:34 PM, Ojan Vafai <ojan@chromium.org> wrote: >> > This may be too early, but I think we should add a pseudo-class for >> > position:sticky's that are stuck to an edge. This lets you easily style >> > the >> > stuck element (e.g. with a box-shadow). >> >> Immediately bringing up the obvious question of what ":stuck { >> position: static; }" does. >> >> I think we can't avoid this problem forever, and that the right >> solution is to define a set of "selector-affecting properties" and >> "property-affected selectors", and say that you can't set any of the >> former in a style rule whose selector contains one of the latter. >> >> (That is, you can't *just* say "you can't set position inside a :stuck >> rule", because as soon as another property/selector (foo-prop and >> :foo), you can just set 'foo-prop' inside of :stuck and then set >> 'position' inside of :foo and run into circularity again. You have to >> treat the whole set of properties as infectious to the whole set of >> selectors.) > > > Wow - I think my mind just exploded. Can you (or anyone who understands) > try explaining that again with some slightly more intuitively named > fictitious prop/selectors so I can try wrapping my head around what you are > saying in that last paragraph? or explain the relationship you are > explaining another way that leads to circularity? It seems like you are > saying that if we had a simple "setting the following properties in a :stuck > rule has no effect..." that is some other way to hit circularity because of > another (new) situation like it? Is it only in the case where the > properties overlap between two of them or something? Perhaps I am being > dense, but my mind is spinning. Okay, better example. ^_^ Assume that my Toggle States suggestion also exists: <http://tabatkins.github.io/specs/css-toggle-states/Overview.html#checked-problems> You could then write code like: .foo { position: sticky; } .foo:stuck { toggle-states: 2; toggle-initial: 1; /* makes it match :checked */ } .foo:checked { position: static; /* makes it not match :stuck */ } If you get stuck, you match :checked. If you're checked, you're unstuck. Circles! Instead, 'position' and the 'toggle-*' properties are both defined as "selector-affecting properties", and :stuck and :checked are "property-affected selectors", so you can't use any of those properties in blocks with either of those selectors. ~TJ
Received on Wednesday, 28 August 2013 05:20:40 UTC