使用 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 进行无限缩放 的相关文章

  • 将画布输出图像调整为特定尺寸(宽度/高度)

    我有一个大画布 5000x5000 我想拍一张照片并在客户端创建一个缩略图 我可以使用捕获图像canvas toDataURL但我该如何调整它的大小 我必须创建一个新的吗
  • jQuery - 解析 JSON 数据 - 变量名称遇到问题

    我第一次深入研究 JSON 数据的使用 不过我有一些使用 jQuery 的经验 我发布到此 URL tumblr api jyoseph com api read json 我想做的是输出返回的 json 到目前为止我所拥有的 docume
  • 当选择更改时使用 JQuery 进行检测

    我有一个 Jqgrid 它动态生成这样的选择
  • 将“密码”类型添加到 Google Apps 脚本输入框

    是否可以将 密码 类型分配给 Google Apps 脚本输入框 以便不显示文本 以下工作正常 但输入字段是一个简单的文本框 并显示文本而不是 Browser inputBox Please enter your password 我有一个
  • 如何防止 CouchDB 在更新简单计数器时创建文档修订

    我想将计数器存储在 CouchDB 文档中 并在每个页面视图上递增 CouchDB 将创建本文档的完整修订版 只需 1 次计数器更新 这样会不会占用太多空间 考虑到我一天的点击量为 100 万次 我一天内可能会查看该文档的 100 万次修订
  • Javascript document.getElementsByClassName 返回未定义

    我有一个函数应该相当简单 并且应该在加载后完成 以减少初始加载时间 基本上我使用这段代码来获取类 prefImg 的所有元素并用它们做一些事情 但是在firebug中调试时 它说var divsList未定义 function popula
  • Angular ui-router:链接不可点击

    我尝试运行 angular ui router 来处理我的视图 但我遇到了问题 以下视图的两个链接不可点击 带有链接标签的角度更改变量 但我无法单击 我有这样的观点 h1 App h1
  • 将类添加到一组

    我有一群 ul 是动态创建的 我需要在最后添加一个类 li 每一个 I have ul li last each function this addClass last 但这仅仅增加了一个class last 到最后 ul 不在所有的 ul
  • jQuery 选择除最后一个之外的所有内容

    使用 jQuery 如何选择除最后一个元素之外的所有元素 div class elem 1 div div class elem 2 div div class elem 3 div 例如 我想隐藏 div 的 1 和 2 但保留 3 di
  • $.each([集合]) 与 $([集合]).each()

    两种方法似乎产生相同的结果 http jsbin com owedo 但我一直很难真正说服人们第二种方法有效 因为它显然并不为人所知 Create some data var foo vals id foo id bar Common Me
  • 使用 Node.js 将对象写入文件

    我已经在 stackoverflow google 上搜索过这个 但似乎无法弄清楚 我正在抓取给定 URL 页面的社交媒体链接 该函数返回一个包含 URL 列表的对象 当我尝试将此数据写入不同的文件时 它会输出到该文件 object Obj
  • 如何在 ionic 应用程序中显示 pdf 文件而无需下载

    我所做的事情 在应用程序浏览器中使用 使用谷歌文档 使用的网页视图 所以我尝试了所有这些方法来使用 ionic 在 Android 设备中显示 pdf 文件 但没有用 我可以在所有这些方法中看到下载按钮 谁能告诉我如何在没有用户下载选项的情
  • JavaScript随机生成0或1个整数[重复]

    这个问题在这里已经有答案了 当我编写脚本来填充数据库时 我试图生成随机 0 或 1 如果是1 我会将其保存为男性 反之亦然 将其保存为0 在我的 JavaScript 中 Math floor Math random 1 1 我用它来生成
  • CKEditor - 内联:以禁用模式显示

    我正在尝试在内联模式下使用 CKEditor 如下所示 var div div content CKEDITOR disableAutoInline true CKEDITOR inline div 0 单击 div 时 将显示 CKEdi
  • 无法访问jsf组件中的javascript文件

    我有一个必须访问 javascript 文件的 jsf 组件 我添加了这个输出脚本 如下面的代码所示 我在生成的 html 中收到错误 并且无法访问 javascript javascript 文件位于 document root js 目
  • 使用 RequireJS 的条件注释仅加载 IE7/8 jQuery

    我在我的项目中使用 Require JS 它加载 jQuery 和其他一些与整个网站和所有浏览器相关的 JavaScript 文件 但是 我需要在 Internet Explorer 7 和 8 上使用一些条件 jQuery 我尝试将其放在
  • Javascript 是否处理整数上溢和下溢?如果是,怎么办?

    我们知道Java不处理下溢和溢出 https stackoverflow com questions 3001836 how does java handle integer underflows and overflows and how
  • CSS3 过渡卡住了

    我们的新网站上正在进行很多转换 有一个特别之前工作得很好 但自从添加谷歌地图后 某种过渡效果不会触发 此外 它还会禁用网站上的所有其他过渡效果 直到触发另一个 javascript 函数 我不知道为什么 但这些就是事实 该问题似乎仅限于 S
  • 查找可以具有绝对定位元素的页面/文档内容的完整高度

    我试图获取页面的高度 可能会在 iframe 中加载 该页面具有绝对定位的元素 这些元素延伸到页面正常底部以下 以下是我尝试过的事情 document body scrollHeight document body offsetHeight
  • JQuery - $.ajax() - 使用 JSONP 跨源 - 仅在 IE 8 中获取“parsererror”(在 IE 7 中工作)

    我有以下代码来执行跨域请求并获取 JSONP 数据 通过回调方法包装的 JSON 我已经验证我使用包装 JSON 数据的回调方法正确获得了响应 它在 IE7 中工作得很好 回调 cb 被调用 但在 IE8 中则不然 document rea

随机推荐

  • 创建自定义 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 来完成 如果您单击一个项目 例如 人类 它旁边会弹出一条信息 我在这里