如何在JavaScript中检测一个元素何时覆盖另一个元素
How to detect when an element over another element in JavaScript?
我写了大部分代码。。。当一个元素"完全"超过另一个元素时,它就起作用了。问题是,我不仅希望当元素"完全"在元素上时它是真的,我还希望当元素部分在另一个元素上时是真的。
这是我的代码:
element = this.element.getStyles('left', 'top', 'width', 'height');
elementLeftX = element.left.toInt();
elementLeftY = element.top.toInt();
elementRightX = (element.width.toInt() + element.left.toInt());
elementRightY = (element.top.toInt() + element.height.toInt());
el = this.positions ? this.positions[i] : this.getDroppableCoordinates(el); // Element drop area
elLeftX = el.left.toInt();
elLeftY = el.top.toInt();
elRightX = (el.width.toInt() + el.left.toInt());
elRightY = (el.height.toInt() + el.top.toInt());
if (((elLeftY <= elementLeftY) && (elementLeftY <= elRightY)) && ((elLeftY <= elementRightY) && (elementRightY <= elRightY))) {
if (((elLeftX <= elementLeftX) && (elementLeftX <= elRightX)) && ((elLeftX <= elementRightX) && (elementRightX <= elRightX))) {
return true;
} else {
return false;
}
} else {
return false;
}
我很困惑,我已经玩了一段时间了,我就是不能让它发挥作用。
标准视频游戏方法:
doElsCollide = function(el1, el2) {
el1.offsetBottom = el1.offsetTop + el1.offsetHeight;
el1.offsetRight = el1.offsetLeft + el1.offsetWidth;
el2.offsetBottom = el2.offsetTop + el2.offsetHeight;
el2.offsetRight = el2.offsetLeft + el2.offsetWidth;
return !((el1.offsetBottom < el2.offsetTop) ||
(el1.offsetTop > el2.offsetBottom) ||
(el1.offsetRight < el2.offsetLeft) ||
(el1.offsetLeft > el2.offsetRight))
};
请参阅演示
如果您对使用jQuery感兴趣(或者如果您已经感兴趣),可以使用一些很棒的碰撞检测插件。这是之前的一个详细答案https://stackoverflow.com/a/6052254/374866
尝试时称为"碰撞检测"。您需要获取元素的COMPUTED偏移量和维度,而不仅仅是元素的样式声明。
这篇帖子可能有助于解释:
jQuery/JavaScript冲突检测
相关文章:
- 使用clickToggle并在单击另一个元素时关闭元素
- 表追加而不附加最后一个元素
- 滚动到容器中的下一个元素-几乎到了
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 按我自己的类克隆另一个元素的内容和顺序
- Javascript获取上一个元素的内容
- 如何通过HTML+CSS中的另一个元素Selector更改元素的属性值
- 在数组中的一个元素上设置多个值
- 指令的模板必须只有一个根元素:With restrict E&替换true
- HTML JavaScript,我如何能够通过给每个元素一个不同的Id来使用JavaScript使这个函数工作
- 如何创建一个独立的 DOM 元素?一个不从父母那里继承 css 等
- 如何给图像元素一个“;选择“;使用Raphael.js查看
- 如何显示隐藏的
- 元素一个接一个或全部同时
- 使用"span"创建一个自定义的基于web的文本编辑器;元素——一个坏主意
- 引导旋转木马传递元素一个接一个
- 给所有元素一个匹配数组内容的ID
- 我如何得到Json数组元素一个接一个的jquery上不同的id'
- 一次淡入附加元素一个
- 如何使用AngularJS检索外部网站的内容(一个元素一个元素)