3939
4040 < h1 > CSS Transforms</ h1 >
4141
42- < h2 class ="no-num no-toc " id =longstatus-date > Editor's Draft 29 May 2012</ h2 >
42+ < h2 class ="no-num no-toc " id =longstatus-date > Editor's Draft 1 June 2012</ h2 >
4343
4444 < dl >
4545 < dt > This version:
4646
4747 < dd > < a
48- href ="http://www.w3.org/TR/2012/ED-css3-transforms-20120529 / "> http://dev.w3.org/csswg/css3-transforms/</ a >
49- <!--http://www.w3.org/TR/2012/WD-css3-transforms-20120529 /-->
48+ href ="http://www.w3.org/TR/2012/ED-css3-transforms-20120601 / "> http://dev.w3.org/csswg/css3-transforms/</ a >
49+ <!--http://www.w3.org/TR/2012/WD-css3-transforms-20120601 /-->
5050
5151 < dt > Latest version:
5252
@@ -282,8 +282,9 @@ <h2 class="no-num no-toc" id=contents>Table of contents</h2>
282282 < li > < a href ="#svg-animation "> < span class =secno > 14. </ span > SVG Animation
283283 </ a >
284284 < ul class =toc >
285- < li > < a href ="#svg-animate-element "> < span class =secno > 14.1. </ span >
286- Elements, attributes and properties that can be animated </ a >
285+ < li > < a href ="#svg-animate-element "> < span class =secno > 14.1. </ span > The
286+ ‘< code class =property > animate</ code > ’ and ‘< code
287+ class =property > set</ code > ’ element </ a >
287288
288289 < li > < a href ="#neutral-element "> < span class =secno > 14.2. </ span > Neutral
289290 element for addition </ a >
@@ -1739,12 +1740,12 @@ <h2 id=backface-visibility-property><span class=secno>12. </span> The ‘<a
17391740 follows:
17401741
17411742 < ol >
1742- < li > For an element in a < a href ="#d-rendering-context "> 3D rendering
1743- context</ a > , compute its < a
1744- href ="#TermAccumulated3DTransformationMatrix "> accumulated 3D
1745- transformation matrix</ a > . For an element not in a < a
1743+ < li > For an element in a < a class = term href ="#d-rendering-context "> 3D
1744+ rendering context</ a > , compute its < a class = term
1745+ href ="#accumulated-3d-transformation-matrix "> accumulated 3D
1746+ transformation matrix</ a > . For an element not in a < a class = term
17461747 href ="#d-rendering-context "> 3D rendering context</ a > , compute its < a
1747- href ="#TermTransformationMatrix "> transformation matrix</ a > .
1748+ class = term href ="#transformation-matrix "> transformation matrix</ a > .
17481749
17491750 < li > If the component of the matrix in row 3, column 3 is negative, then
17501751 the element should be hidden. Otherwise it is visible.
@@ -1954,11 +1955,10 @@ <h3 id=svg-transform-functions><span class=secno>13.4. </span> SVG
19541955 class =property > transform-origin</ code > </ a > ’ property. If the optional
19551956 translation values are specified, the transform origin is translated by
19561957 that amount (using the current transformation matrix) for the duration of
1957- the rotate operation. For example ‘< code class =css > < code
1958- class =css > rotate(90deg, 100px, 100px)</ code > </ code > ’ would cause
1959- elements to appear rotated one-quarter of a turn in the clockwise
1960- direction after a translation of 100 pixel in the vertical and horizontal
1961- direction.
1958+ the rotate operation. For example ‘< code class =css > rotate(90deg, 100px,
1959+ 100px)</ code > ’ would cause elements to appear rotated one-quarter of a
1960+ turn in the clockwise direction after a translation of 100 pixel in the
1961+ vertical and horizontal direction.
19621962 </ dl >
19631963
19641964 < p > User agents are just required to support the two optional arguments for
@@ -2004,8 +2004,8 @@ <h3 id=svg-three-dimensional-functions><span class=secno>13.5. </span>SVG
20042004
20052005 < p > If the ‘< code class =property > vector-effect</ code > ’ property is set
20062006 to ‘< code class =css > non-scaling-stroke</ code > ’ and an object is within
2007- a < a href ="#d-rendering-context "> 3D rendering context</ a > the property has
2008- no affect on stroking the object.
2007+ a < a class = term href ="#d-rendering-context "> 3D rendering context</ a > the
2008+ property has no affect on stroking the object.
20092009
20102010 < h3 id =svg-user-coordinate-space > < span class =secno > 13.6. </ span > User
20112011 coordinate space</ h3 >
@@ -2025,10 +2025,12 @@ <h3 id=svg-user-coordinate-space><span class=secno>13.6. </span> User
20252025 ‘< code class =css > objectBoundingBox</ code > ’ the user coordinate system
20262026 for the ‘< a href ="#effects "> < code class =property > transform</ code > </ a > ’
20272027 property and the ‘< code class =property > patternTransform</ code > ’
2028- attribute is established using the bounding box of the element to which
2029- the pattern is applied (see < a
2028+ attribute is established using the < a class =term
2029+ href ="#bounding-box "> bounding box</ a > of the element to which the pattern
2030+ is applied (see < a
20302031 href ="http://www.w3.org/TR/SVG/coords.html#ObjectBoundingBoxUnits "> Object
2031- bounding box units</ a > ).
2032+ bounding box units</ a > < a href ="#SVG11 "
2033+ rel =biblioentry > [SVG11]<!--{{SVG11}}--> </ a > ).
20322034
20332035 < p > If the ‘< code class =property > gradientUnit</ code > ’ attribute of the
20342036 SVG ‘< code class =property > linearGradient</ code > ’ element and the
@@ -2046,10 +2048,12 @@ <h3 id=svg-user-coordinate-space><span class=secno>13.6. </span> User
20462048 ‘< code class =css > objectBoundingBox</ code > ’ the user coordinate system
20472049 for the ‘< a href ="#effects "> < code class =property > transform</ code > </ a > ’
20482050 property and the ‘< code class =property > patternTransform</ code > ’
2049- attribute is established using the bounding box of the element to which
2050- the gradient is applied (see < a
2051+ attribute is established using the < a class =term
2052+ href ="#bounding-box "> bounding box</ a > of the element to which the gradient
2053+ is applied (see < a
20512054 href ="http://www.w3.org/TR/SVG/coords.html#ObjectBoundingBoxUnits "> Object
2052- bounding box units</ a > ).
2055+ bounding box units</ a > < a href ="#SVG11 "
2056+ rel =biblioentry > [SVG11]<!--{{SVG11}}--> </ a > ).
20532057
20542058 < p > If the ‘< code class =property > maskUnit</ code > ’ attribute of the SVG
20552059 ‘< code class =property > mask</ code > ’ element is ‘< code
@@ -2063,10 +2067,12 @@ <h3 id=svg-user-coordinate-space><span class=secno>13.6. </span> User
20632067 If the ‘< code class =property > maskUnit</ code > ’ attribute is set to
20642068 ‘< code class =css > objectBoundingBox</ code > ’ the user coordinate system
20652069 for the ‘< a href ="#effects "> < code class =property > transform</ code > </ a > ’
2066- presentation attribute is established using the bounding box of the
2067- element to which the mask is applied (see < a
2070+ presentation attribute is established using the < a class =term
2071+ href ="#bounding-box "> bounding box</ a > of the element to which the mask is
2072+ applied (see < a
20682073 href ="http://www.w3.org/TR/SVG/coords.html#ObjectBoundingBoxUnits "> Object
2069- bounding box units</ a > ).
2074+ bounding box units</ a > < a href ="#SVG11 "
2075+ rel =biblioentry > [SVG11]<!--{{SVG11}}--> </ a > ).
20702076
20712077 < p > For the ‘< code class =property > clipPath</ code > ’ element the ‘< a
20722078 href ="#effects "> < code class =property > transform</ code > </ a > ’ presentation
@@ -2076,13 +2082,13 @@ <h3 id=svg-user-coordinate-space><span class=secno>13.6. </span> User
20762082 the ‘< code class =property > clipPath</ code > ’ element via the ‘< code
20772083 class =property > clip-path</ code > ’ property).
20782084
2079- < p > For all other < a href ="#TermTransformableElement "> transformable
2085+ < p > For all other < a class = term href ="#transformable-element "> transformable
20802086 elements</ a > the ‘< a href ="#effects "> < code
20812087 class =property > transform</ code > </ a > ’ presentation attribute represents
20822088 values in the current user coordinate system of the parent. All percentage
20832089 values of the ‘< a href ="#effects "> < code
20842090 class =property > transform</ code > </ a > ’ presentation attribute are relative
2085- to the element's < a href =TermBoundingBox > bounding box</ a > .
2091+ to the element's < a class = term href =" #bounding-box " > bounding box</ a > .
20862092
20872093 < div class =example >
20882094 < p > The ‘< a href ="#transform-origin "> < code
@@ -2110,9 +2116,10 @@ <h3 id=svg-user-coordinate-space><span class=secno>13.6. </span> User
21102116</svg></ pre >
21112117
21122118 < p > An SVG ‘< code class =property > pattern</ code > ’ element doesn't have
2113- a bounding box. The bounding box of the referencing ‘< code
2114- class =property > rect</ code > ’ element is used instead to solve the
2115- relative values of the ‘< a href ="#transform-origin "> < code
2119+ a bounding box. The < a class =term href ="#bounding-box "> bounding box</ a >
2120+ of the referencing ‘< code class =property > rect</ code > ’ element is used
2121+ instead to solve the relative values of the ‘< a
2122+ href ="#transform-origin "> < code
21162123 class =property > transform-origin</ code > </ a > ’ property. Therefore the
21172124 point of origin will get translated by 50 pixels temporarily to rotate
21182125 the user space of the ‘< code class =property > pattern</ code > ’ elements
@@ -2161,11 +2168,10 @@ <h3 id=transform-attribute-dom><span class=secno>13.7. </span> SVG DOM
21612168 of ‘< code class =css > < a
21622169 href ="http://www.w3.org/TR/SVG/coords.html#InterfaceSVGTransform "> SVGTransform</ a > </ code > ’
21632170 must return ‘< code class =css > < a
2164- href ="http://www.w3.org/TR/SVG/coords.html#__svg__SVGTransform__SVG_TRANSFORM_UNKNOWN ">
2165- SVG_TRANSFORM_UNKNOWN</ a > </ code > ’ for < a
2166- href ="#transform-functions "> Transform Functions</ a > or unit types that are
2167- not supported by this interface. If a two-dimensional transform function
2168- is not supported, the attribute ‘< code class =css > < a
2171+ href ="http://www.w3.org/TR/SVG/coords.html#__svg__SVGTransform__SVG_TRANSFORM_UNKNOWN "> SVG_TRANSFORM_UNKNOWN</ a > </ code > ’
2172+ for < a href ="#transform-functions "> Transform Functions</ a > or unit types
2173+ that are not supported by this interface. If a two-dimensional transform
2174+ function is not supported, the attribute ‘< code class =css > < a
21692175 href ="http://www.w3.org/TR/SVG/coords.html#__svg__SVGTransform__matrix "> matrix</ a > </ code > ’
21702176 must return a 3x2 ‘< code class =css > < a
21712177 href ="http://www.w3.org/TR/SVG/coords.html#InterfaceSVGMatrix "> SVGMatrix</ a > </ code > ’
@@ -2175,10 +2181,44 @@ <h3 id=transform-attribute-dom><span class=secno>13.7. </span> SVG DOM
21752181
21762182 < h2 id =svg-animation > < span class =secno > 14. </ span > SVG Animation</ h2 >
21772183
2178- < h3 id =svg-animate-element > < span class =secno > 14.1. </ span > Elements,
2179- attributes and properties that can be animated</ h3 >
2180-
2181- < p class =note > This section extends < a
2184+ < h3 id =svg-animate-element > < span class =secno > 14.1. </ span > The ‘< code
2185+ class =property > animate</ code > ’ and ‘< code class =property > set</ code > ’
2186+ element</ h3 >
2187+
2188+ < p > With this specification, the ‘< code class =property > animate</ code > ’
2189+ element and the ‘< code class =property > set</ code > ’ element can animate
2190+ the data type < var > <transform-list></ var > .
2191+
2192+ < p > The animation effect is post-multiplied to the underlying value for
2193+ additive ‘< code class =property > animate</ code > ’ animations (see below)
2194+ instead of added to the underlying value, due to the specific behavior of
2195+ < var > <transform-list></ var > animations.
2196+
2197+ < p > < var > From-to</ var > , < var > from-by</ var > and < var > by</ var > animations are
2198+ defined in SMIL to be equivalent to a corresponding < var > values</ var >
2199+ animation. However, < var > to</ var > animations are a mixture of additive and
2200+ non-additive behavior < a href ="#SMIL3 "
2201+ rel =biblioentry > [SMIL3]<!--{{SMIL3}}--> </ a > .
2202+
2203+ < p > < var > To</ var > animations on ‘< code class =property > animate</ code > ’
2204+ provide specific functionality to get a smooth change from the underlying
2205+ value to the ‘< code class =property > to</ code > ’ attribute value, which
2206+ conflicts mathematically with the requirement for additive transform
2207+ animations to be post-multiplied. As a consequence, the behavior of
2208+ < var > to</ var > animations for ‘< code class =property > animate</ code > ’ is
2209+ undefined. Authors are suggested to use < var > from-to</ var > ,
2210+ < var > from-by</ var > , < var > by</ var > or < var > values</ var > animations to
2211+ achieve any desired transform animation.
2212+
2213+ < p > The value ‘< code class =property > paced</ code > ’ is undefined for the
2214+ attribute ‘< code class =property > calcMode</ code > ’ on ‘< code
2215+ class =property > animate</ code > ’ for animations of the data type
2216+ < var > <transform-list></ var > . If specified, UAs may choose the value
2217+ ‘< code class =property > linear</ code > ’ instead. Future versions of this
2218+ specification may define how paced animations can be performed on
2219+ < var > <transform-list></ var > .
2220+
2221+ < p class =note > The following paragraphs extend < a
21822222 href ="http://www.w3.org/TR/SVG/animate.html#complexDistances "> Elements,
21832223 attributes and properties that can be animated</ a > < a href ="#SVG11 "
21842224 rel =biblioentry > [SVG11]<!--{{SVG11}}--> </ a > .
@@ -2269,33 +2309,37 @@ <h3 id=svg-animate-element><span class=secno>14.1. </span> Elements,
22692309 < h3 id =neutral-element > < span class =secno > 14.2. </ span > Neutral element for
22702310 addition</ h3 >
22712311
2272- < p > Some animations require a neutral element for addition. This neutral
2273- element for transform functions must be equivalent to the null matrix.
2274- Examples for transform functions and their values that fulfill this
2275- requirement are ‘< code class =css > translate(0)</ code > ’, ‘< code
2276- class =css > translate3d(0, 0, 0)</ code > ’, ‘< code
2277- class =css > translateX(0)</ code > ’, ‘< code
2312+ < p > Some animations require a neutral element for addition. For transform
2313+ functions this is a scalar or a list of scalars of 0. Examples of neutral
2314+ elements for transform functions are ‘< code
2315+ class =css > translate(0)</ code > ’, ‘< code class =css > translate3d(0, 0,
2316+ 0)</ code > ’, ‘< code class =css > translateX(0)</ code > ’, ‘< code
22782317 class =css > translateY(0)</ code > ’, ‘< code
22792318 class =css > translateZ(0)</ code > ’, ‘< code class =css > scale(0)</ code > ’,
22802319 ‘< code class =css > scaleX(0)</ code > ’, ‘< code
22812320 class =css > scaleY(0)</ code > ’, ‘< code class =css > scaleZ(0)</ code > ’,
2282- ‘< code class =css > rotate(0)</ code > ’, <!--''rotate3d(1, 1, 1, 0)'',-->
2283- ‘< code class =css > rotateX(0)</ code > ’, ‘< code
2284- class =css > rotateY(0)</ code > ’, ‘< code class =css > rotateZ(0)</ code > ’,
2285- ‘< code class =css > skewX(0)</ code > ’, ‘< code
2286- class =css > skewY(0)</ code > ’, ‘< code class =css > matrix(0, 0, 0, 0, 0,
2287- 0)</ code > ’ and ‘< code class =css > matrix3d(0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2288- 0, 0, 0, 0, 0, 0)</ code > ’. A special case is perspective: ‘< code
2289- class =css > perspective(infinity)</ code > ’. The value of m< sub > 34</ sub >
2290- becomes infinitesimal small and the transform function is therefore
2291- assumed to be equal to the null matrix.
2321+ ‘< code class =css > rotate(0)</ code > ’, ‘< code
2322+ class =css > rotate3d(v< sub > x</ sub > , v< sub > y</ sub > , v< sub > z</ sub > ,
2323+ 0)</ code > ’ (where < var > v</ var > is a context dependent vector), ‘< code
2324+ class =css > rotateX(0)</ code > ’, ‘< code class =css > rotateY(0)</ code > ’,
2325+ ‘< code class =css > rotateZ(0)</ code > ’, ‘< code
2326+ class =css > skewX(0)</ code > ’, ‘< code class =css > skewY(0)</ code > ’,
2327+ ‘< code class =css > matrix(0, 0, 0, 0, 0, 0)</ code > ’, ‘< code
2328+ class =css > matrix3d(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2329+ 0)</ code > ’ and ‘< code class =css > perspective(0)</ code > ’.
2330+
2331+ < p class =note > Some animations from or to a neutral element for addition
2332+ might need matrix interpolation. Since matrix interpolation is just
2333+ defined for invertible transform functions, any animation must fallback to
2334+ discrete animation as specified in < a
2335+ href ="#matrix-interpolation "> Interpolation of Matrices</ a > .
22922336
22932337 < div class =example >
22942338 < p > A < var > by</ var > animation with a by value v< sub > b</ sub > is equivalent
22952339 to the same animation with a values list with 2 values, the neutral
22962340 element for addition for the domain of the target attribute (denoted 0)
2297- and v< sub > b</ sub > , and ‘< code class =css > additive="sum"</ code > ’.
2298- [[SMILANIM]] </ p >
2341+ and v< sub > b</ sub > , and ‘< code class =css > additive="sum"</ code > ’. < a
2342+ href =" #SMIL3 " rel = biblioentry > [SMIL3] <!--{{SMIL3}}--> </ a > </ p >
22992343
23002344 < pre >
23012345<rect width="100" height="100">
@@ -3271,6 +3315,16 @@ <h3 class=no-num id=other-references>Other references</h3>
32713315 < dt style ="display: none "> <!-- keeps the doc valid if the DL is empty -->
32723316 <!---->
32733317
3318+ < dt id =SMIL3 > [SMIL3]
3319+
3320+ < dd > Dick Bulterman. < a
3321+ href ="http://www.w3.org/TR/2008/REC-SMIL3-20081201/ "> < cite > Synchronized
3322+ Multimedia Integration Language (SMIL 3.0).</ cite > </ a > 1 December 2008.
3323+ W3C Recommendation. URL: < a
3324+ href ="http://www.w3.org/TR/2008/REC-SMIL3-20081201/ "> http://www.w3.org/TR/2008/REC-SMIL3-20081201/</ a >
3325+ </ dd >
3326+ <!---->
3327+
32743328 < dt id =SVG11 > [SVG11]
32753329
32763330 < dd > Erik Dahlström; et al. < a
0 commit comments