使用 Javascript、Jquery 或 HTML5 Canvas 进行无限缩放

2024-04-26

我见过这个“宇宙的规模2 http://htwins.net/scale2/“我只是想知道这是否可以使用 javascript 或 jQuery 或 HTML5 Canvas 来完成。

如果您单击一个项目(例如“人类”),它旁边会弹出一条信息。

我在这里搜索了3天,是否有人有类似的问题。但我只看到类似谷歌地图的行为,你可以放大地图光标位置。

实际上我想制作一个类似“时间轴”的效果,或者像Mac OS X上的“时间机器”恢复一样。

  • 固定变焦位置。不像谷歌地图缩放,您可以在任何地方平移和缩放。
  • 我可以将(例如“人类”)图像和文本放在 div 上吗?
  • 有关于此的可用文章/教程吗?

Options:

  • JavaScript
  • jQuery
  • HTML5 Canvas 和 CSS3 Transform 并将其滚动到 Z 轴,以便您可以放大/缩小。
  • Flash/Flex(我不想在 CPU 上使用大量资源,因为我需要大分辨率或全屏。

可以在 HTML canvas 中实现无限缩放,这就是源代码 https://github.com/furstenheim/infinite-mosaic我实施的概念证明here https://furstenheim.github.io/infinite-mosaic/你可以现场测试它。

实际上实现起来相当棘手,而且很可能您需要使用大的小数。

我遵循的方法使用与以下相同的坐标空间d3-zoom https://github.com/d3/d3-zoom。基本上,您有三个坐标:x、y 和 k。 K是变焦。如果 k 是 2,则意味着您已将所有内容加倍。

现在,如果你想做无限变焦,这是很容易达到的k = 64,但这已经超出了 float64 精度,并且您将有很多伪影,其中图像中的翻译不平滑,或者您没有放大到您想要的位置。

避免这些伪影的一种方法是使用无限长度的坐标,例如 BigIntegers。为了使我的实现变得简单并与 d3-zoom 兼容,我使用了大十进制,但我必须实现我自己的库大十进制 https://github.com/furstenheim/small-decimal,基本上整数部分无限精度,小数部分32位精度。当然,你还需要适应缩放库 https://github.com/furstenheim/d3-zoom支持 BigDecimals。此外,在 d3-zoom 的情况下,很多计算都是在初始坐标空间中完成的(k=1)但是浮点数的除法总会有一个错误,而且一旦你足够深,它也是可以察觉的。为了避免这种情况,您需要在本地进行所有计算。

坚持使用 d3-zoom 库可能听起来很麻烦,但缩放 UX 实际上很棘手,特别是如果您将其组合在不同的位置k,您需要考虑滚动、缩放手机、双击……

如果您想使用 SVG 转换,那么您需要伪造它。当节点几乎不可见时,您将引入节点,允许缩放它们。然而,当它们太大时,您很可能还需要伪造它以避免出现伪影。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Javascript、Jquery 或 HTML5 Canvas 进行无限缩放 的相关文章

  • Draggable JS Bootstrap 模式 - 性能问题

    对于工作中的项目 我们在 JavaScript 中使用 Bootstrap Modal 窗口 我们想让一些窗口可移动 但我们遇到了 JQuery 的性能问题 myModal draggable handle modal header Exa
  • 有没有办法使用 Rspec/Capybara/Selenium 将 javascript console.errors 打印到终端?

    当我运行 rspec 时 是否可以让 capybara selenium 向 rspec 报告任何 javascript console errors 和其他异常 我有一大堆测试失败 但当我手动测试它时 我的应用程序正在运行 如果不知道仅在
  • jQuery AJAX 请求在 IE8 中失败,并显示消息“错误:调用 open 方法之前无法调用此方法。”

    我正在使用 jQuery 1 4 2 并尝试执行一个简单的 AJAX 请求 目标 URL 返回一个 JSON 字符串 我使用 jslint 对其进行了验证 该请求在 Firefox 和 Chrome 中有效 但不想在 IE8 中工作 我无法
  • 设置 cookie 时中断 JavaScript 执行

    当设置 cookie 时 是否可以始终中断浏览器开发人员工具中的 javascript 执行 无需显式设置 JS 断点 document cookie 在 html head 块的开头添加此代码片段效果很好
  • JQuery Mobile 与 MVC 的链接

    我正在使用 ASP NET MVC 3 和 Razor UI 设置 JQuery 移动网站 我正在生成我的链接 例如 a href See Group 2 a 假设我从 Home Index 访问它 我遇到的问题是 当我点击链接时 它会出现
  • Jquery 数据表列总和

    我只是参考一下这个链接 https datatables net examples advanced init footer callback html了解如何获取 jquery 数据表中的列总计 但我已经完成了一半的项目 我在html页面
  • Firefox 不会在使用 jQuery AJAX 加载的内容上呈现 CSS 样式

    我有一个网站 允许用户对书籍和文章发表评论 主表单有一个搜索输入 用于查找相关书籍或文章 来源 我使用 jQuery 根据输入的搜索词从外部站点动态加载新源 然后还使用 AJAX 返回列表中的源 我有两个问题 现在 在用户输入四个字符后 j
  • DataTables row.add 到特定索引

    我正在替换这样的行项目 var targetRow entity row dataTable targetRow closest table dataTable DataTable dataTable row targetRow remov
  • 将 UMD Javascript 模块导入浏览器

    你好 我正在对 RxJS 进行一些研究 我可以通过在浏览器中引用它来使用该库 如下所示 它使用全局对象命名空间变量 Rx 导入 我可以制作可观察的东西并做所有有趣的事情 当我将 src 更改为指向最新的 UMD 文件时 一切都会崩溃 如下所
  • 不可勾选的单选按钮与专有的复选框

    从 UI 角度来看 是拥有一组具有取消选中功能的单选按钮更好 还是拥有一组独占的复选框 意味着一次只能选中一个 更好 Update 我没想到对此会有如此负面的反应 如果我给出一个更接近其使用方式的示例 也许会有所帮助 我有一个充满数据绑定内
  • Jquery一键提交多个同名表单

    我有动态创建的循环表单 我需要一键提交所有表单 我正在遵循下面的代码 你能建议我怎么做吗 谢谢
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • Vue 和 Vuex:处理依赖的计算属性

    我的应用程序是一个使用 Vuex 在 Vue 中构建的精简电子表格 关键组件是TableCollection Table and Row The TableCollection有一个包含多个的数组Table对象 每个Table有一个包含多个
  • 对于只触及我的工作表的 Google 表格脚本,收到“此应用程序未经验证”

    我正在编写一个 Google Sheets 脚本 我只想访问与 gs 文件关联的同一电子表格中的数据 似乎我应该有权在自己的电子表格中运行脚本 但是每当我运行一个函数时 我都会得到一个This app isn t verified信息 我该
  • 在 JavaScript 循环之外声明变量可以提高速度和内存?

    C 也有类似的问题 但我们没有看到 JavaScript 的任何问题 在循环内声明变量是否可以接受 假设循环有 200 次迭代 使用样本 2 相对于样本 1 是否有性能要求 内存和速度 我们使用 jQuery 来循环 它提高了我们将 var
  • 带参数的事件监听器

    我想将参数传递给 JavaScript 中的事件侦听器 我已经找到了解决方案 但我无法理解它们为什么或如何工作以及为什么其他解决方案不起作用 我有 C C 背景 但是 Javascript 函数的执行有很大不同 您能否帮助我理解以下示例如何
  • 用于交互式图形绘制的轻量级 JavaScript 库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有兴趣了解用于绘制交互式图表的最轻量级 javascript 库 我掌握的数据主要是与海洋研究相关的科学数据 我知道一些 jquery
  • 如何用另一个响应替换窗口的 URL 哈希?

    我正在尝试使用替换方法更改哈希 URL document location hash 但它不起作用 function var anchor document location hash this returns me a string va
  • Jquery - 选择选项后如何获取选项的特定数据类型?

    我将直接跳到标记 然后解释我想要做什么 HTML 选择选项
  • 如何在执行新操作时取消先前操作的执行?

    我有一个动作创建器 它会进行昂贵的计算 并在每次用户输入内容时调度一个动作 基本上是实时更新 但是 如果用户输入多个内容 我不希望之前昂贵的计算完全运行 理想情况下 我希望能够取消执行先前的计算并只执行当前的计算 没有内置功能可以取消Pro

随机推荐

  • 创建自定义 HTML 标签安全吗?

    我正在阅读一种可以创建自定义 HTML 标签的技术 如下所示 鉴于存在多种浏览器和浏览器版本 我想知道 创建自定义标签安全吗 如果不是 正确的解决方法是什么 我只是好奇 真的 不 不推荐这样做 除非你有某种填充材料 大多数浏览器不支持它 请
  • 如何使用 core.async 在 Clojure 中写入日志文件?

    我想使用 core async 作为写入文件的记录器 因此我创建了一个 test txt 文件 将其粘贴在我的资源文件夹中并编写了以下代码 use clojure java io use clojure core async def pri
  • 在仍然有许多活动事务的情况下执行 pg_dump

    作为主题 当数据库中仍然有许多活动事务时 备份文件会发生什么情况 它导出实时还是仅导出部分备份 提前致谢 pg dump 在可序列化事务中运行 因此它会看到数据库的一致快照 包括系统目录 但是 如果有人在转储启动时执行 DDL 更改 则可能
  • 添加两个 2D NumPy 数组,忽略其中的 NaN

    将 numpy nan 作为缺失值添加 2 个 numpy 数组 a 和 b 均为 2D 的正确方法是什么 a b or numpy ma sum a b 由于输入是二维数组 因此您可以将它们沿第三轴堆叠np dstack http doc
  • 在 Mac OS X 上使用 pip 安装 pyopencv

    我正在尝试在 OS X Mountain Lion 中使用 pip 安装 pyopencv 但导入 setuptools 失败 以下是我的作品 setuptools中的 库 是什么 我以前没见过 我已经通过 homebrew 和其他东西安装
  • 更改 Oracle 11g 或 12c 中的表/列/索引名称大小

    我使用oracle 11g并且需要名称大小大于30个字符 我知道11g中的最大大小是30个字符 我可以更改这个最大尺寸吗 Oracle 12c 中表 列 索引名称的最大大小是多少 数据库对象名称位于11g https docs oracle
  • RDS不支持创建以下组合的数据库实例

    我正在尝试弄清楚如何创建一个简单的数据库实例 到目前为止我只有一个DBSubnetGroup and DBInstance 此时 根据我尝试使用模板 在 Designer 中创建 创建堆栈时遇到的错误 我已经弄清楚了一些事情 我现在遇到了一
  • 在Python中写入文件之前如何确保文件存在或可以创建?

    我正在编写一个函数 我希望它能够touch一个文件 以便我可以写入该文件 如果该文件不存在 我会收到错误消息 我怎么能这么说呢 只需打开要写入的文件 如果该文件不存在 则会创建该文件 假设您具有写入该位置的适当权限 f open some
  • 使用 css 和 javascript 在 div 背景中创建透明窗口

    我正在尝试在网页中实现效果 网页必须完全被带有透明窗口的背景覆盖 该窗口基本上会突出显示页面的某些页面以吸引用户的注意力 窗口的大小事先是未知的 效果必须在前端实现 所以我可以自由地使用html css和js 我不知道如何仅使用 css 来
  • 英特尔® 事务同步扩展新指令 (TSX-NI) 与英特尔 TSX 有何不同?

    我在Intel的页面上找到了 https ark intel com products 97123 Intel Core i5 7500 Processor 6M Cache up to 3 80 GHz https ark intel c
  • ASP.NET 网站管理工具未知错误 ASP.NET 4 VS 2010

    我正在关注MVCMusic http mvcmusicstore codeplex com 使用具有完整 sql server 2008 r2 的机器的教程 和完整的视觉工作室专业 在ASP NET 4 0当我到达设置会员资格的页面 靠近第
  • Cordova 图像选择器转换为 base64

    我在将图像转换为使用以下命令选择的 base64 格式时遇到问题ngCordova 图像选择器 http ngcordova com docs plugins imagePicker 为了简单起见 Cordova 网站上提供的代码 有效 是
  • Swift 3 上的通知中心问题[重复]

    这个问题在这里已经有答案了 我正在学习 Swift 3 并且正在尝试使用NSNotificationCenter 这是我的代码 func savePost let postData NSKeyedArchiver archivedData
  • 来自嵌套列表的嵌套字典

    我有嵌套列表 例如 A A1 A1 B C B B1 B2 B1 b1 b2 b3 B2 d1 d2 d3 d4 C C1 C2 C3 C1 a1 a2 a3 C2 n1 n2 n3 n4 C3 x1 x2 x3 x4 我想创建嵌套字典 例
  • 使用标记类来控制逻辑流程

    我一直在查看一些代码 发现我的一位同事正在使用 标记类 来控制程序逻辑 请参阅下面的人为示例 它似乎工作得很好 代码读起来也很好 但它只是有一些味道 namespace ConsoleApplication4983 public class
  • XCode 4.2 + Iphone 3g 无法运行应用程序

    当我创建一个普通的 Phonegap 应用程序并尝试在装有 IOS 4 2 的 iPhone 3g 上运行它时 它无法运行 IOS 部署目标设置为 4 0 并且一切都构建成功 这一切都是在我使用 IOS SDK5 安装 XCode 4 2
  • 如何在 Laravel 中实现数组类型路由?

    我正在尝试在 Laravel 5 8 中实现数组类型路由 这是我尝试过的 Route get myroute MyController index Route get myroute MyController index Route get
  • sklearn中score和accuracy_score的区别

    有什么区别score 中的方法sklearn naive bayes GaussianNB 模块和accuracy score中的方法sklearn metrics模块 两者看起来都是一样的 那是对的吗 一般来说 不同的模型具有返回不同指标
  • Cat 文件与 HDFS 中的模式不匹配?

    我正在尝试 cat 与 hadoop HDFS 中的以下模式不匹配的文件 hdfs dfs cat gz 如何捕获所有不以 gz 结尾的文件 编辑 抱歉 但我需要在 Hadoop 中管理文件 显然 hdfs 附带的命令非常少 编辑2 所有文
  • 使用 Javascript、Jquery 或 HTML5 Canvas 进行无限缩放

    我见过这个 宇宙的规模2 http htwins net scale2 我只是想知道这是否可以使用 javascript 或 jQuery 或 HTML5 Canvas 来完成 如果您单击一个项目 例如 人类 它旁边会弹出一条信息 我在这里