【问题标题】:Prevent WebGL Three.js container to catch scrolling events防止 WebGL Three.js 容器捕获滚动事件
【发布时间】:2016-10-29 20:50:53
【问题描述】:

我有一个全屏的three.js 应用程序作为背景,并希望在其上放置文本作为覆盖,我希望能够滚动。

我的问题是,显然 three.js WebGL 容器捕获了所有滚动事件,并且不允许滚动覆盖的内容。

three.js-application 是一个 <canvas> 元素,我的 CSS:

canvas {
  position: absolute;
  top: 0;
  left: 0;
  pointer-events: none;
  z-index: -9999;
}

这是内容的主体和父 <div> 元素,应该是可滚动的。

body {
   display:block;
}

.page-content {
    z-index: 1000;
    padding: 0;
}
  • 两者都是 body 的直系子代。

  • 脚本在内容之后执行。

如何防止 Three.js 容器捕获滚动(例如滚轮)事件并将它们转发到 .page-content div?

【问题讨论】:

  • 您正在使用哪些控件。我认为@Rush2112 他的回答很可能会解决您的问题。

标签: javascript css dom three.js


【解决方案1】:

这实际上是一个控制问题。

你要设置:controls = new THREE.OrbitControls(camera, renderer.domElement);

否则,the controls will set document as it's domain 并捕获所有事件。

因此,无论您使用哪个控件,都将renderer.domElement 部分添加到其中

【讨论】:

  • 我没有使用任何控件,无论如何感谢您的回答。 :)
  • 感谢 Wilt 的编辑,我目前的工作项目是 C#,所以我没有处于完全 JS 模式:P
  • 这是实际的解决方案(使用 OrbitControls 时)。在 chrome 中完美运行,谢谢!
猜你喜欢
  • 2012-06-10
  • 1970-01-01
  • 2019-08-13
  • 1970-01-01
  • 1970-01-01
  • 2014-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多