Показать сообщение отдельно
  #1 (permalink)  
Старый 21.12.2015, 17:16
Новичок на форуме
Отправить личное сообщение для arch_7 Посмотреть профиль Найти все сообщения от arch_7
 
Регистрация: 21.12.2015
Сообщений: 7

Определить перекрыт ли элемент другим элементом
Доброго дня!

Нужно определить перекрывают ли элемент другие элементы. Элементы которые могут перекрыть и их стили не известы.
Пока что, единственным решением было пройтись по всему DOM, проверяя координаты пересечения и z-index. JSFIDDLE
Проблема в том, что если у родителя будет стоять z-index, перекрытие будет ложным.
Может есть другое решение этой задачи?

var e = document.getElementById('e');
var eR = e.getBoundingClientRect();
var all = document.getElementsByTagName('*');
for (var i=0, max=all.length; i < max; i++) {
	var cR = all[i].getBoundingClientRect();
	if(all[i] != e) {
		if (((cR.top <= eR.top) && (eR.top <= cR.bottom)) &&
		   ((cR.top <= eR.bottom) && (eR.bottom <= cR.bottom)) &&
		   ((cR.left <= eR.left) && (eR.left <= cR.right)) &&
		   ((cR.left <= eR.right) && (eR.right <= cR.right))) {
       		var style = window.getComputedStyle ? getComputedStyle(all[i]) : all[i].currentStyle;
       		if(style.zIndex >= 1) {
              console.log(style.zIndex);
          }
    }
  }
}
Ответить с цитированием