2121
2222 < h1 > CSS 2D Transforms Module Level 3</ h1 >
2323
24- < h2 class ="no-num no-toc " id =longstatus-date > Editor's Draft 14 April 2009</ h2 >
24+ < h2 class ="no-num no-toc " id =longstatus-date > Editor's Draft 31 October
25+ 2009</ h2 >
2526
2627 < dl >
2728 < dt > This version:
2829
2930 < dd > < a
30- href ="http://www.w3.org/TR/2009/ED-css3-2d-transforms-20090414 "> http://dev.w3.org/csswg/css3-2d-transforms/</ a >
31- <!--http://www.w3.org/TR/2009/WD-css3-2d-transforms-20090414 -->
31+ href ="http://www.w3.org/TR/2009/ED-css3-2d-transforms-20091031 "> http://dev.w3.org/csswg/css3-2d-transforms/</ a >
32+ <!--http://www.w3.org/TR/2009/WD-css3-2d-transforms-20091031 -->
3233
3334 < dt > Latest version:
3435
@@ -111,6 +112,9 @@ <h2 class="no-num no-toc" id=status>Status of this document</h2>
111112 W3C Patent Policy</ a > .</ p >
112113 <!--end-status-->
113114
115+ < p > The < a href =ChangeLog > list of changes made to this specification</ a >
116+ are available.
117+
114118 < h2 class ="no-num no-toc " id =contents > Table of contents</ h2 >
115119 <!--begin-toc-->
116120
@@ -210,9 +214,8 @@ <h2 id=introduction><span class=secno>1 </span>Introduction</h2>
210214
211215 < p > Any value other than ‘< code class =property > none</ code > ’ for
212216 the transform results in the creation of both a stacking context and a
213- containing block. The object acts as though position: relative has been
214- specified, but also acts as a containing block for fixed positioned
215- descendants.
217+ containing block. The object acts as a containing block for fixed
218+ positioned descendants.
216219
217220 < div class =todo > Need to go into more detail here about why fixed
218221 positioned objects should do this, i.e., that it's much harder to
@@ -321,6 +324,12 @@ <h2 id=transform-origin-property><span class=secno>3 </span> The <span
321324 applies the element's transform, then moves the element back to its
322325 original position.
323326
327+ < p > If only one value is specified, the second value is assumed to be
328+ ‘< code class =property > center</ code > ’. If at least one value is
329+ not a keyword, then the first value represents the horizontal position and
330+ the second represents the vertical position. Negative <percentage>
331+ and <length> values are allowed.
332+
324333 < table class =propdef >
325334 < tbody >
326335 < tr >
@@ -379,10 +388,6 @@ <h2 id=transform-functions><span class=secno>4 </span> The Transformation
379388 href ="http://www.w3.org/TR/css3-values/ "> CSS Values and Units.</ a >
380389
381390 < dl >
382- < dt > < span class =prop-value > none</ span >
383-
384- < dd > specifies an identity transform.
385-
386391 < dt > < span class =prop-value > matrix(<number>, <number>,
387392 <number>, <number>, <number>, <number>)</ span >
388393
@@ -532,8 +537,8 @@ <h2 id=animation><span class=secno>6 </span> Transitions and animations
532537 ‘< code class =property > to</ code > ’ transforms are both single
533538 functions of the same type:
534539 < ul >
535- < li > For translate, translateX, translateY, translateZ, scale, scaleX,
536- scaleY, rotate , skewX and skewY functions:
540+ < li > For translate, translateX, translateY, scale, scaleX, scaleY ,
541+ rotate, skew , skewX and skewY functions:
537542 < ul >
538543 < li > the individual components of the function are interpolated
539544 numerically.
@@ -575,7 +580,8 @@ <h2 id=animation><span class=secno>6 </span> Transitions and animations
575580
576581 < p > The identity functions are translate(0), translateX(0),
577582 translateY(0), scale(1), scaleX(1), scaleY(1), rotate(0), rotateX(0),
578- rotateY(0), skewX(0), skewY(0), and matrix(1, 0, 0, 1, 0, 0).</ p >
583+ rotateY(0), skewX(0), skewY(0), skew(0, 0) and matrix(1, 0, 0, 1, 0,
584+ 0).</ p >
579585 </ ul >
580586
581587 < li > If both the ‘< code class =property > from</ code > ’ and
@@ -597,6 +603,11 @@ <h2 id=animation><span class=secno>6 </span> Transitions and animations
597603 </ ul >
598604 </ ul >
599605
606+ < p > In some cases, an animation might cause a transformation matrix to be
607+ singular or non-invertible. For example, an animation in which scale moves
608+ from 1 to -1. At the time when the matrix is in such a state, the
609+ transformed element is not rendered.
610+
600611 < h2 id =dom-interfaces > < span class =secno > 7 </ span > DOM Interfaces</ h2 >
601612
602613 < p > This section describes the interfaces and functionality added to the
@@ -653,7 +664,7 @@ <h3 id=window-interface><span class=secno>7.2 </span> Window</h3>
653664 < dt > < b > Interface < i > < a id =DOM-Window name =DOM-Window > Window</ a > </ i > </ b >
654665
655666 < dd >
656- < p > The following 2 functions are added to the < code > Window</ code >
667+ < p > The following 2 methods are added to the < code > Window</ code >
657668 interface. They provide conversions between the page and node coordinate
658669 spaces.</ p >
659670
@@ -688,6 +699,9 @@ <h3 id=window-interface><span class=secno>7.2 </span> Window</h3>
688699 returns a point in the coordinate space of the passed Node that is
689700 at the same location in the page as the passed point, which is in
690701 the coordinate space of the page.
702+ < div class =issue > This interface should be moved into CSSOM View,
703+ but that is not yet transform-aware.</ div >
704+
691705 < div class =parameters > < b > Parameters</ b >
692706 < div class =paramtable >
693707 < dl >
@@ -734,6 +748,9 @@ <h3 id=window-interface><span class=secno>7.2 </span> Window</h3>
734748 returns a point in the coordinate space of the page that is at the
735749 same location in the page as the passed point, which is in the
736750 coordinate space of the passed Node.
751+ < div class =issue > This interface should be moved into CSSOM View,
752+ but that is not yet transform-aware.</ div >
753+
737754 < div class =parameters > < b > Parameters</ b >
738755 < div class =paramtable >
739756 < dl >
@@ -802,9 +819,11 @@ <h3 id=cssmatrix-interface><span class=secno>7.3 </span> CSSMatrix</h3>
802819
803820 void setMatrixValue(in DOMString string) raises(DOMException);
804821 CSSMatrix multiply(in CSSMatrix secondMatrix);
822+ CSSMatrix multiplyLeft(in CSSMatrix secondMatrix);
805823 CSSMatrix inverse() raises(DOMException);
806824 CSSMatrix translate(in float x, in float y);
807825 CSSMatrix scale(in float scaleX, in float scaleY);
826+ CSSMatrix skew(in float angleX, in float angleY);
808827 CSSMatrix rotate(in float angle);
809828 };</ pre >
810829 </ div >
@@ -854,7 +873,7 @@ <h3 id=cssmatrix-interface><span class=secno>7.3 </span> CSSMatrix</h3>
854873 < div > < b > Exceptions</ b >
855874 < div class =returnvalue >
856875 < dl >
857- < dt > < code > SYNTAX_ERR</ code >
876+ < dt > < code > DOMException SYNTAX_ERR</ code >
858877
859878 < dd > Thrown when the provided string can not be parsed into a
860879 CSSMatrix.
@@ -880,7 +899,7 @@ <h3 id=cssmatrix-interface><span class=secno>7.3 </span> CSSMatrix</h3>
880899 < dt > < code class =parameter-name > secondMatrix</ code > of type
881900 < code > CSSMatrix</ code >
882901
883- < dd > The matrix to multipy .< br >
902+ < dd > The matrix to multiply .< br >
884903 </ dl >
885904 </ div >
886905 </ div >
@@ -901,6 +920,41 @@ <h3 id=cssmatrix-interface><span class=secno>7.3 </span> CSSMatrix</h3>
901920 <!-- multiply() -->
902921 <!-- ===================================================== -->
903922
923+ < dt > < code class =method-name > < a id =DOM-CSSMatrix-multiplyLeft
924+ name =DOM-CSSMatrix-multiplyLeft > multiplyLeft</ a > </ code >
925+
926+ < dd >
927+ < div class =method > The < code > multiplyLeft</ code > method returns a new
928+ CSSMatrix which is the result of this matrix multiplied by the
929+ passed matrix, with the passed matrix to the left. This matrix is
930+ not modified.
931+ < div class =parameters > < b > Parameters</ b >
932+ < div class =paramtable >
933+ < dl >
934+ < dt > < code class =parameter-name > secondMatrix</ code > of type
935+ < code > CSSMatrix</ code >
936+
937+ < dd > The matrix to multiply.< br >
938+ </ dl >
939+ </ div >
940+ </ div >
941+ <!-- parameters -->
942+ < div class =return-value > < b > Return Value</ b >
943+ < div class =returnvalue >
944+ < dl >
945+ < dt > < code > CSSMatrix</ code >
946+
947+ < dd > The result matrix.< br >
948+ </ dl >
949+ </ div >
950+ </ div >
951+
952+ < div > < b > No Exceptions</ b > </ div >
953+ </ div >
954+ </ dd >
955+ <!-- multiplyLeft() -->
956+ <!-- ===================================================== -->
957+
904958 < dt > < code class =method-name > < a id =DOM-CSSMatrix-inverse
905959 name =DOM-CSSMatrix-inverse > inverse</ a > </ code >
906960
@@ -923,7 +977,7 @@ <h3 id=cssmatrix-interface><span class=secno>7.3 </span> CSSMatrix</h3>
923977 < div > < b > Exceptions</ b >
924978 < div class =returnvalue >
925979 < dl >
926- < dt > < code > NOT_SUPPORTED_ERROR </ code >
980+ < dt > < code > DOMException NOT_SUPPORTED_ERR </ code >
927981
928982 < dd > Thrown when the CSSMatrix can not be inverted.
929983 </ dl >
@@ -981,8 +1035,7 @@ <h3 id=cssmatrix-interface><span class=secno>7.3 </span> CSSMatrix</h3>
9811035 < dd >
9821036 < div class =method > The < code > scale</ code > method returns a new matrix
9831037 which is this matrix post multiplied by a scale matrix containing
984- the passed values. If the z component is undefined, a 1 value is
985- used in its place. If the y component is undefined, the x component
1038+ the passed values. If the y component is undefined, the x component
9861039 value is used in its place. This matrix is not modified.
9871040 < div class =parameters > < b > Parameters</ b >
9881041 < div class =paramtable >
@@ -1050,6 +1103,46 @@ <h3 id=cssmatrix-interface><span class=secno>7.3 </span> CSSMatrix</h3>
10501103 <!-- ======================================================================================================= -->
10511104 </ dd >
10521105 <!-- rotate() -->
1106+ <!-- ===================================================== -->
1107+
1108+ < dt > < code class =method-name > < a id =DOM-CSSMatrix-skew
1109+ name =DOM-CSSMatrix-skew > skew</ a > </ code >
1110+
1111+ < dd >
1112+ < div class =method > The < code > skew</ code > method returns a new matrix
1113+ which is this matrix post multiplied by a skew matrix. The rotation
1114+ value is in degrees. This matrix is not modified.
1115+ < div class =parameters > < b > Parameters</ b >
1116+ < div class =paramtable >
1117+ < dl >
1118+ < dt > < code class =parameter-name > angleX</ code > of type
1119+ < code > float</ code >
1120+
1121+ < dd > The angle of skew along the X axis.< br >
1122+
1123+ < dt > < code class =parameter-name > angleY</ code > of type
1124+ < code > float</ code >
1125+
1126+ < dd > The angle of skew along the Y axis.< br >
1127+ </ dl >
1128+ </ div >
1129+ </ div >
1130+ <!-- parameters -->
1131+ < div class =return-value > < b > Return Value</ b >
1132+ < div class =returnvalue >
1133+ < dl >
1134+ < dt > < code > CSSMatrix</ code >
1135+
1136+ < dd > The result matrix.< br >
1137+ </ dl >
1138+ </ div >
1139+ </ div >
1140+
1141+ < div > < b > No Exceptions</ b > </ div >
1142+ </ div >
1143+ <!-- ======================================================================================================= -->
1144+ </ dd >
1145+ <!-- skew() -->
10531146 </ dl >
10541147 <!-- methods -->
10551148 </ dl >
@@ -1072,6 +1165,9 @@ <h3 id=csstransformvalue-interface><span class=secno>7.4 </span>
10721165 of values, which are the parameters of the function, in the same order
10731166 in which they appear in the transform functions.</ p >
10741167
1168+ < p class =issue > Since CSSValue is deprecated, this interface will need to
1169+ change.</ p >
1170+
10751171 < dl >
10761172 < dt > < b > IDL Definition</ b >
10771173
@@ -1142,10 +1238,10 @@ <h3 id=csstransformvalue-interface><span class=secno>7.4 </span>
11421238 < div > < b > Exceptions</ b >
11431239 < div class =returnvalue >
11441240 < dl >
1145- < dt > < code > NOT_SUPPORTED_ERROR </ code >
1241+ < dt > < code > DOMException NOT_SUPPORTED_ERR </ code >
11461242
1147- < dd > Thrown when the CSSTranformValue can not be converted into a
1148- CSSMatrix, such as when the CSSTransformValue contains
1243+ < dd > Thrown when the CSSTransformValue can not be converted into
1244+ a CSSMatrix, such as when the CSSTransformValue contains
11491245 percentage units and is being called on an object with unknown
11501246 dimensions.
11511247 </ dl >
@@ -1169,59 +1265,7 @@ <h3 id=csstransformvalue-interface><span class=secno>7.4 </span>
11691265 single CSSTransformValue with a type of CSS_MATRIX. The 6 parameters
11701266 represent the 3x2 matrix that is the result of applying the individual
11711267 functions listed in the < code > < a href ="#effects "> transform</ a > </ code >
1172- property.</ p >
1173- <!--
1174- <p class=issue>Editor's Note: This list needs to be updated (or
1175- dropped).
1176-
1177- <p>This specification is the product of the W3C Working Group on
1178- Cascading Style Sheets and Formatting Properties. In addition to the
1179- editor of this specification, the members of the Working Group
1180- are:
1181- <ul>
1182- <li>Marc Attinasi (Netscape/AOL)
1183- <li>Bert Bos (W3C)
1184- <li>Tantek Çelik (Microsoft Corp.)
1185- <li>Don Day (IBM)
1186- <li>Martin Dürst (W3C)
1187- <li>Angel Diaz (IBM)
1188- <li>Daniel Glazman (Netscape/AOL from nov. 2000, and Electricité de France
1189- until feb. 2000)
1190- <li>Håkon W. Lie (Opera Software from April 1999, and W3C until April
1191- 1999)
1192- <li>Chris Lilley (W3C)
1193- <li>Dave Raggett (W3C/Openwave Systems Inc.)
1194- <li>Pierre Saslawsky (Netscape/AOL)
1195- <li>Michel Suignard (Microsoft Corp.)
1196- <li>Ted Wugofski (Openwave Systems Inc.)
1197- <li>Steve Zilles (Adobe)
1198- </ul>
1199-
1200- <p>A number of invited experts to the Working Group have significantly
1201- contributed to CSS 3 : David. L Baron, Todd Fahrner, Daniel Glazman,
1202- Ian Hickson, Eric Meyer (The OPAL Group), Jeff Veen.
1203-
1204- <p>Former members of the Working Group:
1205- <ul>
1206- <li>Chris Brichford (Adobe)
1207- <li>Troy Chevalier (Netscape/AOL)
1208- <li>Dwayne Dicks (Softquad)
1209- <li>Ian Jacobs (W3C)
1210- <li>Lorin Jurow (Quark)
1211- <li>Sho Kuwamoto (Macromedia)
1212- <li>Peter Linss (Netscape/AOL)
1213- <li>Steven Pemberton (W3C/CWI)
1214- <li>Robert Pernett (Lotus)
1215- <li>Douglas Rand (SGI)
1216- <li>Nisheeth Ranjan (Netscape/AOL)
1217- <li>Ed Tecot (Microsoft Corp.)
1218- <li>Jared Sorensen (Novell)
1219- <li>Robert Stevahn (Hewlett-Packard)
1220- <li>Mike Wexler (Adobe)
1221- <li>John Williams (Quark)
1222- <li>Chris Wilson (Microsoft Corp.)
1223- </ul>
1224- -->
1268+ property.
12251269
12261270 < h2 id =references > < span class =secno > 8 </ span > References</ h2 >
12271271
0 commit comments