Используя JS необходимо изменять цвет элемента div, в зависимости от положения на экране

Прошу помощи, у меня есть элемент div(квадрат), который можно перетаскивать по экрану браузера, необходимо "условно" поделить экран на 4 части, и менять цвет перетаскиваемого объекта в зависимости от положения на экране, то есть, мой квадрат должен иметь 4 состояния цвета и менять их в зависимости от координат окна браузера. Вот код, который есть на данный момент, не судите строго.

<html>
<head>

</head>
<body onmousemove="mouseMoveFunction()">
<div id="test" style="width: 150px;height: 150px; border: 1px solid red; background-color: black; position: absolute"></div>
<script>

   clicked = false;
   document.addEventListener('mousedown', function (e){
       clicked = true;
   });
   document.addEventListener('mouseup', function (e){
       clicked = false;
   });


    document.addEventListener('mousemove', function (e){
        //console.log(e);
        if (clicked) {
            a = document.querySelector('#test');
            a.style.top = e.clientY;
            a.style.left = e.clientX;
        }
    });

   document.addEventListener('mousemove',function changeBackground() {
       if ($(window).innerHeight<500){
      document.getElementById('test').style.backgroundColor='#aa1151';
       }
   });    



</script>
</body>
</html>

Ответы (1 шт):

Автор решения: UserTest013

let isPresed = false;
let colors = ['#000', '#f00', '#0f0', '#00f'];
let root = document.documentElement;
root.style.setProperty('--bg', colors[0]);

root.addEventListener('mousedown', () => isPresed = true);
root.addEventListener('mouseup', () => isPresed = false);

root.addEventListener('mousemove', (e) => {
  if (isPresed) {
    const isBottom = window.innerHeight / 2 < e.clientY;
    const isRight = window.innerWidth / 2 < e.clientX;
    const index = !isRight && isBottom ? 3 : isBottom + isRight;
    root.style.setProperty('--x', e.clientX);
    root.style.setProperty('--y', e.clientY);
    root.style.setProperty('--bg', colors[index]);
  }
});
#test {
  width: 30px;
  height: 30px;
  background-color: var(--bg);
  transform: translate(calc(var(--x) * 1px), calc(var(--y) * 1px));
}
<div id="test"></div>

→ Ссылка