- From: Alan Gresley <alan@css-class.com>
- Date: Thu, 09 Jun 2011 22:45:46 +1000
- To: Brian Manthos <brianman@microsoft.com>
- CC: Sylvain Galineau <sylvaing@microsoft.com>, fantasai <fantasai.lists@inkedblade.net>, "www-style@w3.org" <www-style@w3.org>
On 9/06/2011 5:32 PM, Brian Manthos wrote: Tried to correct the embedding level of the thread. > fantasai [fantasai.lists@inkedblade.net] Sent: Wednesday, June 08, >> On 06/09/2011 09:25 AM, Sylvain Galineau wrote: >> >>> Why shouldn't top mean 'towards the top' and right 'towards the >>> right' so >>> that transitioning from top to right is equivalent to going from >>> 0deg >>> to 90deg >>> on a bearing compass ? That seems perfectly coherent to me. >> >> Because if my gradient has a fixed length (which is reasonably >> common for creating edge effects via background-image), the >> "towards the top" interpretation would place it at the bottom of >> the box. >> >> I think *that* is counter-intuitive. >> >> ~fantasai > > It's not about the location after the gradient image, that's what > background-position addresses. > > It's about the direction the gradient flows as it progresses through > the color stops. I don't believe that you should be able to animate or transition between values of top, right, bottom and left. It should only work with degrees. Secondly the default for a linear-gradient should be top. The below gradients would be identical. linear-gradient(pink, orange 50px, blue 50px, lime); linear-gradient(top, pink, orange 50px, blue 50px, lime); Brain, it's very interesting that you mention flow. This came up in another discussion about flexbox, bidi and writing-mode [1]. Please see the part where I reply to Andrew about block-flow. At the beginning of this current thread, I mentioned option D [2]. Did you yourself think about it Brian? I soon switched to option C since I could see Brad rampaging and dis-railing the brainstorming. Option D would mean that the following gradients would appear identical. -*-gradient(0deg, pink, orange 50px, blue 50px, lime); /* Current behavior */ gradient(0deg, pink, orange 50px, blue 50px, lime); /* New behavior */ This is how I envision option D would look with a 0 degree angle. <!doctype html> <style type="text/css"> div { height: 100px; width: 100px; background: -webkit-linear-gradient(0deg, pink, orange 50px, blue 50px, lime); background: -moz-linear-gradient(0deg, pink, orange 50px, blue 50px, lime); background: -ms-linear-gradient(0deg, pink, orange 50px, blue 50px, lime); background: -o-linear-gradient(0deg, pink, orange 50px, blue 50px, lime); } </style> <div>0deg</div> Now if option D is not radical, my I suggest that when mapped to degrees, the linear-gradient flow is perpendicular to it's angle but when the angle of the linear-gradient are mapped to those of the box model (top, right, bottom and left) the linear-gradient flow is parallel to it's angle. This would mean that someone could use this. linear-gradient(start, pink, orange 50px, blue 50px, lime); It would also mean that start and end values could be used for left and right values but start and end values would work in reverse with dir="rtl" or direction="rtl". Consider the animation that I questioned Simon about [3] [4]. The margin box does not rotate but when you are using transform origin, you have to adjust the margins. Now consider that a RTL author came along and wanted to do the same animation by having the box run downwards along the border-right edge of the viewport. For both animations (in LTR and in RTL), the start of the animation would be the same. linear-gradient(0deg, pink, orange 50px, blue 50px, lime); To keep the vertical hard color stop always orientated on the y-axis, for LTR, I would rotate the box clockwise and rotate the linear-gradient anticlockwise. For RTL, I would rotate the box anticlockwise and rotate the linear-gradient clockwise. The vertical hard color stop would move horizontally as the box rotated. In LTR, it would follow a path like this. |[|] | | [|] | | [|] | |[|] | | [|] | | [|] | |[|] | In RTL, it would follow a path like this. | [|]| | [|] | | [|] | | [|]| | [|] | | [|] | | [|]| Now I add another gradient down the side of the border-box of the viewport and I want the movement horizontally to match to the linear-gradient of the rotating box (there's more to this gradient affect then you think so please no one suggest I simply have a transparent background). I would use this linear-gradient, linear-gradient(start, pink, orange 50px, blue 50px, lime); and use background position to keep both gradients aligned with each other. [1] http://lists.w3.org/Archives/Public/www-style/2011Jun/0199.html [2] http://lists.w3.org/Archives/Public/www-style/2011May/0430.html [3] http://lists.w3.org/Archives/Public/www-style/2011Jun/0129.html [4] http://lists.w3.org/Archives/Public/www-style/2011Jun/0137.html -- Alan Gresley http://css-3d.org/ http://css-class.com/
Received on Thursday, 9 June 2011 12:46:25 UTC