<div id="move-me-3">Текст</div>
<button type="button">ЗДЕСЬ</button>
body, html {margin: 0; padding: 0; }
#move-me-3 {
border: 1px dashed black;
border-radius: 80px;
background-color: #ffe;
padding: 10px;
width: 80px;
height: 80px;
text-align: center;
margin: -45px 0 0 -45px;
}
button {
width: 70px;
height: 70px;
border-radius: 70px;
margin: -35px 0 0 -35px;
}
#move-me-3, button {
position: absolute;
top: 50vh;
left: 50vw;
}
const rho = 150;
let phi = -5;
const phiPerSecond = (Math.PI / 180) * 0.1;
let toggle = true;
const el = document.getElementById("move-me-3");
const position = ({ style }, r, angle) => {
const x = r * Math.cos(angle);
const y = r * Math.sin(angle);
// eslint-disable-next-line no-param-reassign
style.transform = `translate(${x}px, ${y}px)`;
};
let previousTime;
const update = timestamp => {
const timeDelta = previousTime ? timestamp - previousTime : 0;
previousTime = timestamp;
position(el, rho, phi);
phi += timeDelta * phiPerSecond;
if (toggle) {
window.requestAnimationFrame(update);
} else {
previousTime = undefined;
}
};
const toggleAnimation = () => {
toggle = !toggle;
if (toggle) {
window.requestAnimationFrame(update);
}
};
document.querySelector('button').addEventListener('click', toggleAnimation);
// start animation
window.requestAnimationFrame(update);
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.