D3 - 重置 SVG 对象动画

2023-12-25

我正在用交互式标记制作一个图表。每个标记都沿着侧轴开始,单击时会移动到沿线的位置并增大尺寸。我让图标移动和增长,但在重置图表时遇到问题。我可以通过第二次单击使图标返回到其原始位置,但是第二次单击后图标将不再响应单击。 我怀疑这很简单,但我没有看到。

var coal = svg.append("svg:image")
    .attr("xlink:href", "nouns/coal.svg")
    .attr("width", 35)
    .attr("height", 35)
    .attr("x", 10)
    .attr("y", 30)
    .on("click", function() {
        coal.transition()
        .attr("x", 80)
        .attr("y", 150)
        .attr("width", 70)
        .attr("height", 70)
        .duration(750)
        .each("end", function() {
            d3.select(this)
            .on("click", function() {
                coal.transition()
                .attr("width", 35)
                .attr("height", 35)
                .attr("x", 10)
                .attr("y", 30);
            })                      
        })
    });

我有一堆图标,所以我会寻求一种解决方案,每当单击新图标时,将激活的任何图标发送回其轴侧主页。

注:我正在研究小提琴,但小提琴和我相处得不好,所以祈祷吧。


您附加了两个不同的click递手——第一个移到那里,第二个移回来。第二个保持附加状态,即图标移回后,其单击处理程序会将其移动到相同位置(这就是为什么它看起来好像没有移动)。

您可以通过根据当前值动态设置点击处理程序中的属性值来更优雅地完成此操作(并解决问题)。

var coal = svg.append("svg:image")
  .attr("xlink:href", "nouns/coal.svg")
  .attr("width", 35)
  .attr("height", 35)
  .attr("x", 10)
  .attr("y", 30)
  .on("click", function() {
    d3.select(this).transition()
      .attr("x", function() { return d3.select(this).attr("x") == 10 ? 80 : 10; })
      .attr("y", function() { return d3.select(this).attr("y") == 30 ? 150 : 30; })
      .attr("width", function() { return d3.select(this).attr("width") == 35 ? 70 : 35; })
      .attr("height", function() { return d3.select(this).attr("height") == 35 ? 70 : 35; })
      .duration(750);
  });

将整个事物基于数据会更加优雅,即拥有一个包含两个元素的数组,这两个元素定义位置和大小并在它们之间交替。在这种情况下,您也可以使用常用的 D3.data()图案。

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

D3 - 重置 SVG 对象动画 的相关文章

  • 内联 svg 不显示在 xhtml 中

    我创建了一个带有内联 SVG 的 XHTML 文件 当测试为 XHTML 时 它不会显示 但当测试为 HTML 时 它会显示 我已经搜索过互联网并相信我已经指定了正确的名称空间等 但是 我很困惑为什么它没有显示 请帮助我理解我做错了什么 注
  • 如何获取 svgElement 的比例?

    我正在研究 svg div style width 300 height 300 div
  • 以编程方式显示 UIView

    我试图 通过动画 显示 UIView 具体来说 我想显示视图的中心部分 然后慢慢地显示它的外边缘 有点像拉开窗帘 我的第一次尝试是简单地将边界矩形设置得更小 并将其动画化为视图框架的完整大小 但这没有达到预期的效果 因为通过更改边界 我也更
  • 如何重新启动/重置 Jquery 动画

    如何在 jquery 中重置动画 例如 CSS block position absolute top 0 left 0 JS block animate left 50 top 50 如果我做 block stop 动画将停止 但我怎样才
  • css动画移动元素位置

    我的 CSS 动画有这个问题 我有一个元素位置绝对居中于页面中间 当我放置动画时 它会向右移动 当动画完成时 它会移回到页面中间 这是代码 keyframes motto from opacity 0 transform translate
  • 使用 d3 进行多级/分组轴标签

    我想知道是否有一种简单的方法可以在 d3 中添加多级 分层 分组轴标签 例如 如果我有一个折线图 其中 x 轴的月份名称跨越多年 那么我还希望将年份作为月份名称下方的标签 因此它看起来像这样 Oct Nov Dec Jan Feb Mar
  • 背景颜色变化

    SolidColorBrush bgColor public ModernBTN InitializeComponent this Loaded delegate object sender RoutedEventArgs e bgColo
  • 镀铬中的 SVG 条带

    I am using a svg file to produce a smooth gradient when I noticed some serious banding issues in Google Chrome 20 Even s
  • SVG 捕获鼠标坐标

    我知道之前已经有人问过有关 svg 鼠标坐标的问题 但我对我当前遇到的行为感到非常困惑 而且似乎没有一个线程能够解决它 我用于捕获坐标的方法 var pt svg createSVGPoint Created once for docume
  • XAML 网格可见性转换?

    我有一个网格 其可见性绑定到我的视图模型中的属性 这一切都工作正常 网格正确地出现 消失 我的问题是 如何应用过渡 以便网格内容滑入 UI 边缘 而不是立即从屏幕上消失 当它可见时 它应该再次滑出
  • 将文本放置在矩形的中心

    在下面的代码中 文本没有放置在矩形的中心 我使用的是 attr dx x bandwidth 2 attr dy y bandwidth 2 有没有办法将文本中心放置在矩形中 而不是反复试验 目前它看起来像这样 朝底部和朝右 以下是我的代码
  • D3 v4 在同一元素上进行画笔和缩放(鼠标事件不冲突)

    我的目标是构建一个使用两者的 D3 v4 图表d3 zoom https github com d3 d3 zoom and d3 brush https github com d3 d3 brush一起 如下 当鼠标位于 x 轴上时 用户
  • jQuery 动画延迟

    如何使用 jQuery 延迟动画 我需要获得一个导航来扩大宽度 然后扩大高度 然后反转以获得反向动画 Code function nav li not logo nav li ul li hover function this animat
  • Highcharts - 使用选定的饼图切片获得 3D 效果

    在 highcharts 中 我试图使当用户选择或将鼠标悬停在饼图的切片上时 该切片会产生沿 z 轴 朝向用户 上升的效果 我试图通过 css 设置阴影过滤器并使切片的边框更宽 填充颜色相同 来实现此目的 然而 我面临的问题是切片仍然可以位
  • 自定义 SVG 未加载到我的图像标签中

    目前我正在尝试将自定义 svg 组件加载到图像标签内 但由于某种原因 我无法看到地图组件内的 svg 图像 我的自定义 SVG 文件如下所示 我在 SVG 中加载另一个图像
  • D3 向对象添加超链接?

    我正在尝试制作 D3 图 它将代表我网站的菜单 我尝试按照此处的其他指南添加超链接 但它们都不起作用 每个对象都会有一个不同的 URL 指向 主页 关于 联系方式等 如果添加超链接 我可以拖动对象吗 这意味着如果我按住单击 如果我单击该对象
  • 使圆圈与 d3.js 上的多线匹配相同的颜色过滤?

    我有一个多线图 当按每种水果过滤时会更新 每条线条颜色对应不同的销售年份 在 的帮助下Shashank https stackoverflow com users 5569282 shashank 每个数据点线上的圆圈已添加到组中 而不是直
  • Air for Android:动画导致我的游戏出现滞后

    我正在为 android 平台制作一款 cs6 air 游戏 当我为游戏制作动画时 我使用 3D 软件搅拌器 在 Blender 中 我制作了一个动画 然后将其渲染为一系列 PNG 图像 并将其导入到 Flash CS6 中 因此 如果我要
  • 如何在CSS中制作一个带有边框的可调整大小的心形

    我想要制作一个心形 用户可以将其大小调整为任意宽度和高度 并且边框为 1 像素 我尝试了用纯 CSS 制作的心形 https stackoverflow com a 17386187 1404447 https stackoverflow
  • 为什么将 x 和 y 设置为 0 时 svg 文本会消失?

    我刚刚开始阅读有关svg我提出了以下问题 我正在创建一个简单的svg with a text里面如下图所示 从我的阅读中我了解到x and y of the text标签声明文本在标签内的位置svg space 为什么当我同时设置x and

随机推荐

  • 通过 objectID 获取 NSManagedObjects 数组返回空数组

    我正在尝试使用从单独的上下文中收集的对象 ID 数组来执行提取操作 以从上下文中检索托管对象 然而 提取返回一个空数组 来自 核心数据编程指南 的 检索特定对象 部分link https developer apple com librar
  • 如何求列表中两个元素的最大乘积?

    我在 hackerrank 竞赛中尝试一个问题来取乐 然后出现了这个问题 我为此使用了itertools 代码如下 import itertools l for in range int input l append int input m
  • 片段事务上的片段重复

    好的 每当我尝试替换应用程序中的片段时 它只会将片段添加到另一个片段所在的容器内 并保留当前片段 我尝试调用替换并引用包含片段的视图 并引用片段本身 这些都不起作用 我可以使用片段事务管理器将片段添加到视图中 但即使我在添加后尝试将其删除
  • 如何在 C# 中停止线程?

    我创建了一个客户端 服务器应用程序 在服务器上我希望有机会停止服务器然后再次启动它 问题是我无法停止侦听 Tcp 连接的线程 如何在 C 中关闭线程 Thanks private void KeepServer while this con
  • 如何在 jQuery Ajax 调用后管理重定向请求

    我在用着 post 使用 Ajax 调用 servlet 然后使用生成的 HTML 片段替换div用户当前页面中的元素 但是 如果会话超时 服务器会发送重定向指令以将用户发送到登录页面 在这种情况下 jQuery 正在取代div元素与登录页
  • 如何将字符串格式化为 .Net 中的固定宽度字段?

    我正在尝试将任意长度的字符串格式化为固定宽度字段以进行显示 我们以宽度为20为例 将要格式化的字符串称为s 我将格式化字符串添加到名为 b 的 StringBuilder 中 Dim b As New System Text StringB
  • 如何在数学表达式中添加星号符号?

    我正在尝试使用 R 值和重要性编码来注释绘图 但我无法通过 作为符号而不是并置运算符 我试过了 plot math 这是我尝试过的 plot 1 10 1 10 text 6 4 expression R 2 8 text 6 4 expr
  • Java 中的国际象棋位板实现

    我正在寻找创建一个基本的国际象棋 或者如果失败 跳棋 跳棋 引擎 研究完该主题后 我相当有信心我想要使用一系列位板 我基本理解这个概念 但在用 Java 表示它们时遇到困难 我尝试使用 long 将棋盘上的白色棋子表示为 1 将其他所有棋子
  • Android - 将字符串转换为字节[]

    我想将 icon 字符串转换为字节数组 然后将其转换为位图 问题是模拟器中的图像未显示 我想我做得不对 但我知道为什么 我将非常感谢你的帮助 提前致谢 这是我的 JSON 数据 project abbreviation abd custom
  • 使用进位标志进行多字加法

    GCC 有 128 位整数 使用这些我可以让编译器使用mul or imul仅一个操作数 指令 例如 uint64 t x y unsigned int128 z unsigned int128 x y 产生mul 我已经使用它创建了一个
  • 使用maven和jenkins部署到weblogic

    我们在项目中使用 Jenkins 在开发环境中进行构建和部署 我已经在 jenkins 中使用 maven 成功创建了一个 war 文件 现在我必须创建另一个作业来将该 war 文件部署到 weblogic 服务器中 但是 我不知道在詹金斯
  • 当 src 不是有效站点时,Safari 不会调用 iframe onload

    对于以下 iframe Safari 永远不会调用 onload 函数 并且不会在 iframe 中显示任何内容 我测试过的所有其他浏览器都会调用 onload 并显示默认错误网页 为什么会发生这种情况 如果这个问题没有解决方案 那么我需要
  • 如何在winform中打上绿色勾号或红色叉号?

    有没有一种方法可以在 Windows 窗体中的标签旁边添加绿色勾号或红色十字 基本上我需要显示配置是否成功 我正在使用c Thanks 很容易做到 您可以在文本标签旁边添加两个图像 甚至是我在本示例中使用的标签 然后手动切换Visible财
  • 了解 CompletableFuture::runAsync

    我刚刚读过文档 https docs oracle com javase 8 docs api java util concurrent CompletableFuture html runAsync java lang Runnable
  • 交替行的 jQuery 表格样式与 CSS 表格样式

    对于服务器上生成的奇数 偶数行 使用带有类的 CSS 更快 更好 还是使用 jQuery 设置条纹样式更快 更好document Ready 我想开始使用 jQuery 来使我的标记不那么混乱 但我不确定性能 特别是对于较大 最多 200
  • 在 JS 中计算直方图的相似值的最佳方法是什么?

    我正在尝试创建随机生成的数据的直方图 因此目前我正在执行以下操作 假设创建了以下数组 returns 0 0024 0 0231 0 014 0 0005 0 008 我使用以下方法遍历数组 returnsRounded x Math ro
  • 这种广度优先搜索可以变得更快吗?

    我有一个数据集 它是一个大型未加权循环图 循环发生在大约 5 6 条路径的循环中 它由大约 8000 个节点组成 每个节点有 1 6 个 通常大约 4 5 个 连接 我正在进行单对最短路径计算 并实现了以下代码来进行广度优先搜索 from
  • 从资源设置应用程序图标时应用程序大小会增加

    我有一个大小为 16kb 的应用程序 通过 项目属性 菜单添加图标资源后 应用程序的大小如预期增加到 299kb 现在 在 属性 应用程序 下 当我将图标文件设置为 Resource IconName ico 时 文件大小再次增加到 581
  • 带有临时链接的提交按钮

    好的 我不知道我在做什么 我要回去帮助人们找工作 我在 Fiddle 中运行了所有内容 并将其迁移到两个不同的编辑器 一切都显示正常 但没有任何反应 没有警报 没有单击提交 我在我的笔记本电脑上尝试了一下 显示了两个页面 一个页面上有 pr
  • D3 - 重置 SVG 对象动画

    我正在用交互式标记制作一个图表 每个标记都沿着侧轴开始 单击时会移动到沿线的位置并增大尺寸 我让图标移动和增长 但在重置图表时遇到问题 我可以通过第二次单击使图标返回到其原始位置 但是第二次单击后图标将不再响应单击 我怀疑这很简单 但我没有