HTML 5画布,与背后的HTML标签交互
HTML 5 Canvas, interact with HTML tags behind it?
好的,所以我在网站顶部有一个HTML5画布元素来覆盖雪效果。
我使用这个CSS来获得网站其他部分的雪效果:
#snow {
width: 100%;
position: absolute;
top: 0;
left: 0;
pointer-events: none;
}
我想做的是让雪与页面上的元素互动。例如,如果它碰到<p>
标签,它将停止。因此,雪逐渐堆积在页面上的元素上。
我该怎么做?如何使用Javascript获取不同层上元素的位置?
原理相当直接。
- 收集要与之交互的元素
- 提取表示每个元素的绝对位置的每个元素的客户端矩形
- 滚动更新等
演示
在这个演示中,表示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);
}
}
(抱歉,没有snow演示,但您应该能够使用它来实现您的要求)。
相关文章:
- 如何在tinymce编辑器中将点击事件绑定到html标签
- 如何将具有相同功能的两个select html标签的两个JS组合在一起
- 带有html标签的Summernote内容
- 为什么我的HTML标签消失了
- 如何忽略单词like“”中的未使用空格;测试-文本”;同时构建html标签
- 在AngularJS中过滤-html标签中的文本
- 如何在另一个 html 标签内选择 web 元素硒 Web 驱动程序与 html 源
- 我怎么能"合并”;两个HTML标签
- JavaScript if else 语句来显示 html 标签
- 在 JavaScript 中实现 HTML 标签
- 如何用jQuery替换HTML标签的一部分
- 在javascript文件中编写html标签而不是“text”
- 窗口确认在 AJAX 帖子中打印 HTML 标签
- 如何在javascript函数中弹出php(与html标签混合)文件
- HTML标签的问题与Javascript一致
- 使用Javascript获取所有html标签
- 如何从JavaScript外包HTML标签
- Ckeditor:如何在mysql中避免使用Ckeditor中的html标签来节省时间
- 如何在 jquery 和 javascript 中检索 html 标签属性
- 如何获取html标签的字体大小