当前位置: 首页 > news >正文

threejs:document.createElement创建标签后css设置失效

vue3+threejs,做一个给模型批量CSS2D标签的案例,在导入模型的js文件里,跟着课程写的代码如下:

import * as THREE from 'three';
// 引入gltf模型加载库GLTFLoader.js
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';// 引入CSS2模型对象CSS2DObject
import {CSS2DObject
} from 'three/addons/renderers/CSS2DRenderer.js';const model = new THREE.Group();
const loader = new GLTFLoader();
// 路径要特别注意,默认是从public读取的,模型文件必须放在public下,并且路径前的public要省略
loader.load('models/简易小区.glb', gltf => {gltf.scene.getObjectByName("小区房子").traverse(function (obj) {if (obj.isMesh) {let label = tag(obj.name);const pos = new THREE.Vector3();obj.getWorldPosition(pos);label.position.copy(pos);label.name = obj.name;model.add(label);}});model.add(gltf.scene);
}, undefined, error => {console.error(error);
});function tag(name) {// 创建dom元素(作为标签)let div = document.createElement('div');div.innerHTML = name;div.classList.add('css2dtag');//使用dom元素生成CSS2模型对象CSS2DObjectlet label = new CSS2DObject(div);div.style.pointerEvents = 'none';//避免HTML标签遮挡三维场景的鼠标事件return label;//返回CSS2模型标签      }export default model;

在vue文件里设置css。

<template>
</template><script setup>
import { scene } from './init.js';
</script><style scoped>.css2dtag {background: #ffffff;color: orangered;}
</style>

运行代码后发现css没有生效。

查了资料,找到一篇参考文章:

threejs 代码创建div设置样式不生效的问题原因探讨 - 简书

尝试去掉scoped,确实生效了,但是这种处理并不理想。

在继续学习threejs课程的时候,发现老师教了另一种批量创建的办法。

对vue文件修改如何:

增加一个id为css2dtag的div,css加上scoped。

<template><div id="css2dtag" style="display: none;"></div>
</template><script setup>
import { scene } from './init.js';
</script><style scoped>#css2dtag {background: #ffffff;color: orangered;}
</style>

然后在导入模型的js文件里,通过克隆这个div来批量创建dom元素。

import * as THREE from 'three';
// 引入gltf模型加载库GLTFLoader.js
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';// 引入CSS2模型对象CSS2DObject
import {CSS2DObject
} from 'three/addons/renderers/CSS2DRenderer.js';const model = new THREE.Group();
const loader = new GLTFLoader();
// 路径要特别注意,默认是从public读取的,模型文件必须放在public下,并且路径前的public要省略
loader.load('models/简易小区.glb', gltf => {gltf.scene.getObjectByName("小区房子").traverse(function (obj) {if (obj.isMesh) {let label = tag(obj.name);const pos = new THREE.Vector3();obj.getWorldPosition(pos);label.position.copy(pos);label.name = obj.name;model.add(label);}});model.add(gltf.scene);
}, undefined, error => {console.error(error);
});function tag(name) {// 通过克隆来批量创建divlet div = document.getElementById('css2dtag').cloneNode();div.innerHTML = name;//使用dom元素生成CSS2模型对象CSS2DObjectlet label = new CSS2DObject(div);div.style.pointerEvents = 'none';//避免HTML标签遮挡三维场景的鼠标事件return label;//返回CSS2模型标签      
}export default model;

再次运行代码,css生效了。

相关文章:

threejs:document.createElement创建标签后css设置失效

vue3threejs&#xff0c;做一个给模型批量CSS2D标签的案例&#xff0c;在导入模型的js文件里&#xff0c;跟着课程写的代码如下&#xff1a; import * as THREE from three; // 引入gltf模型加载库GLTFLoader.js import { GLTFLoader } from three/addons/loaders/GLTFLoader.…...

安装2018版本的petalinux曲折经历

具体操作步骤 1.安装VMware Workstation15.5的虚拟机2.安装Ubuntu16.04.43.配置Ubuntu的环境1.可以复制粘贴的指令2.安装vim 4.准备安装petalinux1.先配置petalinux的安装环境2.替换镜像源1.备份原始的软件源2.从以下镜像点找到合适自己系统版本的源3.执行替换镜像源1.打开源文…...

return和print

目录 1.print的用法 2.return的用法 3. print 和 return 的区别 4.总结 1.print的用法 print 是一个函数&#xff0c;用于将信息输出到控制台&#xff08;终端&#xff09;。它主要用于显示程序运行的结果&#xff0c;方便用户查看。print 的作用是输出内容&#xff0c;而不…...

springboot411-基于Java的自助客房服务系统(源码+数据库+纯前后端分离+部署讲解等)

&#x1f495;&#x1f495;作者&#xff1a; 爱笑学姐 &#x1f495;&#x1f495;个人简介&#xff1a;十年Java&#xff0c;Python美女程序员一枚&#xff0c;精通计算机专业前后端各类框架。 &#x1f495;&#x1f495;各类成品Java毕设 。javaweb&#xff0c;ssm&#xf…...

跨平台文件互传工具

一款高效便捷的文件互传工具&#xff0c;支持在线快速传输各种文件格式&#xff0c;无需注册&#xff0c;直接分享文件。适用于个人和团队间的文件共享&#xff0c;跨平台支持&#xff0c;轻松解决文件传输问题。免费的文件传输服务&#xff0c;让你的工作更高效。 gotool...

final 关键字在不同上下文中的用法及其名称

1. final 变量 名称&#xff1a;final 变量&#xff08;常量&#xff09;。 作用&#xff1a;一旦赋值后&#xff0c;值不能被修改。 分类&#xff1a; final 实例变量&#xff1a;必须在声明时或构造函数中初始化。 final 静态变量&#xff1a;必须在声明时或静态代码块中初…...

Elasticsearch:使用阿里云 AI 服务进行嵌入和重新排名

作者&#xff1a;来自 Elastic Toms Mura 将阿里云 AI 服务功能与 Elastic 结合使用。 更多阅读&#xff0c;请参阅 “Elasticsearch&#xff1a;使用阿里 infererence API 及 semantic text 进行向量搜索”。 在本文中&#xff0c;我们将介绍如何将阿里云 AI 功能与 Elastics…...

【愚公系列】《鸿蒙原生应用开发从零基础到多实战》004-TypeScript 中的泛型

标题详情作者简介愚公搬代码头衔华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xff0c;阿里云签约作者&#xff0c;腾讯云优秀博主&…...

IP属地是通过卫星定位的吗?如何保护用户隐私

在数字时代&#xff0c;网络空间成为了人们日常生活不可或缺的一部分。随着社交媒体、在线服务等平台的兴起&#xff0c;用户IP属地信息的重要性日益凸显。然而&#xff0c;关于IP属地是如何确定的&#xff0c;尤其是是否通过卫星定位这一问题&#xff0c;却常常引发公众的疑问…...

【云原生之kubernetes实战】在k8s环境中高效部署Vikunja任务管理工具(含数据库配置)

【【云原生之kubernetes实战】在k8s环境中高效部署Vikunja任务管理工具(含数据库配置) 前言一、Vikunja介绍1.1 Vikunja简介1.2 Vikunja主要特点1.3 使用场景二、相关知识介绍2.1 本次实践存储介绍2.2 k8s存储介绍三、本次实践介绍3.1 本次实践简介3.2 本次环境规划3.3 部署前…...

php序列化与反序列化

文章目录 基础知识魔术方法&#xff1a;在序列化和反序列化过程中自动调用的方法什么是 __destruct() 方法&#xff1f;何时触发 __destruct() 方法&#xff1f;用途&#xff1a;语法示例&#xff1a; 反序列化漏洞利用前提条件一些绕过策略绕过__wakeup函数绕过正则匹配绕过相…...

视频级虚拟试衣技术在淘宝的产品化实践

作为一种新的商品表现形态&#xff0c;内容几乎存在于手淘用户动线全流程&#xff0c;例如信息流种草内容、搜索消费决策内容、详情页种草内容等。通过低成本、高时效的AIGC内容生成能力&#xff0c;能够从供给端缓解内容生产成本高的问题&#xff0c;通过源源不断的低成本供给…...

音视频-WAV格式

1. WAV格式说明&#xff1a; 2. 格式说明&#xff1a; chunkId&#xff1a;通常是 “RIFF” 四个字节&#xff0c;用于标识文件类型。&#xff08;wav文件格式表示&#xff09;chunkSize&#xff1a;表示整个文件除了chunkId和chunkSize这 8 个字节外的其余部分的大小。Forma…...

c++ std::array使用笔记

c array使用笔记 1. 构造2. 成员类型3. 元素访问4. 容量相关5. 填充与交换6. 比较操作7. 迭代器总结 array 是 C 标准库中的一个容器模板&#xff0c;它封装了一个固定长度的内建数组&#xff0c;并提供了类似于其他 STL 容器的接口。与内建数组相比&#xff0c; array 提供了…...

第39天:安全开发-JavaEE应用SpringBoot框架Actuator监控泄漏Swagger自动化

时间轴&#xff1a; Java知识点&#xff1a; 功能&#xff1a;数据库操作&#xff0c;文件操作&#xff0c;序列化数据&#xff0c;身份验证&#xff0c;框架开发&#xff0c;第三方组件使用等. 框架库&#xff1a;MyBatis&#xff0c;SpringMVC&#xff0c;SpringBoot&#xf…...

浏览器JS打不上断点,一点就跳到其他文件里。浏览器控制台 js打断点,指定的位置打不上断点,一打就跳到其他地方了。

关闭JavaScript 源代码映射&#xff0c;F12开发者模式 设置->偏好设置->源代码/来源->JavaScript 源代码映射。 肯定不是这个原因导致的&#xff0c;但这个办法可以暂时解决问题&#xff0c;点完这个东西就隐藏了webpack&#xff0c;有懂的来讲讲。 又浪费一个小时…...

conda环境管理 kernel注册到jupyter notebook

本文核心目的&#xff1a;解决jupyter notebook找不到自己想要的指定conda环境 首先安装anaconda&#xff0c;在win搜索框打开anaconda prompt 按下ctrlc终止操作的时间很长。需要输入y来确认操作。 国内镜像源不能使用代理服务访问。要尝试代理服务的打开与关闭 下面是cond…...

【SpringBoot】【log】 自定义logback日志配置

前言&#xff1a;默认情况下&#xff0c;SpringBoot内部使用logback作为系统日志实现的框架&#xff0c;将日志输出到控制台&#xff0c;不会写到日志文件。如果在application.properties或application.yml配置&#xff0c;这样只能配置简单的场景&#xff0c;保存路径、日志格…...

15.7 LangChain 版智能销售顾问实战:构建企业级知识驱动型对话系统

LangChain 版智能销售顾问实战:构建企业级知识驱动型对话系统 关键词:LangChain 销售系统、知识图谱集成、对话状态管理、生产级部署、多链协同优化 1. LangChain 销售系统架构设计 1.1 模块化架构全景图 #mermaid-svg-42MLuD3aMcpX0y8c {font-family:"trebuchet ms&q…...

计算机网络基础:揭开网络世界的神秘面纱

计算机网络基础&#xff1a;揭开网络世界的神秘面纱 前言一、计算机网络的定义与基本概念1.1 计算机网络的定义1.2 计算机网络的基本组成 二、计算机网络的分类2.1 按地域范围分类2.2 按拓扑结构分类 三、计算机网络体系结构3.1 OSI 参考模型3.2 TCP/IP 参考模型 四、网络通信协…...

Modbus协议避坑指南:功能码06写入失败的5个常见原因及解决方法(附Wireshark抓包分析)

Modbus协议避坑指南&#xff1a;功能码06写入失败的5个常见原因及解决方法&#xff08;附Wireshark抓包分析&#xff09; 在工业自动化领域&#xff0c;Modbus协议因其简单可靠的特点&#xff0c;成为设备通信的基石。而功能码06&#xff08;写单个寄存器&#xff09;作为最常用…...

Linux:入门开发工具--Git和GDB调试器

1.版本控制器Git1.1 Git的背景知识Git 是一款由 Linux 创始人 Linus Torvalds 在 2005 年开发的分布式版本控制系统。当时 Linux 内核社区因商业版本控制工具授权问题被迫更换工具&#xff0c;急需一个高效、分布式、速度极快的管理方案&#xff0c;Git 因此诞生&#xff0c;它…...

天地图图层标识全解析:从代码到坐标系的实战指南

1. 天地图图层标识入门&#xff1a;为什么你需要了解这些代码&#xff1f; 第一次接触天地图开发时&#xff0c;我也被那些神秘的代码搞晕了。vec_w、cva_w、img_c...这些看起来像密码一样的字符串&#xff0c;其实藏着地图服务的核心秘密。简单来说&#xff0c;天地图的每个图…...

AI Agent 赋能智能客服:Vue3 + LangChain + 千问落地实战

前言 &#x1f44b; 本文适合有前端基础的开发者阅读。我会从整体架构出发&#xff0c;详解如何用Vue3 TypeScript做前端交互、**Python3 LangChain 千问&#xff08;Qwen&#xff09;**做后端推理&#xff0c;构建一个真正能落地的智能客服 Agent。代码干货较多&#xff0…...

2026年国内AI大厂薪资大揭秘:80万年薪不是梦?揭秘高薪背后的真相!

今天给大家盘一盘2026年国内几家主流AI大厂的薪资情况&#xff0c;数据主要来自招聘平台、社交媒体上的员工爆料&#xff0c;以及身边朋友的真实反馈。 最近两年&#xff0c;国内AI行业的人才争夺已经到了白热化的阶段&#xff0c;月之暗面、智谱AI、百川智能、MiniMax、DeepSe…...

第一篇博客:从新开始学习C语言

这是我的第一篇博客&#xff0c;也算是从0开始了。不仅是写博客的起点&#xff0c;也是我下定决心以更加认真的态度学好编程语言的起点。大家好&#xff0c;我是一名来自双非学校大二的学生。虽然已经大二了但是仍有很多方面未接触过&#xff0c;很多东西还不懂。说从新开始学习…...

1篇1章5节:大模型术语解读与从生成到推理的演进

在人工智能的浩瀚宇宙中&#xff0c;大模型正以前所未有的速度演进&#xff0c;推动着科技变革的新浪潮。从多模态到通用模型&#xff0c;再到行业模型&#xff0c;人工智能的边界不断拓展&#xff0c;为各行各业带来了全新的机遇与挑战。本篇文章将深入剖析大模型相关的核心术…...

C语言完美演绎7-7

/* 范例&#xff1a;7-7 */#include <stdio.h>int main(){int a;int b;int *ptr; /* 定义指针变量&#xff0c;这里的星号间接运算符 (*)并不作“依址操作”动作 */a 5; b a; ptr &b; /* 变量b的地址&#xff0c;赋值给指针变量ptr *//* 下面是把a、b、ptr的内…...

RK3568平台ES7210 Codec多路麦克风精准录音与驱动调试实战

1. 理解ES7210在多路麦克风阵列中的关键作用 在RK3568平台上集成ES7210音频编解码器时&#xff0c;首先要理解这颗芯片的独特架构。ES7210作为一款专业级音频ADC&#xff0c;其核心价值在于支持四路差分麦克风输入&#xff0c;每路都包含完整的PGA&#xff08;可编程增益放大器…...

3步实现微信聊天记录完整备份:让你永久保存重要对话的开源工具

3步实现微信聊天记录完整备份&#xff1a;让你永久保存重要对话的开源工具 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 在数字化时代&#xff0c;微信聊天记录已成为我…...