| <html> | 
 | <head> | 
 |   <style> | 
 |     .box { | 
 |       position: relative; | 
 |       left: 0; | 
 |       height: 100px; | 
 |       width: 100px; | 
 |       margin: 10px; | 
 |       background-color: blue; | 
 |       transform: translate(0); | 
 |       -webkit-transition-property: transform; | 
 |       -webkit-transition-duration: 0.5s; | 
 |     } | 
 |      | 
 |     .box1 { | 
 |       transform: translate(50px); | 
 |     } | 
 |      | 
 |     .box2 { | 
 |       transform: translate(50px) scale(1.05); | 
 |       -webkit-transition-duration: 0.55s; | 
 |     } | 
 |      | 
 |     .box3 { | 
 |       transform: translate(0); /* same as default */ | 
 |       -webkit-transition-duration: 0.3s; | 
 |     } | 
 |  | 
 |     .box4 { | 
 |       transform: translate(100px); | 
 |       -webkit-transition-duration: 0.4s; | 
 |     } | 
 |  | 
 |     .box5 { | 
 |       /* nothing */ | 
 |     } | 
 |  | 
 |   </style> | 
 |   <script src="transition-end-event-helpers.js"></script> | 
 |   <script type="text/javascript"> | 
 |      | 
 |     var expectedEndEvents = [ | 
 |       // [property-name, element-id, elapsed-time, listen] | 
 |       ["transform", "box1", 0.5, false], | 
 |       ["transform", "box2", 0.55, false], | 
 |       ["transform", "box4", 0.4, false] | 
 |     ]; | 
 |    | 
 |     function transitionElement(index) | 
 |     { | 
 |       var boxes = document.body.getElementsByClassName('box'); | 
 |       boxes[index-1].className = "box box" + index; | 
 |     } | 
 |  | 
 |     function setupTest() | 
 |     { | 
 |       var boxes = document.body.getElementsByClassName('box'); | 
 |       for (var i = 0; i < boxes.length; ++i) { | 
 |         boxes[i].addEventListener("webkitTransitionEnd", recordTransitionEndEvent, false); | 
 |       } | 
 |  | 
 |       window.setTimeout(function() { transitionElement(1); }, 100); | 
 |       window.setTimeout(function() { transitionElement(2); }, 150); | 
 |       window.setTimeout(function() { transitionElement(3); }, 200); | 
 |       window.setTimeout(function() { transitionElement(4); }, 50); | 
 |       window.setTimeout(function() { transitionElement(5); }, 150); | 
 |     } | 
 |      | 
 |     runTransitionTest(expectedEndEvents, setupTest); | 
 |   </script> | 
 | </head> | 
 | <body> | 
 |  | 
 | <p>Initiating transitions on transform properties of all boxes, starting at different times and with different durations and values.</p> | 
 |  | 
 | <div id="container"> | 
 |   <div id="box1" class="box"></div> | 
 |   <div id="box2" class="box"></div> | 
 |   <div id="box3" class="box"></div> | 
 |   <div id="box4" class="box"></div> | 
 |   <div id="box5" class="box"></div> | 
 | </div> | 
 |  | 
 | <div id="result"></div> | 
 |  | 
 | </body> | 
 | </html> |