Доброго дня!
Нужно определить перекрывают ли элемент другие элементы. Элементы которые могут перекрыть и их стили не известы.
Пока что, единственным решением было пройтись по всему 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);
}
}
}
}