- From: Brian Blakely <anewpage.media@gmail.com>
- Date: Wed, 11 Jun 2014 16:54:24 -0400
- To: Boris Zbarsky <bzbarsky@mit.edu>
- Cc: "www-style@w3.org" <www-style@w3.org>
- Message-ID: <CAJGQg4GRo=86+rgimBjKkLHpCZMAOOwepyd4qDwMoDOVumOgXw@mail.gmail.com>
Note, in recursive cross-reference chains, the first reference parsed has precedence. Subsequent references are pushed onto a chain for the user agent to follow down, looking for a fallback. On Wed, Jun 11, 2014 at 4:48 PM, Brian Blakely <anewpage.media@gmail.com> wrote: > Because the reference chain resolves back to the element being defined, > the selector is invalid. > > Although the conditions for recursion should be refined to include the > property in our figurings. > > > In the below example, the element can safely reference itself. Both > .foo's width and margin-right are 100px. > > Safe Recursion Example > === > > .foo { > width: $(.foo margin-right 50px); > margin-right: 100px; > } > > > In the next example, the first cross-reference selector resolves back to > the element being defined AND the property being defined. Therefore, the > selector fails and the fallback argument is used. Both .foo's width and > margin-right resolve to 50px. > > Unsafe Recursion Example With Fallback > === > > .foo { > width: $(.foo margin-right 50px); > margin-right: $(.foo width 100px); > } > > > In the following example, the first cross-reference does not possess a > fallback, and so the next cross-reference up the chain is asked for one, > which it provides. Both .foo's width and margin-right resolve to 100px. > > Unsafe Recursion Example Without Fallback > === > > .foo { > width: $(.foo margin-right); > margin-right: $(.foo width 100px); > } > > Finally, in the example below, neither cross-reference supplies a valid > fallback. They are both considered "tainted" and both values are invalid. > > Tainted Recursion Example > === > > .foo { > width: $(.foo margin-right); > margin-right: $(.foo width); > } > > > > > On Wed, Jun 11, 2014 at 3:38 PM, Boris Zbarsky <bzbarsky@mit.edu> wrote: > >> On 6/11/14, 3:36 PM, Brian Blakely wrote: >> >>> In an instance where the cross-reference ends up selecting the element >>> being defined >>> >> >> What if it selects some other element that itself cross-referenced the >> original element? >> >> >> 2) Arbitrarily deep cross-reference nesting. >>> >> >> This is not just a problem for the fallback. >> >> -Boris >> > >
Received on Wednesday, 11 June 2014 20:55:12 UTC