vue-cli + three.js 解决页面跳转时Css2dObject遗留在dom的问题

在使用Vue和three.js开发3D项目时,遇到CSS2DObject在页面跳转后仍留在DOM上的问题。原因是CSS2DRenderer创建的标签直接挂载在真实DOM而非Vue的虚拟DOM上。解决方案是在Vue的beforeDestroy生命周期钩子中,通过查找并移除body上的CSS2DRenderer DOM元素,从而避免标签残留。
摘要由CSDN通过智能技术生成

学习交流欢迎加群:789723098,博主会将一些demo整理共享

最近再做项目的时候,采用vue + three.js进行开发大型的3d场景项目,该项目中涉及到需要为建筑中的元素添加标签说明一些信息、名称,遂决定使用three.js的CSS2DRenderer和CSS2DObject进行标签的绘制,用的代码如下:

function makeCSS2DObject(position, radius, text) {
    const div = document.createElement( 'div' );
    div.className = 'scene-label';
    div.style.marginTop = '-1em';
    const span = document.createElement('span');
    span.className = 'scene-label-text'
    span.textContent = text;
    div.appendChild(span);
    const label = new CSS2DObject( div );
    label.name = "mark-point"
    label.position.set( 0, radius-16, 0);

    return label;
}

function makeCSS2DPointObject(position, radius) {
    let div = document.createElement( 'div' );
    div.className = 'scene-point';
    div.style.marginTop = '-2em';
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值