Three.js中文网 Three.js中文网
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
Web3D系统课程视频
  • 0.学前说明

  • 1.Three.js快速入门

  • 2.几何体BufferGeometry

  • 3.模型对象、材质

  • 4.层级模型

  • 5.顶点UV坐标、纹理贴图

  • 6.加载外部三维模型(gltf)

  • 7.PBR材质与纹理贴图

  • 8.渲染器和前端UI界面

  • 9.生成曲线、几何体

  • 10.相机基础

  • 11.光源和阴影

  • 12.精灵模型Sprite

  • 13.后处理EffectComposer

  • 14.射线拾取模型

  • 15.场景标注标签信息

    • 1. CSS2DRenderer(HTML标签)
    • 2. HTML标签遮挡Canvas画布事件
      • 3. Canvas尺寸变化(HTML标签)
      • 4. 标签位置不同设置方式
      • 5. 标签位置(标注工厂设备)
      • 6. 标签指示线或箭头指向标注点
      • 7. 鼠标选中模型弹出标签(工厂)
      • 8. 单击按钮关闭HTML标签
      • 9. CSS3DRenderer渲染HTML标签
      • 10. CSS3批量标注多个标签
      • 11. 精灵模型Sprite作为标签
      • 12. Sprite标签(Canvas作为贴图)
    • 16.关键帧动画

    • 17.动画库tween.js

    • Three.js教程
    • 15.场景标注标签信息
    郭隆邦
    2023-03-10
    目录

    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;
    
    1. CSS2DRenderer(HTML标签)
    3. Canvas尺寸变化(HTML标签)

    ← 1. CSS2DRenderer(HTML标签) 3. Canvas尺寸变化(HTML标签)→

    Theme by Vdoing | Copyright © 2016-2025 豫ICP备16004767号-2
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式