За последние 24 часа нас посетили 22707 программистов и 1270 роботов. Сейчас ищут 839 программистов ...

Как узнать перекрывает один элемент другой элемент и на сколько

Тема в разделе "JavaScript и AJAX", создана пользователем pr0n1x, 18 янв 2019.

  1. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    Здравствуйте.

    Есть 2 div, первый 100 на 100 пикселей, второй 50 на 50 пикселей.

    Как узнать перекрывает ли второй див, первый див? И если перекрывает то на сколько, например если он только на половину перекрывает, то как узнать эту половину?

    На обычном javascript без jQuery.
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    @pr0n1x, сколько вариантов перекрытия у вас возможны? Перекрывает снизу, перекрывает сверху, слева, справа или может даже каким-нибудь углом цепляет?
     
  3. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Короче, пока вы в раздумьях, давайте так - я вам даю наводку и возможно, что этого вам хватит. Есть такой метод, как getBoundingClientRect() . Он вернет вам всё, что необходимо для расчетов. Смотрите пример с открытой консолью.
    HTML:
    1. <div id="one"></div>
    2. <div id="two"></div>
    Код (CSS):
    1. div {
    2.     position: absolute;
    3. }
    4. #one {
    5.     width: 100px;
    6.     height: 100px;
    7.     outline: 1px solid #060;
    8. }
    9.  
    10. #two {
    11.     top: 80px;
    12.     left: 25px;
    13.     width: 50px;
    14.     height: 50px;
    15.     outline: 1px solid #900;
    16. }
    Код (Javascript):
    1. const rect1 = one.getBoundingClientRect();
    2. const rect2 = two.getBoundingClientRect();
    3.  
    4. console.table(rect1);
    5. console.table(rect2);
    Метод возвращает объект со следующими значениями:
    1. x и y - координаты верхнего левого угла элемента
    2. width и height - размеры элемента
    3. top и bottom - расстояние в px от верхней границы экрана
    4. left и right - расстояние в px от левой границы экрана
    Что еще нужно для полного счастья? Всё есть, дальше математика.
     
  4. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    Спасибо, то что нужно, а вообще пересечение только по ширине, второй див находится ровно по центру первого и может его пересекать или справа или слева.