- From: Rik Cabanier <cabanier@gmail.com>
- Date: Sat, 18 Feb 2012 14:54:18 -0800
- To: Dirk Schulze <dschulze@adobe.com>
- Cc: Chris Marrin <cmarrin@apple.com>, Aryeh Gregor <ayg@aryeh.name>, "L. David Baron" <dbaron@dbaron.org>, www-style list <www-style@w3.org>
- Message-ID: <CAGN7qDAw3eU72K-QSeMVmqPjh0_wihnBf7rG4bsVsQnfVSDJ5g@mail.gmail.com>
On Sat, Feb 18, 2012 at 2:39 PM, Dirk Schulze <dschulze@adobe.com> wrote: > > On Feb 18, 2012, at 1:48 PM, Rik Cabanier wrote: > > Hi Dirk, > > the problem is not technical. It's about what the user expects to happen > so this needs input from authors. > The color transition issue that Aryeh mentioned is a good example where > simply doing the math will not give the expected results. > > Maybe we need the input from more authors. Nevertheless, the described > behavior is logical from the math point of view, as well as from the > behavior in my eyes. We shouldn't specify possible abstruse assumptions of > authors. > > But because you are an SVG guy, here is an example with SVG animation: > > <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink=" > http://www.w3.org/1999/xlink"> > <rect width="100" height="100" fill="green"> > <animateTransform attributeName="transform" type="rotate" to="45 200 > 200" dur="3s" fill="freeze"/> > </rect> > </svg> > > Same situation: no start value specified, but 'to' has three arguments. > Compare it in every browser you want (beside IE which doesn't support > SMIL), you get the same result in every browser. The rotation starts from > rotate(0 0 0) and goes to rotate(45 200 200). And even with from="0", you > still get the same result. I wouldn't expect something different. It would > be strange if CSS Animations behaves differently (and against assumptions > of authors in my eyes). > > > I read the new definition of rotate: > > specifies a 2D rotation<http://dev.w3.org/csswg/css3-transforms/#RotateDefined> by > the angle specified in the parameter about the origin of the element, as > defined by the*transform-origin*<http://dev.w3.org/csswg/css3-transforms/#transform-origin> property, > or a given point as to the origin of the element. > > This doesn't sound correct. Are you replacing the transform-origin with > the new value? > I was under the impression that it was simply doing the translate(a, > b)/rotate/translate(-a,-b). Undoing the transform-origin introduces a lot > more math. > > No, transform-origin should not get reset. If you interpret it that way, > the text needs to clarify it more. The result should be as you would > expect: translate(a, b)/rotate/translate(-a,-b). > > Maybe it should read: specifies a 2D rotation<http://dev.w3.org/csswg/css3-transforms/#RotateDefined> by the angle specified in the parameter about the origin of the element, as defined by the *transform-origin*<http://dev.w3.org/csswg/css3-transforms/#transform-origin> property. If the optional transform is specified, the transform origin is translated by that amount (using the current transformation matrix) for the duration of the rotate operation. > > > Rik > > On Fri, Feb 17, 2012 at 10:06 AM, Dirk Schulze <dschulze@adobe.com> wrote: > >> I really don't understand the problem here? The default values for the >> optional arguments are 0,0. So if a developer wants to animate to (45deg, >> 10px, 10px), why would he expect that the rotation is around 10px,10px? If >> he would expect that, he would specify the 'from' as well. >> >> The same for translate >> >> { >> from{ transform: none} >> to{ transform: translate(20px,20px); } >> } >> >> Why should the author expect that the animation starts from (0, 20px), >> just because he took none for 'from'? The default is (0,0). Same for scale >> where the second argument is 1, for skew it is 0. Why should authors expect >> that the optional arguments for 'none' are the same like specified for 'to'? >> >> Dirk >> >> On Feb 17, 2012, at 9:52 AM, Chris Marrin wrote: >> >> > >> > On Feb 17, 2012, at 7:59 AM, Aryeh Gregor wrote: >> > >> >> On Thu, Feb 16, 2012 at 5:14 PM, Dirk Schulze <dschulze@adobe.com> >> wrote: >> >>> Well, the initial value would be rotate(0,0,0). Therefore no. If you >> want to >> >>> always have the animation around (10,10) , you would need to define >> it in >> >>> 'from'. >> >> >> >> I suggest that if the extra two arguments are left in the spec (which >> >> I'm still not a fan of), an extra special case be added to the >> >> transitions part so that it works as expected. Transitioning from >> >> 'none' to rotate3d(0, 0, 1, 45deg) rotates only around the z-axis as >> >> expected, and transitioning a color from green to transparent >> >> shouldn't make it black in between even though you're technically >> >> going from rgba(0, 128, 0, 1) to rgba(0, 0, 0, 0). Likewise, >> >> transitioning from none to rotate(45deg, 10px, 10px) should be treated >> >> like transitioning from rotate(0deg, 10px, 10px). Anything else is >> >> not expected, IMO. >> > >> > And that, I think, is the problem with having origin parameters in the >> rotate function. In rotate3d, the axis and angle are inseparable. You need >> both to have a complete description of a rotation. That's not the case for >> the origin parameters in the rotate() function. rotate(45deg, 10px, 20px) >> is simply shorthand for translate(10px, 20px) rotate(45deg) >> translate(-10px, -20px). If I transitioned from none to translate(10px, >> 20px), I'd start at 0,0. Special casing the translation values embedded in >> the rotate function seems strange. >> > >> > ----- >> > ~Chris >> > cmarrin@apple.com >> > >> > >> > >> > >> >> > >
Received on Saturday, 18 February 2012 22:54:46 UTC