TEL:400-8793-956
当前位置:程序、服务器

如何检测两个元素之间的碰撞。

提问者: 近期获赞: 浏览人数: 发布时间:2020-12-23 14:13:40

 问:谁能给我这个主意。如何检测2 dom元素之间的冲突。我有此代码形式MDN。但不能彻底解决。请帮我。var rect1 = {x:5,y:5,宽度:50,高度:50} var rect2 = {x:20,y:10,宽度:10,高度:10}如果(rect1.x <rect2.x + rect2.width && rect1.x + rect1.width> rect2.x && rect1.y <rect2.y + rect2.height && rect1.height + rect1.y> rect2.y){//检测到冲突!} //填写值=> if(5 <30 && 55> 20 && 5 <20 && 55> 10){//检测到碰撞!}

 
 
 
答:嗨,我为您制作了一个简化的示例。我通过使用jQuery拖动效果来构建碰撞功能。请通过下面的代码。
 
<!DOCTYPE html PUBLIC“-// W3C // DTD XHTML 1.0 Transitional // EN”“ http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> 
  <html xmlns =“ http://www.w3.org/1999/xhtml”> 
  <头> 
  <meta http-equiv =“ Content-Type” content =“ text / html; charset = utf-8” /> 
  <title>元素碰撞测试</ title> 
 
  <script src =“ https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js”> </ script> 
  <script src =“ https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js”> </ script> 
 
  <script type =“ text / javascript”>  
      $(document).ready(function(e){ 
          $('。elem2')。draggable({ 
            //启动拖动功能
              拖动:function(){
                //元素1的属性 
                var elem1X = $('。elem1')。offset()。left; 
                var elem1Y = $('。elem1')。offset()。top; 
                var elem1Width = $('。elem1')。width(); 
                var elem1Height = $('。elem1')。height(); 
 
                //元素2的属性
                var elem2X = $('。elem2')。offset()。left; 
                var elem2Y = $('。elem2')。offset()。top; 
                var elem2Width = $('。elem2')。width(); 
                var elem2Height = $('。elem2')。height(); 
 
                 如果(elem1X <elem2X + elem2Width && elem1X + elem1Width> elem2X && 
                      elem1Y <elem2Y + elem2Height && elem1Height + elem1Y> elem2Y){ 
                          console.log(“ Elem 2 Div Collides”); 
                          $(this).css('background-color','yellow'); 
                }其他{        
                    $(this).css('background-color','blue'); 
                }     
              } //结束拖动功能//
          });  
      }); //文档就绪功能结束//
 
</ script> 
 
<style type =“ text / css”>  
  .elements {位置:绝对;}
  .elem1 { 
    宽度:50px; 
    高度:50px; 
    背景:红色; 
    top:5px; 
    左:5px;
  } 
  .elem2 { 
    宽度:60px; 
    高度:40px; 
    背景:蓝色; 
    最高:60px; 
    左:60px;
  } 
</ style> 
 
</ head>
 
 
<身体> 
<div style =“ width:80%; margin:0 auto; padding:5px 5px; border:2px solid#a9a9a9; position:relative;”> 
    <div id =“ cr-stage” style =“ height:400px;”> 
        <div class =“ elem1 elements”> </ div> 
        <div class =“ elem2 elements”> </ div> 
    </ div> 
 
    <p>拖动第二个矩形。黄色背景表示碰撞,蓝色表示没有碰撞。</ p>
</ div> 
</ body> 
</ html> 
 
使用此代码,希望对您有所帮助:)
上一篇: 无法上传图片,请稍后再试-Wordpress
下一篇: WordPress Savoy电子商务主题启用/禁用按钮