【问题标题】:Calculate div overlap area and position计算div重叠区域和位置
【发布时间】:2013-06-12 22:21:25
【问题描述】:

假设我有两个绝对定位的 div,是否可以计算这两个 div 重叠的位置,然后绘制另一个 div 放置在重叠区域的顶部。

我一直在网上搜索,我发现的大多数东西都只涉及重叠检测,like this fiddle

我不明白如何获取重叠区域的以下位置:

offsetTop
offsetLeft
width
height

如果有任何帮助,请指出我将从哪里开始。

我有 this fiddle 我一直在玩的东西 - 你会看到我正在尝试创建一个 div 来坐在重叠部分并将它着色为两种颜色的混合

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

我还没有错误检查它,但我相信你想要这样的东西:http://jsfiddle.net/GApu5/4/

计算如下:

var l1=div1.offset().left-8;
var t1=div1.offset().top-8;
var w1=div1.width();
var h1=div1.height();

var l2=div2.offset().left-8;
var t2=div2.offset().top-8;
var w2=div2.width();
var h2=div2.height();    

var top = Math.max(t1,t2);
var left = (l2>l1 && l2<(l1+w1)) ? l2 : (l1>l2 && l1<(l2+w2)) ? l1 : 0;
var width = Math.max(Math.min(l1+w1,l2+w2) - Math.max(l1,l2),0);
var height = Math.max(Math.min(t1+h1,t2+h2) - Math.max(t1,t2),0);
overlay.css({'top': top, 'left': left, 'width': width, 'height': height});

并在各个方面展示作品:http://jsfiddle.net/GApu5/5/

【讨论】:

  • -8 有什么用?我将他的代码复制到我的小提琴中,我不得不将顶部更改为-10
  • 啊,它被边缘以及包装纸和主体推出。谢谢这是完美的
  • 是的,我没有检查,但边距、填充、边框等会稍微影响它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多