| <!doctype html> |
| <html> |
| <head> |
| <style type="text/css"> |
| body { height: 1500px; } |
| #center { |
| position: fixed; |
| left: 40%;; |
| width: 50%; |
| height: 250px; |
| top: 25%; |
| background-color: grey; |
| -webkit-transform: scale(0.25, 0.25); |
| -webkit-transition: -webkit-transform 1s; |
| } |
| |
| #drawer { |
| position: fixed; |
| top: 0; |
| left: 0; |
| height: 100%; |
| width: 120px; |
| background-color: red; |
| -webkit-transform: translate3d(-1000px, 0, 0); |
| -webkit-transition: -webkit-transform 1s; |
| } |
| |
| </style> |
| <script> |
| 'use strict'; |
| window.animationDone = false; |
| window.addEventListener('load', function() { |
| var centerEl = document.querySelector('#center'); |
| centerEl.style.webkitTransform = 'scale(1.0, 1.0)'; |
| console.time('Interaction.CenterAnimation/is_smooth'); |
| centerEl.addEventListener('transitionend', function() { |
| console.timeEnd('Interaction.CenterAnimation/is_smooth'); |
| var drawerEl = document.querySelector('#drawer'); |
| drawerEl.style.webkitTransform = 'translate3D(0, 0, 0)'; |
| console.time('Interaction.DrawerAnimation/is_smooth'); |
| drawerEl.addEventListener('transitionend', function() { |
| console.timeEnd('Interaction.DrawerAnimation/is_smooth'); |
| window.animationDone = true; |
| }); |
| }); |
| }); |
| </script> |
| </head> |
| <body> |
| <div id="center"> |
| This is something in the middle. |
| </div> |
| <div id="drawer"> |
| This is a drawer. |
| </div> |
| <script> |
| 'use strict'; |
| var jankMs = 100; |
| function jankThread() { |
| console.time('Interaction.JankThreadJSRun/is_responsive'); |
| var startTime = window.performance.now(); |
| var currTime = startTime; |
| while (currTime - startTime < jankMs) { |
| var currTime = window.performance.now(); |
| } |
| console.timeEnd('Interaction.JankThreadJSRun/is_responsive'); |
| } |
| var drawer = document.getElementById('drawer'); |
| drawer.addEventListener('click', jankThread); |
| </script> |
| </body> |
| </html> |