javascript - 如何判断两个元素是否接触

标签 javascript html

通过JavaScript,我想了解如何确定跨度和按钮是否接触。我看到了一些东西,Element.getBoundingClientRect()。如果这是这样做的方法,我该如何正确地做到这一点?

我已经尝试过使用 Element.getBoundingClientRect() 但很可能没有正确使用它。

  var span1 = document.getElementById("mySpan")
  var button = document.getElementById("myButton")
  if(touches(span1, button)){
   ...
   }

最佳答案

检查(内联元素)span 元素和 button 元素是否彼此相邻。

var span = document.getElementsByTagName("span")[0]
var btn = document.getElementsByTagName("button")[0]

if(touches(span, btn)){
  console.log('touching!')
}

function touches(span, btn) {
   var rect1 = span.getBoundingClientRect();
   var rect2 = btn.getBoundingClientRect();

  if (rect1.right == rect2.left) {
     return true;
  }
}
<span>Span</span><button>Btn</button>

<小时/>

对于div元素等 block 元素

var div1 = document.getElementsByTagName("div")[0]
var div2 = document.getElementsByTagName("div")[1]

if(touches(div1, div2)){
  console.log('Touching!')
}

function touches(div1, div2) {
  var rect1 = div1.getBoundingClientRect();
  var rect2 = div2.getBoundingClientRect();

  if (rect1.bottom == rect2.top) {
      return true;
  }
}
<div>Div 1</div><div>Div 2</div>

关于javascript - 如何判断两个元素是否接触,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55801868/

相关文章:

javascript - 自动将文本插入表单?

javascript - 如何用图像替换 3 个随机字符

javascript - FIREFOX 中的粘滞菜单错误

css 左侧的 div 更亮?

jquery - LightBox 与 jquery.animate-enhanced 冲突

HTML 页面 ID 与显示的不同

javascript - Ramda 柯里化(Currying) : how to apply argument to multiple parameters

javascript - 客户端心投票

javascript - 在每次出现时获取每个 child 的高度总值

javascript - Kalendae js : Is there a way to automatically close the calendar once a date has be selected?