W3C home > Mailing lists > Public > www-style@w3.org > August 2012

Re: [css3-gcpm] Re: conditional floats on paged media

From: Cameron McCormack <cam@mcc.id.au>
Date: Sun, 19 Aug 2012 10:42:26 +1000
Message-ID: <50303672.6070004@mcc.id.au>
To: Håkon Wium Lie <howcome@opera.com>
CC: liam@w3.org, Peter Moulder <peter.moulder@monash.edu>, www-style@w3.org, Michel Onoff <michel.onoff@web.de>
Håkon Wium Lie:
> Hmm. I don't understand why you select children of <a>; <a> has no
> children. Perhaps you meant:
>
>   a:target-matches(attr(href url), #figure):target-counter(attr(href url), page, same) {
>      content: "on this page";
>   }

Yes sorry that's what I meant.

> (In addition to removing the space, I've also removed two commas (to
> align with the new css3-values syntax), and changed the .class into an
> #id selector (to match the sample HTML code))
>
> This would presumably select certain <a> elements, depending on two conditions:
>
>    1) that the <a> element points to the figure
>    2) that the <a> element and its target are laid out on the same page

Yes.

> Intiuitively, I understand (1) and the proposed syntax.
>
> I'm struggling a bit more with (2). You're using the
> "target-counter()" function which, in GCPM, returns a numeric value
> for the 'content' property. Like this:
>
>    a::after { content: "(see page " target-counter(attr(href url), page, decimal) ")" }
>
> In your example, though, it's a boolean function, which queries where
> a element appears, right? Perhaps we could find a better name for it.
> E.g.:
>
>    :target-placement(attr(href url), page, same)
>    :target-layout(attr(href url), page, same)
>    :target-place(attr(href url), page, same)
>
> This I could more easily understand.

Yes that looks more understandable, although I thought by having it work 
on counter values rather than pages you could use the same mechanism for 
having references like "previous section", "next chapter", etc.

> Then we would (e.g.) have:
>
>    a:target-matches(attr(href url), #figure):target-layout(attr(href url), page, same) {
>       content: "on this page";
>    }
>
> or even:
>
>    a:target-matches(attr(href url), #figure):target-layout(attr(href url), same, page) {
>       content: "on this page";
>    }
>
> which reads slightly better.
>
> In most cases, the syntax would be even simpler; (1) isn't really
> needed if the styling is the same for all <a> elements, or a class of
> <a> elements. E.g., we could write:
>
>    a:target-layout(attr(href url), same, page) { content: "on this page"  }
>
> or:
>
>    <a class=desc href="...">..</a>
>    a.desc:target-layout(attr(href url), same, page) { content: "on this page"  }
>
> Adding the other conditions, we would get:
>
>    a:target-layout(attr(href url), same, page) { content: "on this page"  }
>    a:target-layout(attr(href url), next, page) { content: "on the next page"  }
>    a:target-layout(attr(href url), previous, page) { content: "on the previous page" }
>
> which even I can read without incurring excessive heachaches.
>
> We could also do:
>
>    a:target-layout(attr(href url), same, page) { content: "on this page" }
>    a:target-layout(attr(href url), same, spread) { content: "on the opposing page" }
>
> ... if 'same, spread' is defined to only be true if the content is not
> on the same page, but on the other page of the same spread.
>
> Adding columns to the mix also seems natural:
>
>    a:target-layout(attr(href url), same, column) { content: "in this column" }
>    a:target-layout(attr(href url), next, column) { content: "in the next column" }
>    a:target-layout(attr(href url), next, page) { content: "on the next page" }
>
> but we can't easily generate these:
>
>    "in the first column on the next page"
>    "in column 2 on the next page"
>
> That's probably ok.

"spread" seems good.  I'm not sure I've ever seen text that mentions "in 
this column", but it shouldn't be harder to support that than pages.

> In conclusion, I think (2) is within scope of GCPM and the proposed
> solution seems reasonable. I'm happy to write it up and add it to the
> editor's draft.

Great!

> I'm less convinced about (1). First, I don't think it's neeeded in
> most cases. Second, if we need it, it probably belongs in a selectors
> draft. Third, selectors within selectors are somewhat scary.

Right, you could get around that by ensuring your <a> elements have a 
certain class, if you are happy to change the markup.
Received on Sunday, 19 August 2012 00:42:58 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 17:20:58 GMT