2. HTML标签遮挡Canvas画布事件
# HTML标签遮挡Canvas画布事件
HTML元素标签<div id="tag"></div>
外面div父元素遮挡了Canvas画布鼠标事件,会造成相机控件OrbitControls
的旋转、缩放等操作无效,也有可能会影响你的射线拾取,等等任何与canvas画布有关的鼠标事件都有可能收到影响,不过这算是普通web前端内容,选择前端方式解决即可。
# .style.pointerEvents
设置.style.pointerEvents = none
,就可以解决HTML元素标签对threejs canvas画布鼠标事件的遮挡。
css2Renderer.domElement.style.pointerEvents = 'none';
这时候你在测试threejs代码执行效果,你会发现OrbitControls
旋转缩放是正常的、射线也能正常拾取模型。
# CSS属性z-index
说到模型标签CSS2DRenderer.domElement
遮挡canvas画布的问题,有必要给大家提一下CSS属性z-index
,简单说就是HTML元素位置重合的时候,谁在上,谁在下的问题。如果你不熟悉CSS属性z-index
熟悉,可以百度了解下,下面主要给大家说下该属性对threejs HTML标签的影响。
在实际开发中,有时候可能会出现threejs canvas画布遮挡标签HTML元素的问题,这种现象可能出现,也可能不出现,具体和你的前端代码有关。如果你的代码中HTML元素标签被canvas画布挡住了,这时候你可以调整CSS布局代码,或者直接修改z-index
的值。
本节课和上节课案例,threejs标签默认是叠加在canvas画布上,下面就通过强制修改z-index
值给大家演示下。
css2Renderer.domElement在下,threejs canvas画布在上,标签被canvas画布遮挡,看不到标签。
renderer.domElement.style.zIndex = 1;
css2Renderer.domElement.style.zIndex = -1;
css2Renderer.domElement在上,threejs canvas画布在下,可以看到标签
renderer.domElement.style.zIndex = -1;
css2Renderer.domElement.style.zIndex = 1;