- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Wed, 15 Apr 2020 13:50:28 -0700
- To: www-archive@w3.org
http://software.hixie.ch/utilities/js/live-dom-viewer/saved/7963 ```html <!DOCTYPE html> <div id='two-values'>Interpolating the two values separately</div> <div id='one-value'>Interpolating the division result</div> <div id='separate'>Interpolating width and height</div> <style> div { width: 500px; height: 100px; border: solid; margin: 1em; } body { display: grid; grid-template-columns: repeat(3, 1fr); } </style> <script> function go() { const one = document.querySelector('#one-value'); const two = document.querySelector('#two-values'); const three = document.querySelector('#separate'); const duration = 5; // seconds each way let progress = (Date.now()/1000) % (duration * 2); let interp = progress < duration ? progress/duration : 1 - (progress - 5)/duration; const width = linearInterp(500, 300, interp); three.style.width = two.style.width = one.style.width = width + "px"; two.style.height = width / (linearInterp(5, 3, interp) / linearInterp(1, 2, interp)) + "px"; one.style.height = width / linearInterp(5/1, 3/2, interp) + "px"; three.style.height = linearInterp(100, 200, interp) + "px"; requestAnimationFrame(go); } go(); function linearInterp(v1, v2, p) { return v1*(1-p) + v2*p; } </script> ```
Received on Wednesday, 15 April 2020 20:51:00 UTC