量子纠缠——试试可视化图表之间的纠缠

最近前端圈子很火爆,因为这个量子纠缠的特效。这个特效有几个抓眼球的地方:两个浏览器窗口之间可以实现通信,产生吸附的效果;利用 three 实现了炫酷的效果。

这个怎么实现的?核心难点在于两个:

  • 不同窗口中球之间的相对位置
  • 浏览器窗口之间通信

1. 原理剖析

1.1. 球的相对位置

对于上述截图效果,核心元素是 3D 圆,圆默认放到窗口中心,所以球的相对位置,其实就是窗口的相对位置。

这里主要有 3 个 API

  • window.innerWidth,window.innerHeight:当前浏览器窗口的大小。
  • screenTop,screenLeft:浏览器窗口和屏幕窗口之间的位置。

有了这些信息之后,就可以知道浏览器窗口在电脑屏幕空间的的 BBox,这个信息可以后面用来计算两个窗口是否交叠的,交叠多少的的信息。

javascript 复制代码
const bbox = [
  window.screenLeft,
  window.screenTop,
  window.innerWidth,
  window.innerHeight,
];

1.2. 窗口之间的通信

最容易想到的就是加一个 server,然后使用 websocket 进行实时通信,这样会带来一个服务端,架构会复杂一些,实际上使用前端 localStorage 能力即可实现。

javascript 复制代码
window.addEventListener("storage", (e) => {
  // do something.
});

在进行 localStorage 存储的时候,会触发 storage 事件,因为 localStorage 是按源存储的,所以就可以实现窗口之间的通信了。

弄清楚了这两点,做这个效果,就只是工程问题了。

2. 案例复现

我这里就是用可视化的一些案例来实现了,期望的效果就是,多个不同窗口的浏览器会默认打开不同的可视化基础图表,比如:折线图、点图、柱形图。

然后当两个窗口靠近的时候,就可以把不同窗口的图表合并到一起,比如折线图和柱形图合并,组成成一个图表。

开工,代码见这里,线上预览地址。这里贴一下视频预览。

此处为语雀视频卡片,点击链接查看:量子纠缠之图表纠缠.mp4

3. 用途

本质核心能力是两个浏览器窗口之间的通信,这个技术点可以用来做什么?

  • 本地多窗口协作的情况下,数据同步
  • 多屏幕,扩大操作区域:控制窗口 + 预览窗口
  • ...
相关推荐
key_3_feng7 小时前
评估与对齐:Agent 自我进化的护栏
前端·数据库·agent
程序员大阳8 小时前
副队长JavaScript教程(65)-详解JSON:轻量级数据交换格式
javascript·json·序列化·反序列化·stringify·parse
LaughingZhu8 小时前
Product Hunt 热榜 2026-10-30:Empacer、Scape、Floot in ChatGPT
java·前端·数据库·人工智能·chatgpt·notion
Lank_M8 小时前
抠图结果缩放后边缘发脏,该怪的不是插值
前端
jerrywus8 小时前
Skill、MCP、Workflow、Rules、Memory 有什么区别?拿几次真实开发任务讲清楚
前端·agent·claude
补码缩写8 小时前
canvas 与 sharp 缩放透明图:默认预乘,非预乘得拆通道
前端
静默回滚8 小时前
抠图 PNG 缩小再放大,边缘又糊又白是两件事
前端
用户11977079480739 小时前
GitHub 电商开源项目分享:用 sharp 批量出饰品主图,试了裁剪、细节图和色彩配置文件三个坑
前端·node.js
deli0079 小时前
地图定位为什么偏了 500 米?GPS 与火星坐标实测
前端
TK泰妞9 小时前
节日促销前,TikTok 商品视频应该提前准备什么?
前端·人工智能·节日