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

最近前端圈子很火爆,因为这个量子纠缠的特效。这个特效有几个抓眼球的地方:两个浏览器窗口之间可以实现通信,产生吸附的效果;利用 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. 用途

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

  • 本地多窗口协作的情况下,数据同步
  • 多屏幕,扩大操作区域:控制窗口 + 预览窗口
  • ...
相关推荐
之歆7 分钟前
Day19_LESS 完全指南——从入门到工程实践
前端·css·less
云水一下1 小时前
HTML5 从入门到精通:实战收官——从零搭建完整静态网站,综合运用所有知识
前端·html5
不总是1 小时前
Windows 系统 Node.js 免安装版(zip)安装与配置教程(2026 最新)
前端·windows·node.js
冬奇Lab1 小时前
每日一个开源项目(第105篇):Twenty - 跳出 Salesforce 的圈套,定义现代开源 CRM
前端·后端·开源
zhangyao9403302 小时前
开发pc端时,表格的高度怎么设置才能铺满页面
前端·javascript·elementui
XinZong2 小时前
实测OpenClaw虾淘:全民工具AI时代,冷门非工具类的Skill还能出圈吗?
javascript
kjs--2 小时前
浏览器书签执行脚本
前端
烛衔溟2 小时前
TypeScript 类的类型 —— 作为类型使用
javascript·ubuntu·typescript
之歆3 小时前
Day16_JavaScript 轮播图与事件工程实战(下篇)
服务器·开发语言·前端·javascript·网络·性能优化
沄媪3 小时前
CSRF 跨站请求伪造
前端·ctf·csrf