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

【AI渲染引擎】Javascript实现Popup-悬浮-弹出框

一个很简单淡出框,带关闭按钮

方便二次开发

this.uvTemp.addEventListener('click', () => { this.createUvPopup(); this.uvPopup.style.display = 'block'; });

关键的显示在于

.display === 'block';

Css,Style 可能需要

position:relative

完整代码

createUvPopup() { console.log("createUvPopup",this.uvPopup); if (this.uvPopup) return; this.uvPopup = document.createElement('div'); this.uvPopup.id = 'tex-uv-popup'; this.uvPopup.style.cssText = ` position: fixed; left: 50%; top: 50%; transform: translate(-50%, -50%); z-index: 9999; width: min(760px, 90vw); background: rgba(20, 24, 30, 0.96); border: 1px solid rgba(255,255,255,0.12); border-radius: 12px; box-shadow: 0 25px 60px rgba(0,0,0,0.45); color: #fff; display: none; padding: 12px; box-sizing: border-box; `; this.uvPopup.innerHTML = ` <div style="display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; font-size:13px;"> <div>UV 贴图叠加预览</div> <button type="button" style="padding:4px 10px; border:none; border-radius:6px; cursor:pointer;">关闭</button> </div> <div style="display:flex; gap:12px; flex-wrap:wrap; justify-content:center;"> <div style="display:flex; flex-direction:column; align-items:center; gap:6px;"> <div style="font-size:12px; color:#dfe7ff;">原贴图 + UV 点</div> <canvas id="tex-uv-orig-canvas" width="300" height="300" style="max-width:100%; border-radius:8px; background:#fff; border:1px solid rgba(255,255,255,.18);"></canvas> </div> <div style="display:flex; flex-direction:column; align-items:center; gap:6px;"> <div style="font-size:12px; color:#dfe7ff;">UV 贴图</div> <canvas id="tex-uv-map-canvas" width="300" height="300" style="max-width:100%; border-radius:8px; background:#fff; border:1px solid rgba(255,255,255,.18);"></canvas> </div> </div> `; const closeBtn = this.uvPopup.querySelector('button'); closeBtn.addEventListener('click', () => { this.uvPopup.style.display = 'none'; }); document.body.appendChild(this.uvPopup); }

想当年啊(两年前),古法编程的优缺点

优点

  • 写备注
  • 改新人代码,改正,乱掉,再改正
  • 分架构,分模块,分杜段落
  • 方法重构

缺点

  • 前后顺序调乱
因为 z-index 控制元素的堆叠顺序。 你的结构中: tex-uv-popup: z-index: 9999 magnifier: z-index: 2 并且放大镜被移动到了: document.body.appendChild(this.magnifier); 所以放大镜和 UV 弹窗处于同一层级上下文中。虽然放大镜已经执行了: this.magnifier.style.display = 'block'; 但它实际被 tex-uv-popup 覆盖了,因此看起来像是 Canvas 没有显示。 设置: this.magnifier.style.zIndex = '10000'; 后,放大镜的层级高于 UV 弹窗的 9999,所以可以显示在弹窗上方 另外,原始放大镜的 z-index: 2 只适用于它作为 tex-preview-stage 子元素时;移动到 document.body 后,需要重新设置更高的层级。

另一个很简单的放大镜效果

完整代码

???

Html Img 的适配问题

你以为你有2~3年,经验你很懂是么

结果出了个naturalWidth属性

<img src="photo.jpg" width="300" style="width: 200px;">

如果photo.jpg原始尺寸是 1200×800,那么:

  • img.naturalWidth1200
  • img.width300(HTML 属性)
  • img.clientWidth200(CSS 渲染后的实际显示宽度)

naturalWidth<img>元素的一个属性,它表示的是图片文件本身的原始像素宽度,也就是图片在没有任何 CSS 缩放、HTML 属性限制的情况下,"天生"的宽度。

决定因素

naturalWidth完全由图片文件自身的数据决定,具体来说:

  • 图片文件的像素尺寸:图片在被创建/导出时设定的宽高(比如一张 1920×1080 的 PNG,naturalWidth就是 1920)。
  • 图片格式中嵌入的分辨率信息:如 JPEG 文件头中记录的像素宽高。

不受什么影响

  • 不受<img>标签的width/height属性影响:这些只影响显示尺寸。
  • 不受 CSS 的width/height影响:CSS 缩放不改变naturalWidth
  • 不受srcset/sizes影响:虽然浏览器会根据这些选择不同分辨

无厘头参考:

Panda BT Pro

Panda BT Pro | AI | Unity Asset Store

http://www.cnnetsun.cn/news/4119398.html

相关文章:

  • PCIE高速传输解决方案FPGA技术XILINX官方XDMA驱动
  • 基于微信小程序的苗族侗族文创产品销售平台的设计与实现(毕业设计项目源码+文档)
  • VLA-世界模型-TVA:具身智能“三位一体”创新尝试(5)
  • 关于等保和分保的应了解的
  • 基于大数据的国内篮球联赛数据分析与可视化系统(源码+lw+部署文档+讲解等)
  • OpenUtau 歌声合成新手闯关实录:声库、音素、曲线调音到导出成品的 6 步路线
  • SpringBoot面试试题管理系统开发实践
  • 阶段九:AI 工程师入行 / 转行 / 就业 / 面试指导
  • 计算机单片机毕设实战-基于 STM32 的土壤墒情监测及灌溉补光温控一体化系统设计 基于 STM32 的大棚环境感知与设备自动执行平台设计(011704)
  • 多智能体协作中的奖励建模:从原理到实践,解决信用分配与效率优化
  • 5款AI论文生成工具实测对比:2026年写毕业论文该怎么选
  • 司空个人实现版本(升级版)
  • 加拿大出生纸海牙认证|办理流程别踩坑,一次讲清楚
  • 终端、Shell、命令行界面:从概念到实战的完整指南
  • TestDisk 数据恢复实战:免费开源方案全解析
  • 费用报销自动化到底能做到什么程度,12家费控系统的实际水平拉出来看一看
  • 基于智能体模拟与大语言模型的热浪健康风险评估系统构建
  • 氢燃料电池技术突破与商业化机遇:从核心材料到应用场景
  • 电脑前久坐眼睛干涩?这款免费开源的 Project Eye 护眼提醒软件,就是给眼睛定的一只 20 分钟番茄钟
  • PNG XSS攻击实战指南:一张32×32的图片,如何骗过你的扫描器
  • 从破解版陷阱到远程面板,Wand-Enhancer 安全上手的 5 道关
  • DAVE3 SPI配置实战:从基础概念到稳定通讯的实现
  • 一次实测:我把十年QQ空间说说完整备份到了本地
  • C语言——深度理解指针(2)
  • 车企海外研发中心战略解析:从本地化适配到全球化研发体系重构
  • 长期智能体记忆管理:基于类型化表示解决来源-角色混淆
  • 特斯拉智能百叶窗HVAC系统:软件定义汽车座舱环境控制新范式
  • 什么是 RAG 中的分块?为什么需要分块?
  • Axure 汉化原来这么简单:axure-cn 中文语言包 9/10/11 全版本速通指南
  • 锤子助手第124个开关:启用自动下载图片的位置、安全验证与图片隐私边界