Algorithm determining the position and the size of boxes based on the way they interact with their sibling and ancestor boxes
Applique tous les styles visuels
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas nec purus ante. Maecenas a dui bibendum enim tincidunt bibendum. Aenean fermentum, nunc ac dignissim efficitur, lorem arcu eleifend mauris, ac accumsan leo arcu eget lorem. Proin nec elementum libero.
Vivamus tempus neque a tellus euismod volutpat. Quisque efficitur mauris urna. Suspendisse mollis facilisis convallis.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas nec purus ante. Maecenas a dui bibendum enim tincidunt bibendum. Aenean fermentum, nunc ac dignissim efficitur, lorem arcu eleifend mauris, ac accumsan leo arcu eget lorem. Proin nec elementum libero.
Vivamus tempus neque a tellus euismod volutpat. Quisque efficitur mauris urna. Suspendisse mollis facilisis convallis.
Le but est d'atteindre les 60 FPS (images par seconde)
Soit ~16.6ms entre chaque image
function draw() {
requestAnimationFrame(draw);
// Drawing code goes here
}
requestAnimationFrame(draw);
var latestKnownScrollY = 0;
function onScroll() {
latestKnownScrollY = window.scrollY;
}
function update() {
requestAnimationFrame(update);
var currentScrollY = latestKnownScrollY;
// Drawing code goes here
}
requestAnimationFrame(update);
window.addEventListener('scroll', onScroll, false);
Est soumis à l'Event Loop car dans la Main Thread
element.animate([
{transform: 'translate(200px, -100%)'},
{transform: 'translate(200px, ' + window.innerHeight + 'px)'}
], {
duration: 1500,
iterations: 10,
delay: 300
});
Controller l'animation !
var animation = element.animate({transform: 'translateX(300px)'}, 1000);
animation.play();
animation.pause();
animation.currentTime = 500;
animation.playbackRate = 0.5;
animation.reverse();
Freelance Front-end
React.js • Mobile First • Hybrid & Progressive Web Apps