javascript - 在 Three.js 场景中使用 div 和 canvas 元素有什么区别?

标签 javascript html css three.js

我读到 Three.js 需要 HTML5 <canvas>元素。不过,我可以完美地制作一个简单的 <div>为其提供高度和宽度属性,然后添加 WebGLRenderer.domElement因为它是 HTML 层次结构中的子级。奇怪的是,如果我使用<canvas>,它就不起作用了。而不是 <div> ,因为场景保持全黑。

使用其中一种有什么区别?每种情况下的方法应有何不同?

我的理论是<div>如果设置了尺寸,元素可以用作 Canvas ,并且还具有元素所具有的所有优点,但浏览器仍然需要支持 HTML5 <canvas>元素以便正常工作,但我希望得到有更多知识的人的确认。

最佳答案

有两种方法。您可以将渲染器的 DOM 元素(即 <canvas> 元素)附加到您所做的另一个 DOM 元素(如果您查看 <div> 内部,您将找到 <canvas> ),或者将引用放在已存在<canvas>在渲染器的构造函数中:

renderer = new THREE.WebGLRenderer({ canvas: document.querySelector('canvas') })

在这两种情况下,您都会有 <canvas>运行时 DOM 中的元素。唯一的区别是,使用第一种方法时,您将其从脚本内部附加到 DOM,而使用第二种方法时,您在 HTML 文档中预定义它。

关于javascript - 在 Three.js 场景中使用 div 和 canvas 元素有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52288404/

相关文章:

javascript - Redux 商店没有更新

for循环中的Javascript按位逻辑

html - CSS 网格布局 - 将 <p> 与输入字段对齐

css - 在主 div 中居中 div 框

CSS flexbox 可滚动列

javascript - 使用 onClick 更改背景图像

javascript - 如何使用 dymo 和 javascript 库将文本分成三行?

javascript - 使用 innerHTML 显示的动态 div 与现有的静态内容重叠

html - 我需要在 index.html 文件顶部使用多少 Bootstrap 链接才能使用模板

java - JSP 页面模板布局