x, y, которые являются координатами, дальше вешается слушатель на мышку который следит когда мышка двигается. А третий этап написать выражение которые вычислит новое значение координат картинке в зависимости от положения мышы. Вот пример type TArray<T> = T extends { [key: string]: string } ? {[key: string]: string} : {[key: string]: string}[];<p></p>. Но это не совсем удобно, потому что придут отступы, которые по дефолту и нужно будет для них писать стили чтобы ушли. По этой причине оборачивают не в p, а spanсо width: 100%, либо просто вdiv, так как он по умолчанию имеет display: block, который занимает всю ширину родителя.я i меньше длины pipe.length будет выполняться:ctx.drawImage с переданными аргументамиpipeUp, pipe[i].x, pipe[i].ypipeBottom, pipe[i].x, pipe[i].y + pipeUp.height + gappipe[i].x-- - происходит декремент, то есть уменьшение pipe[i].x на единицуpipe[i].x === 125x, котрый равен cvs.width и с ключем y , который равен Math.floor(Math.random() * pipeUp.height) - pipeUp.height или{
x: cvs.width,
y: Math.floor(Math.random() * pipeUp.height) - pipeUp.height
} useEffect = (()=>{запрос},[]) let months = [1,2,3,4,5,6,7,8,9,10,11,12]
let month = 10
let ul = document.createElement('ul')
for(let i = 0; i<months.lenght; i++) {
let li = document.createElement("li")
li.innerHTML = i
ul.appendChild(li)
if(i+1 === 10) li.classList.app('cursive')
}
document.body.appendChild(ul)