transform-interpolation-inline-value.html (4617B)
1 <!DOCTYPE html> 2 <meta charset="UTF-8"> 3 <title>transform interpolation</title> 4 <link rel="help" href="https://drafts.csswg.org/css-transforms/#interpolation-of-transform-functions"> 5 <meta name="assert" content="transform gives the correct inline values when interpolated"> 6 7 <script src="/resources/testharness.js"></script> 8 <script src="/resources/testharnessreport.js"></script> 9 <script src="/web-animations/testcommon.js"></script> 10 11 <body> 12 <script> 13 function interpolation_test(from, to, expected_50) { 14 test(t => { 15 let div = createDiv(t); 16 let anim = div.animate({transform: [from, to]}, 2000); 17 anim.pause(); 18 anim.currentTime = 1000; 19 anim.commitStyles() 20 let halfway = div.style.transform; 21 assert_equals(halfway, expected_50, "The value at 50% progress is as expected"); 22 }, "Interpolation between " + from + " and " + to + " gives the correct " + 23 "computed value halfway according to commitStyles."); 24 } 25 26 interpolation_test('translateX(0px)', 'translateX(50px)', 'translateX(25px)'); 27 interpolation_test('translateX(0%)', 'translateX(50%)', 'translateX(25%)'); 28 interpolation_test('translateY(0%)', 'translateX(50%)', 'translate(25%)'); 29 interpolation_test('translateX(50px)', 'translateY(50px)', 'translate(25px, 25px)'); 30 interpolation_test('translateX(50px)', 'translateZ(50px)', 'translate3d(25px, 0px, 25px)'); 31 interpolation_test('translateZ(50px)', 'translateX(50px)', 'translate3d(25px, 0px, 25px)'); 32 interpolation_test('translateZ(-50px)','translateZ(50px)', 'translateZ(0px)'); 33 interpolation_test('translate(0%)', 'translate(50%)', 'translate(25%)'); 34 interpolation_test('translate(50%)', 'translate(100%, 50%)', 'translate(75%, 25%)'); 35 interpolation_test('translate(0%, 50%)', 'translate(50%, 100%)', 'translate(25%, 75%)'); 36 interpolation_test('translate3d(0,0,-50px)','translateZ(50px)', 'translate3d(0px, 0px, 0px)'); 37 interpolation_test('translate(50px, 0px)', 'translate(100px, 0px)', 'translate(75px)'); 38 interpolation_test('translate(50px, -50px)', 'translate(100px, 50px)', 'translate(75px)'); 39 40 interpolation_test('rotate(30deg)', 'rotate(90deg)', 'rotate(60deg)'); 41 interpolation_test('rotateZ(30deg)', 'rotateZ(90deg)', 'rotateZ(60deg)'); 42 interpolation_test('rotate(0deg)', 'rotateZ(90deg)', 'rotate3d(0, 0, 1, 45deg)'); 43 interpolation_test('rotateX(0deg)','rotateX(90deg)', 'rotateX(45deg)'); 44 interpolation_test('rotate(0deg)', 'rotateX(90deg)', 'rotate3d(1, 0, 0, 45deg)'); 45 46 interpolation_test('scale(1)', 'scale(2)', 'scale(1.5)'); 47 interpolation_test('scale(1, 3)', 'scale(2)', 'scale(1.5, 2.5)'); 48 interpolation_test('scaleX(1)', 'scaleX(2)', 'scaleX(1.5)'); 49 interpolation_test('scaleY(1)', 'scaleY(2)', 'scaleY(1.5)'); 50 interpolation_test('scaleZ(1)', 'scaleZ(2)', 'scaleZ(1.5)'); 51 interpolation_test('scaleX(2)', 'scaleY(2)', 'scale(1.5)'); 52 interpolation_test('scaleX(2)', 'scaleY(3)', 'scale(1.5, 2)'); 53 interpolation_test('scaleZ(1)', 'scale(2)', 'scale3d(1.5, 1.5, 1)'); 54 interpolation_test('scale(1, 2)', 'scale(3, 4)', 'scale(2, 3)'); 55 interpolation_test('scale3d(1, 2, 3)', 'scale3d(4, 5, 6)', 'scale3d(2.5, 3.5, 4.5)'); 56 interpolation_test('scale3d(1, 2, 3)', 'scale(4, 5)', 'scale3d(2.5, 3.5, 2)'); 57 interpolation_test('scale(1, 2)', 'scale3d(3, 4, 5)', 'scale3d(2, 3, 3)'); 58 59 interpolation_test('skewX(0deg)', 'skewX(60deg)', 'skewX(30deg)'); 60 interpolation_test('skewX(0deg)', 'skewX(90deg)', 'skewX(45deg)'); 61 interpolation_test('skewX(0deg)', 'skewX(180deg)', 'skewX(90deg)'); 62 interpolation_test('skew(0deg, 0deg)', 'skew(60deg, 60deg)', 'skew(30deg, 30deg)'); 63 interpolation_test('skew(45deg, 0deg)', 'skew(0deg, 45deg)', 'skew(22.5deg, 22.5deg)'); 64 65 interpolation_test('perspective(10px)', 'perspective(2.5px)', 'perspective(4px)'); 66 interpolation_test('perspective(10px)', 'perspective(none)', 'perspective(20px)'); 67 interpolation_test('perspective(none)', 'perspective(none)', 'perspective(none)'); 68 69 // A matrix() with just scale and translation. 70 interpolation_test('matrix(2, 0, 0, 2, 10, 30)', 'matrix(4, 0, 0, 6, 14, 10)', 'matrix(3, 0, 0, 4, 12, 20)'); 71 72 // A matrix3d() with just scale and translation. 73 interpolation_test('matrix3d(1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 5, 10, 4, 1)', 'matrix3d(3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, -11, 2, 2, 1)', 'matrix3d(2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, -3, 6, 3, 1)'); 74 // A matrix3d() with just perspective. 75 interpolation_test('matrix3d(1, 0, 0, 3, 0, 1, 0, 2, 0, 0, 1, 8, 0, 0, 0, 1)', 'matrix3d(1, 0, 0, 5, 0, 1, 0, 8, 0, 0, 1, 14, 0, 0, 0, 1)', 'matrix3d(1, 0, 0, 4, 0, 1, 0, 5, 0, 0, 1, 11, 0, 0, 0, 1)'); 76 77 // NOTE: New tests added here should also be added in 78 // transform-interpolation-computed-value.html. 79 80 </script>