MiiZZo
@MiiZZo
JavaScript, React, NodeJS, Student

Как узнать, пересекаются ли блок с каким-либо другим с position absolute?

Все блоки имеют position absolute, вот пример в песочнице - https://codepen.io/lucienglue/pen/QWKgvXo и необходимо узнать, пересекается ли конкретный блок с каким-либо другим.
Так же, блоков может быть очень много.
  • Вопрос задан
  • 683 просмотра
Пригласить эксперта
Ответы на вопрос 2
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
  1. Берёте координаты вершин одного блока
  2. Проверяете лежит ли хоть одна точка в плоскости другого блока. Если да -- значит блоки пересекаются.
  3. Повторить то же самое для координат вершин первого блока по отношении ко второму
Ответ написан
@ksnk
Для каждого элемента берем getBoundingClientRect и проверяем, что пересечение существует.
Извиняюсь, что на jQuery, но смысл, вроде и так понятен.
$(function(){
  var elements=$('.red,.yellow');
  for(let i=0;i<elements.length;i++){
    let ri=elements.eq(i)[0].getBoundingClientRect();
    for(let j=i+1;j<elements.length;j++){
      let rj=elements.eq(j)[0].getBoundingClientRect();
      console.log(//ri,rj, 
                  Math.max(ri.x,rj.x)<=Math.min(ri.x+ri.width,rj.x+rj.width)
                 &&
                  Math.max(ri.y,rj.y)<=Math.min(ri.y+ri.height,rj.y+rj.height)
                 )
    }
  }
})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы