右键点击没试过,不过如果是左键点击的话就需要用到 鼠标点击的坐标与元素相对位置 的判断了
举个栗子
<style>div{
background: red
width: 100px
height: 100px
}
</style>
<div id="one" onclick="fa(this)">
<div id="1" style="position: absolute">1</div>
<div id="2" style="position: absolute">2</div>
<div id="3" style="position: absolute">3</div>
</div>
<script>
function fa(a){
var arr = [] //点击位置元素ID集合
var x = event.clientX //鼠标x坐标
var y = event.clientY //鼠标y坐标
var childs = a.children
for (var i = 0i < childs.length i++){
var left = childs[i].offsetLeft //子元素左边界坐标
var right = childs[i].offsetLeft + childs[i].offsetWidth //子元素右边界坐标
var top = childs[i].offsetTop //子元素上边界坐标
var bottom = childs[i].offsetTop + childs[i].offsetHeight //子元素下边界坐标
if (left < x && right > x && top < y && bottom > y){
arr.push(childs[i].id) //将符合条件的元素ID加入集合
}
}
alert("鼠标点击位置下的所有子元素的id:" + arr)
}
</script>
当速度不同时,应该考虑到相互间的误差,比方说一个球速度每次增加1,另一个球每次增加3,那么当前个球到了位置99,后个球到了98,那么前者+1是100,后者+3是101,如果用相等来判断是否重叠,这里就会无法判断了。所以,这里不能用==来判断,而应该设定一个误差范围(比如3),两者位置相减的绝对值如果在这个范围内,就应该判断为重叠!比如这样:
if (Math.abs(X1-X2)<3 &&Math.abs(Y1-Y2)<3) {