1

Тема: Координати кліку всередині елемента

Якось вирішив написати ілюстрацію до задачі про дощову воду в гістограмі:
https://codepen.io/bunyk-1472854887/pen/VJzeWv

Тільки в мене якась проблема з редагуванням гістограми. Хочу щоб коли я клікаю всередині мого SVG розміром 600x200, висота прямокутника в тому місці гістограми де я клікнув ставала якраз такою щоб приблизно дотягувати до кліку. Але воно чомусь глючить і часто наприклад міняє перший прямокутник, хоча я клікаю десь посередині.

Код обчислення по тому яка клітинка всередині картинки натиснута якийсь такий:

      var rect = e.target.getBoundingClientRect();
      var x = e.clientX - rect.left; //x position within the element.
      var y = e.clientY - rect.top;  //y position within the element.
      y = Math.round((200 - y)/10);
      x = Math.round(x / 10);

Де я міг натупити?

2

Re: Координати кліку всередині елемента

в мене лише 1 раз перший почав рухатись, а так майже всюди все окей, за винятком, що замість того, на котрий я наводжу, рухається наступний прямокутничок

Говоріть українською! Живіть українською! Відчувайте українською!
Подякували: bunyk1

3

Re: Координати кліку всередині елемента

FakiNyan написав:

в мене лише 1 раз перший почав рухатись, а так майже всюди все окей, за винятком, що замість того, на котрий я наводжу, рухається наступний прямокутничок

Хм, в мене в хромі на мобільному і в Firefox на Ubuntu чомусь глючить. Щодо наступного - певне варто використовувати floor замість round.

4

Re: Координати кліку всередині елемента

Аааа, знайшов. Якщо клацати там де нема прямокутничків, то event.target - це svg. А якщо клацати по прямокутничку, то taget - це прямокутничок, відповідно воно дає координати всередині нього. Треба певне якщо target не svg - брати його parent.

Подякували: FakiNyan1