Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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);
          }
    }
  }
}
Ответить с цитированием
  #2 (permalink)  
Старый 22.12.2015, 04:11
Интересующийся
Отправить личное сообщение для madCoder Посмотреть профиль Найти все сообщения от madCoder
 
Регистрация: 01.12.2015
Сообщений: 10

мало информации , пока могу посоветовать только
Генерация событий на элементах https://learn.javascript.ru/dispatch-events

вешаешь события на document и имитируешь клик по координатам и дальше просто проверяешь это тот элемент который тебе нужен или нет
Ответить с цитированием
  #3 (permalink)  
Старый 22.12.2015, 19:44
Новичок на форуме
Отправить личное сообщение для arch_7 Посмотреть профиль Найти все сообщения от arch_7
 
Регистрация: 21.12.2015
Сообщений: 7

madCoder, спасибо за совет!
Подскажите пожалуйста, каким образом можно проверить над каким элементом было событие? В примере нужный элемент перекрыт красным дивом. https://jsfiddle.net/rd2d2/hkqqr53L/
Ответить с цитированием
  #4 (permalink)  
Старый 22.12.2015, 20:36
Интересующийся
Отправить личное сообщение для madCoder Посмотреть профиль Найти все сообщения от madCoder
 
Регистрация: 01.12.2015
Сообщений: 10

https://developer.mozilla.org/en-US/...ementFromPoint

<style>
    .wrap {
        position: absolute;
        background-color: rgba(255, 0, 0, 0.69);
        width: 200px;
        height: 200px;
        top: 0;
        left: 0;
    }
</style>

<body>
<div class="wrap"></div>
<span id="elem" onmouseover="alert();">elem</span>
</body>


<script>

var elem = document.getElementById('elem');

var x = elem.offsetLeft, y = elem.offsetTop;

console.log(document.elementFromPoint(x, y))



</script>

Последний раз редактировалось madCoder, 22.12.2015 в 20:43.
Ответить с цитированием
  #5 (permalink)  
Старый 23.12.2015, 00:48
Новичок на форуме
Отправить личное сообщение для arch_7 Посмотреть профиль Найти все сообщения от arch_7
 
Регистрация: 21.12.2015
Сообщений: 7

Большое вам спасибо! То что нужно.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
определить элемент под перетаскиваемым элементом slavaspirit Элементы интерфейса 3 26.07.2015 01:49
Как определить первый элемент в списке? veltony Элементы интерфейса 2 15.02.2015 15:07
Замена DOM элемента другим элементом MaxXxaM Events/DOM/Window 5 04.05.2013 01:24
Вставить элемент пред другим элементом? Dudo4nick Events/DOM/Window 7 07.12.2011 13:51
определить элемент на котором щелчок warobushek Events/DOM/Window 3 13.06.2010 12:04