Решил сделать что-то простенькое типа, когда двигается мышка меняется угол поворота у квадрата. Потом добавил, когда зажимаешь мышь он увеличивается в размерах, так же поворачивается. И в этом режиме, когда уводишь мышку в самый левый или правый край, формула вычисления угла начинает работать странно(попробуйте так сделать, поймете). Как устранить проблему?
Так же плюсом было бы рассказать, как работают формула нахождения угла и объяснить почему, когда умножаешь переменную dist (в том режиме увеличения размеров) на корень из двух, формула начинает работать нормально(уберете строчку, поймете).
код:
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
:root {
--rotate:0rad;
--h: 200px;
}
body {
margin: 0;
}
.outer {
display: flex;
height: 100vh;
max-height: 100vh;
overflow:hidden;
width: 100%;
}
.div {
text-align: center;
margin: auto;
height: var(--h);
width: var(--h);
background-color: grey;
transform: rotate(var(--rotate));
}
.div p {
color: #fff;
margin-top: 0;
font:30px Sans-serif;
}
.div p::after {
content: 'eE'
}
</style>
</head>
<body>
<div class="outer">
<div class="div"><p></p></div>
<script>
w = window.innerWidth,
h = window.innerHeight;
var f = Math.sqrt(2)
function checkDist(x1,y1,x2,y2) {
return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2))
}
var div = document.querySelector('.div')
var divH = div.scrollHeight
var divHover = false
var PI = Math.PI
div.onmouseover = e=>{
divHover=true
}
div.onmouseout = ()=>{divHover=false}
document.addEventListener('mousedown', e=>{
document.onmousemove = e=>{
rads = Math.atan2(e.y-h/2, e.x-w/2)+PI/2+PI/4
dist = checkDist(e.x,e.y,w/2,h/2)*f+f
degs = Math.round(180/PI*rads);
document.querySelector(':root').style.setProperty('--rotate', degs+'deg')
document.querySelector(':root').style.setProperty('--h', dist+'px')
}
})
document.addEventListener('mouseup', ()=>{document.onmousemove = undefined})
document.addEventListener('mousemove', e=>{
if(!divHover) {
rads = Math.atan2(e.y-h/2, e.x-w/2)+PI/2
degs = Math.round(180/PI*rads);
document.querySelector(':root').style.setProperty('--rotate', degs+'deg')
//document.body.style.setProperty('--rotate', rads+'rad')
}
})
</script>
</div>
</body>
</html>
Формула вычисления угла работает правильно.
А вот центр рисуемого квадрата при превышении размера смещается вниз, а не остаётся в центре окна рисования
Расстояние от центра до мышки есть половинка диагонали квадрата, а для получения стороны квадрата нужно её умножить на корень из двойки - это правильно.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Не могу разбросаться как выводить значения при заполнение Input в одном компоненте через store Для вывода в другом, сейчас сделал через computed, всё...
Есть несколько блоков с товарами, по клику на блок нужно изменить стили дочерних элементов (уsizes-block,