好的,所以我的网站顶部有一个HTML 5画布元素来叠加雪效果。
我使用这个CSS在网站的其余部分上获得雪花效果:
#snow {
width: 100%;
position: absolute;
top: 0;
left: 0;
pointer-events: none;
}
我想做的是让雪与页面上的元素进行交互。例如如果它遇到<p>
标记,则会停止。所以雪逐渐积累在页面上的元素上。
我该怎么做呢?如何使用Javascript获取不同图层上元素的位置?
答案 0 :(得分:0)
原则是相当直接的。
在此演示中,表示DOM元素的红色方块在画布上绘制,而不是由CSS设置。这是为了说明原理。你可以用代码做的是将这些矩形用作碰撞对象而不是雪。
获取我们想要与之互动的元素:
var elements = document.querySelectorAll('p'); /// all "P" elements
现在遍历集合并从每个集合中获取绝对边界矩形:
function getRects() {
for(var i = 0; i < elements.length; i++) {
/// get rect for this element
rect = elements[i].getBoundingClientRect();
/// use it for something, or store in an array etc.
ctx.strokeRect(rect.left,
rect.top,
rect.width,
rect.height);
}
}
(对不起,没有雪地演示,但你应该能够用它来实现你的要求)。