我不是在寻找一个行动调用的时候徘徊,而是以某种方式告诉如果一个元素正在上空盘旋目前.例如:
$('#elem').mouseIsOver(); // returns true or false
Run Code Online (Sandbox Code Playgroud)
是否有一个jQuery方法来实现这一目标?
我有两个div元素.每个都有450px的宽度和高度.如何检查第一个div是否与第二个div重叠?
我试过使用javascript hittest,但它有点复杂.因为我试图找出它实际上是如何工作的,所以我想开始使用更简单的代码.
我发现我可以使用.getClientRects来获取元素的边界,但我不确定如何比较边界.
请建议我!
有人可以帮我理解碰撞检测在JS中是如何工作的吗?我不能使用jQuery或gameQuery - 已经使用原型 - 所以,我正在寻找一些非常简单的东西.不要求完整的解决方案,只需指出正确的方向.
让我们说:
<div id="ball"></div>
and
<div id="someobject0"></div>
Run Code Online (Sandbox Code Playgroud)
现在球正在移动(任何方向)."Someobject"(0-X)已经预先定义,其中有20-60个随机定位如下:
#someobject {position: absolute; top: RNDpx; left: RNDpx;}
Run Code Online (Sandbox Code Playgroud)
我可以创建一个带有"someobject(X)"位置的数组,并在"ball"移动时测试碰撞...类似于:
for(var c=0; c<objposArray.length; c++){
........ and code to check ball's current position vs all objects one by one....
}
Run Code Online (Sandbox Code Playgroud)
但我想这将是一个"noob"解决方案,它看起来很慢.有更好的吗?
我正在创建一个交互式家谱树创建者,不像更简单的版本,它是简单的谱系图表/树.
我的要求(基于familyecho.com)是:
我遇到的问题是:我正在根据"当前"节点/家庭成员生成偏移量,当我越过第一代时,例如2个父母,它重叠.
重叠的示例以及未在同一X轴上绘制的伙伴:
这是我遇到问题的实际app和主js文件.这里是一个简化的jsfiddle我创建演示父/偏移问题,但我真的要解决重叠这个一般,除了确保合作伙伴绘制在同一x轴的其他合作伙伴.
我怎样才能解决这个问题以及未来可能发生的重叠冲突?我是否需要某种重绘功能来检测碰撞并在检测到时调整每个块的偏移?我试图让它无缝,所以重绘的次数有限.
计算相对于"上下文"或当前节点的偏移量的示例:
var offset = getCurrentNodeOffset();
if ( relationship == RELATIONSHIPS.PARTNER ) {
var t = offset.top; // same level
var l = offset.left + ( blockWidth + 25 );
} else {
var t = offset.top - (blockHeight + 123 ); // higher
var l = offset.left - ( blockWidth - 25 );
}
Run Code Online (Sandbox Code Playgroud) 基本上我想检查一个div是否正在徘徊另一个div,我已经搜索了很多,但找不到任何东西D:
我做了一个你可以使用箭头键控制的div,所以现在我想检查那个div是否正在盘旋另一个div,如果是这样它应该做点什么.
我真的无法弄明白,请帮忙.
有没有办法用Javascript获取DOM元素的边界框坐标?
显然我可以从各种CSS属性中计算它:width,height等等.
我问,因为有许多其他图形平台提供此方法.例如,显然可以按照这篇文章在XUL中完成,它描述了一种方法getBoundingClientRect().
(我的目标是检查两个元素是否重叠.)
我在jsfiddle中有这个例子
我有一个var作为碰撞元素:
var $div = $('.container');
Run Code Online (Sandbox Code Playgroud)
然后碰撞:
function test (){
$('.drag')
.drag("start",function( ev, dd ){
dd.limit = $div.offset();
dd.limit.bottom = dd.limit.top + $div.outerHeight()
- $( this ).outerHeight();
dd.limit.right = dd.limit.left + $div.outerWidth()
- $( this ).outerWidth();
})
.drag(function( ev, dd ){
$( this ).css({
top: Math.min( dd.limit.bottom, Math.max( dd.limit.top, dd.offsetY ) ),
left: Math.min( dd.limit.right, Math.max( dd.limit.left, dd.offsetX ) )
});
});
}
Run Code Online (Sandbox Code Playgroud)
对于:
<div class="container"></div>
<div class="drag xxx" style="left:40px;"></div>
<div class="drag xxx" style="left:120px;"></div>
<div class="drag xxx" style="left:200px;"></div> …Run Code Online (Sandbox Code Playgroud) 我编写了大部分代码......当元素"完全"覆盖其他元素时,它就可以工作了.问题是,当元素"完全"在元素上时,我不仅仅希望它是真的,当元素部分地超过另一个元素时,我也希望它是真的.
这是我的代码:
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) …Run Code Online (Sandbox Code Playgroud) 这就是我现在正在做的事情:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>untitled</title>
<meta name="generator" content="TextMate http://macromates.com/">
<style type="text/css" media="screen">
body { font-family:"HelveticaNeue-Light"; margin: 0px; }
input { width: 75%; }
#wrap { background: #f1f1f1; border: 1px solid #d9d9d9; padding: 0px; }
/* #sprite { position: relative; background: #909090; width: 20px; height: 20px; padding: 20px; }*/
#spriteChatBubble { position: relative; background: #fff; border: 1px solid #000; font-size: 10px; max-width: 200px; }
#controlArea { margin-top: 50px; }
.button …Run Code Online (Sandbox Code Playgroud) 有谁知道如何检查某些div之间的冲突?目前我正在使用getBoundingClientRect(),但它检查每个div:
if (this.getBoundingClientRect()) {
animateContinue = 1;
}
Run Code Online (Sandbox Code Playgroud)
我该如何检查具体的?使用这个for循环我可以得到我想要检查的div的ID.
for (var x = 1; x <= noOfBoxArt; x++) {
console.log('#boxArt'+x);
}
Run Code Online (Sandbox Code Playgroud) javascript ×8
jquery ×4
css ×2
html ×2
boundary ×1
charts ×1
family-tree ×1
genealogy ×1
jsplumb ×1
mootools ×1