#javascript
#javascript
Вопрос:
У меня есть два divs, один статический, а другой непрерывно перемещается каждые 2 секунды. Я хочу, чтобы каждый раз, когда эти divs сталкиваются, один из них (статический) переключал класс.
Я использую .getBoundingClientRect()
, но по какой-то причине он не работает.
Может ли кто-нибудь увидеть проблему в моем коде или подсказать мне лучшее решение для этого без использования библиотек (чистый Javascrit)?
Вот мой код:
var div1 = document.getElementById("div1");
var div2 = document.getElementById("div2");
var object_1 = div1.getBoundingClientRect();
var object_2 = div2.getBoundingClientRect();
if (object_1.left < object_2.left object_2.width amp;amp; object_1.left object_1.width > object_2.left amp;amp; object_1.top < object_2.top object_2.height amp;amp; object_1.top object_1.height > object_2.top){
div1.classList.add("collide");
}else{
div1.classList.remove("collide");
}
#div1{
position: absolute;
width: 50px;
height: 50px;
background: orange;
animation: div1 2s infinite;
}
#div2{
position: absolute;
width: 50px;
height: 50px;
background: pink;
transform: translateY(40vh);
}
.collide{
background: red !important;
}
@keyframes div1{
to{
transform: translateY(40vh);
}
}
<div id="div1"></div>
<div id="div2"></div>
Комментарии:
1. Ваш скрипт запускается только один раз при первой загрузке, а затем не повторяется. Вам нужно будет следить за изменениями. Посмотрите на Intersection_Observer_API
2. @pilchard, это имеет смысл. Я поместил весь свой скрипт внутрь
setInterval()
метода за 1 секунду, и теперь это работает 🙂