- From: Christopher Robert Jaquez <crjaquez@gmail.com>
- Date: Mon, 17 Aug 2009 00:38:54 -0400
- To: "Tab Atkins Jr." <jackalmage@gmail.com>
- Cc: David Perrell <davidp@hpaa.com>, Brad Kemper <brad.kemper@gmail.com>, Andrew Fedoniouk <news@terrainformatica.com>, www-style list <www-style@w3.org>
- Message-ID: <ceaa83f00908162138k340cfc60i74754c9c0e5a372c@mail.gmail.com>
On Sun, Aug 16, 2009 at 6:18 PM, Tab Atkins Jr. <jackalmage@gmail.com>wrote: > On Sun, Aug 16, 2009 at 4:53 PM, David Perrell<davidp@hpaa.com> wrote: > > Brad Kemper wrote: > > | ... You thinking you can just create a second > > | background thats as small as that box? I was think of that too, but > > | the gradation actually needs to keep going on all four sides of that > > > > I think I misinterpreted your comment (and you mine). I wanted > confirmation > > that, in an element with a background color but no border, it was agreed > > that a gradient with these properties: > > > > background-size: calc(100%-200px) calc(100%-200px); > > background-position: 50% 50%; > > background-repeat: no-repeat; > > > > would be confined to its box and the background color (or an underlying > > auto-sized gradient) would show as a 100px border. (At the time I was > > thinking in terms of an argument about complexity, but I'm not recalling > > what it was.) > > Yes, that's right. > > > (Interesting animation potential in being able to size a gradient box > larger > > than the clip box.) > > You mean like having a gradient slide just by changing the > background-position? > > > Anyway, I'm all for simplicity, and it seems to me just this suffices for > > <gradient-line>: > > > > [ <angle> | [ <bg-position> [ to <bg-position> ]? ] ] > > > > But this is just a valid subset of the current spec, right? > > Yeah, it just simplifies the <angle> production to remove the starting > point and the inside/outside keyword. > > > I think that it would avoid possible confusion if <color-stop> stood for: > > > > [ <color> [ <percentage> | <length> ]? ] > > > > It just seems reasonable to have the required value come first. > > Ah, fine, I'll require that ordering. It seems to be what we're all > naturally using anyway. > > > <length> as an option is very important - how would I align a particular > > band of gradient behind a headline without it? > > I agree. > > > Might be good to require <color-stop>s to be in ascending order. Less > chance > > for misreading someone else's stylesheet. > > Unfortunately, now that we allow <length>, it's impossible to actually > require this. Say you had "white, gray 16px, black 1em". If the > element has ordinary medium text and the user has normal font-size > settings, the gray and black stop are on top of each other. If the > font-size is bigger or smaller than that, though, the gray will be > before or after the black. > > > Or, since there is a difference > > between blending two colors and overlaying one blend on a solid color, > maybe > > it does make sense to allow backtracking. Then you could call for > rendering > > a solid area, backtracking, and laying down a gradient. (Just a thought.) > > I really doubt backtracking is a desirable behavior in virtually any > instance. I'm comfortable with requiring you to use SVG to achieve > that. > > However, having your stops change order is similarly disastrous. > > What I'm considering doing is requiring that your stops be in order, > and saying that if a later stop specifies a position before an earlier > stop, it's treated as being *on* the previous stop. > > That is, given colors like "white, yellow 20px, orange 30px, red 10px, > black", the red stop would be moved to 30px. If you are already requiring the the color-stops to be in order, what if we said that when a <length> is used, it is a relative distance from the previous color-stop? This makes it possible to mix units without losing the desired effect as would happen by collapsing color-stops as you propose. In you previous example, it would mean that there was a 1em gradient to black from the the previous gray color-stop, which was itself preceded by a 16px gradient from white. I think this is quite reasonable as it is hard for me to understand why anyone would want to express their color-stops out of order as it would be quite a confusing case of obfuscation. > > > This would also allow us to mix percentages and lengths again, as we'd > remove the ability for the stops to switch order. Say you set "white, > yellow 100px, red 50%", and then the box shrunk to less than 200px > width. All that would happen is the blend from yellow->red would drop > to instantaneous; you'd have 100px of white->yellow, then switch > immediately to red for the rest of the image. > > I'd put in an advisory that it's usually a bad idea to mix unit types > in color-stops, of course. > > This would also significantly clean up the language for determining > the default value of the last stop. I can just switch it back to > being always 100%, and let the ordering rule take care of pushing it > further out if necessary. > > I haven't made this change yet, but I think it may be a good idea. > > ~TJ >
Received on Monday, 17 August 2009 04:39:53 UTC