首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将Zoom +拖动行为添加到加载到D3.js中的外部SVG?

将Zoom +拖动行为添加到加载到D3.js中的外部SVG可以通过以下步骤实现:

  1. 首先,确保你已经引入了D3.js库,并创建了一个SVG容器来加载外部SVG文件。可以使用以下代码创建SVG容器:
代码语言:txt
复制
var svg = d3.select("body")
  .append("svg")
  .attr("width", width)
  .attr("height", height);
  1. 加载外部SVG文件。使用D3.js的d3.xml()方法加载外部SVG文件,并在加载完成后执行回调函数。可以使用以下代码加载外部SVG文件:
代码语言:txt
复制
d3.xml("external.svg").then(function(externalSVG) {
  svg.node().appendChild(externalSVG.documentElement);
});
  1. 添加Zoom和拖动行为。使用D3.js的Zoom和Drag功能来实现Zoom和拖动行为。可以使用以下代码添加Zoom和拖动行为:
代码语言:txt
复制
var zoom = d3.zoom()
  .scaleExtent([1, 10])
  .on("zoom", zoomed);

var drag = d3.drag()
  .on("start", dragstarted)
  .on("drag", dragged)
  .on("end", dragended);

svg.call(zoom);
svg.call(drag);

function zoomed() {
  svg.attr("transform", d3.event.transform);
}

function dragstarted(d) {
  d3.select(this).raise().classed("active", true);
}

function dragged(d) {
  d3.select(this).attr("cx", d.x = d3.event.x).attr("cy", d.y = d3.event.y);
}

function dragended(d) {
  d3.select(this).classed("active", false);
}
  1. 确保外部SVG中的元素具有相应的类名或选择器,以便应用Zoom和拖动行为。例如,如果你想将Zoom和拖动行为应用于所有的圆形元素,可以在外部SVG中为这些元素添加一个类名,然后使用D3.js的选择器选择这些元素。例如:
代码语言:txt
复制
<circle class="zoomable draggable" cx="50" cy="50" r="20" fill="red"></circle>

然后,使用以下代码选择并应用Zoom和拖动行为:

代码语言:txt
复制
svg.selectAll(".zoomable")
  .call(zoom);

svg.selectAll(".draggable")
  .call(drag);

这样,你就成功将Zoom +拖动行为添加到加载到D3.js中的外部SVG中了。

请注意,以上代码仅为示例,具体实现可能需要根据你的具体需求进行调整。另外,腾讯云相关产品和产品介绍链接地址可以根据具体情况进行选择和提供。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

D3库实践笔记之图表交互 |可视化系列36

d3交互之悬停高亮 为图表赋予交互能力只要两步: •给选择集绑定事件监听器;•定义响应行为。 键鼠事件 在交互中最常见的行为当然要属鼠标触发的,经典的鼠标行为有单机、双击、选中拖动等。...需要说明的是在v3.x版本中是使用d3.behavior.zoom()创建缩放行为,而v5.x及之后的版本是d3.zoom(),不再有behavior这一层抽象; 给矩形和坐标轴添加缩放交互响应: var...绑定d3.zoom()的行为后,就具备了漫游的交互,zoom不仅仅可以放大缩小,还可以拖动元素进行漫游。...漫游是一种拖拽效果,但在力导向图等的交互中,我们希望有更纯粹的拖拽元素效果,因此d3也有d3.drag()用于创建拖拽行为。...,具体实现是可以选择加svg的标签或者加HTML的标签,按需使用。

5.4K00
  • 使用PPT设计专属Power BI动态图表

    PPT的设计能力要比Power BI高很多,如何将这种能力应用到Power BI当中?PureViz这个第三方插件给了我们很好的解决方案。...BI: 选择PureViz,拖动需要的字段到Data Fields: 点击"Load your own design",将刚才从PPT导出的SVG加载到该图表: 此时,该SVG文件的所有元素都会在右侧显示...3.图表设置 ---- 最大号的数字我们用来展现模型中的今年业绩,单击该数字,在右侧的文本内容中选择自定义: 自定义有两种方式,固定值和公式(Fx)。...此处,数据需要随外部切片器变化,因此选择Fx: Fx的值选择需要的度量值,此处为“业绩”,并且加个人民币符号,之后Apply即生效。...这仅仅是一个简单的例子,你甚至可以将一页PPT甚至整个PPT导出成SVG格式,再通过PureViz导入,生成动态PPT: 整个PPT导出SVG格式,只需要另存文件的时候选择SVG即可: 当然,也可以不借助

    3.3K40

    D3.js 满足你对数据可视化的一切幻想

    D3.js D3的全称是Data-Driven Documents(数据驱动的文档),是一个用来做数据可视化的JavaScript函数库,而JavaScript文件的后缀通常为.js,所以D3被称为D3...总之,只要你愿意写代码,D3.js可以满足你对数据可视化的一切幻想。 今天我们以弦图为例进行介绍。 弦图 弦图主要用于表示两个节点之间的联系。两点之间的连线表示二者具有联系,线的粗细表示权重。...定义样式可以单独写在外部CSS文件中,在HTML中用引用;也可以直接写在HTML文件中,在 body { font: 20px sans-serif; } //定义字号字体 .group-tick line...元素选择器以HTML元素的标签作为名称,如: body { font: 20px sans-serif;} 则所有主体内容的字号和字体都这样显示。 类选择器是在选择器名称前加一个点(.)...三 //定义图形大小 SVG指可缩放矢量图形,绝大部分浏览器都支持,可以利用标签将形状嵌入HTML中。 四 。

    4.3K80

    D3.js 满足你对数据可视化的一切幻想

    D3.js D3的全称是Data-Driven Documents(数据驱动的文档),是一个用来做数据可视化的JavaScript函数库,而JavaScript文件的后缀通常为.js,所以D3被称为D3...总之,只要你愿意写代码,D3.js可以满足你对数据可视化的一切幻想。 今天我们以弦图为例进行介绍。 弦图 弦图主要用于表示两个节点之间的联系。两点之间的连线表示二者具有联系,线的粗细表示权重。...定义样式可以单独写在外部CSS文件中,在HTML中用引用;也可以直接写在HTML文件中,在 body { font: 20px sans-serif; } //定义字号字体 .group-tick line...元素选择器以HTML元素的标签作为名称,如: body { font: 20px sans-serif;} 则所有主体内容的字号和字体都这样显示。 类选择器是在选择器名称前加一个点(.)...三 //定义图形大小 SVG指可缩放矢量图形,绝大部分浏览器都支持,可以利用标签将形状嵌入HTML中。 四 。

    3K100

    Matplotlib 中文用户指南 7.1 交互式导航

    按鼠标右键并将其拖动到新位置来进行缩放。 向右移动使x轴成比例放大,或者向左移动成比例缩小。 y轴和上/下移动同上。 开始缩放时鼠标下的点会保持静止,你可以缩放图形中的其它任意点。...使用极坐标绘图时,平移和缩放功能的行为不同。 可以使用鼠标左键拖动半径轴标签。 可以使用鼠标右键放大和缩小半径刻度。...Zoom-to-rectangle(缩放到矩形)按钮 单击此工具栏按钮以激活此模式。 将鼠标放在轴域的某处,然后按鼠标左键。 在按住按钮的同时拖动鼠标到新位置并释放。...轴域会放大并限制于你定义的矩形。 在此模式中还有一个实验性的zoom out to rectangle(缩小到矩形),使用右键,将整个轴域缩小并放置在矩形定义的区域中。...你可以使用以下扩展名保存文件:png,ps,eps,svg和pdf。 浏览快捷键 下表包含所有默认的快捷键,可以使用matplotlibrc(#keymap.*)覆盖。

    2.1K20

    「数据可视化库王者」D3.js 极速上手到Vue应用

    用于数据可视化的 D3,其核心在于使用绘图指令装饰数据,从源数据创建新的可绘制数据,生成 SVG路径以及从数据和方法在 DOM中创建数据可视化元素(如轴)的功能。 ?...首先需要添加一个 svg标签 Bar Chart using D3.js svg class="bar-chart">svg> 然后在 index.js中添加(已添加关键注释)...最后,你将学习如何创建折线图以显示近四个月的比特币价格。要获取数据,你将使用外部API。这个项目还将你在整个课程中学到的很多概念结合在一起,所以这是一个很好的可视化课程结束。...接下来进入第二部分: Vue中使用 D3.js的正确姿势 2. Vue中使用 D3.js的正确姿势 我们将使用 D3和 Vue构建一个基本的柱状图组件。...掌握 D3 后,限制作品水平的只会是想象力而不再是技术。 源码地址:点这里 作者掘金文章总集 需要转载到公众号的喊我加下白名单就行了。

    8.8K10

    大比拼:用24种可视化工具完成同一项任务的心得体会

    下面是我在实验中遇到的一些相互矛盾的目标: 分析vs演示:你想使用工具来挖掘数据(R,Python)还是构建面向公众的可视化(D3.js, Illustrator)?...较为方便的办法是更改工具外部的数据,然后(再次)导入新数据更新可视化。 D3.js就是这种方式的一个例子。...或者你不介意最终创建一个PDF / SVG / PNG(R,Illustrator)? 几年前,交互性图表被视为圣杯 - 但是近来人们似乎已经从“看起来”转向了开始思考它的意义。...我们欢迎像Plotly,Tableau,Lyra和NodeBox这样通过点击和拖动界面提供高度灵活性的应用程序。我很想看到更多这样的程序。创建与代码一样强大的用户界面“只是”一项设计上的挑战。...而且我想更多地研究“创新型的外部图表”。同时也想通过Lyra来处理更多的原型。 你目前选择的路径是什么,为什么?哪些路径未被充分开发呢?

    2.2K70

    高效地将 TailwindCSS 与 Nuxt 结合使用

    我们还将了解如何将 SVG 图标与 TailwindCSS 一起使用,而不是直接使用图像或 SVG 图标,以及如何基于给定图像为 TailwinCSS 构建自定义调色板。...nuxt.config.ts我们需要通过将以下代码添加到您的 Nuxt 配置对象中来指定文件中该文件的路径: tailwindcss: { configPath: '~/tailwind.config.ts...接下来,我们需要将内置的 TailwindCSS 样式加载到我们的应用程序中。 加载 TailwindCSS 样式 默认情况下,Nuxt TailwindCSS 模块将从....但使用 SVG 图标存在一些挑战,例如需要在应用程序目录中手动创建和保存 SVG 文件或创建动态加载 SVG 图标的组件等。此外,选择要使用的正确图标包也可能是一个挑战。...这个优秀的包允许您将 Iconify 中选定的图标包中的图标加载到 TailwindCSS 中作为应用程序中使用的类。

    68020

    从零开始使用 Astro 的实用指南

    那么我们就加一些CSS吧。 Astro中的样式 Astro项目可以用很多方法进行样式声明,我们在这里无法涵盖所有。然而你应该知道,Astro支持任何你能想到的方法。...这意味着写在这个组件中的样式不会泄漏,也不会影响你网站的其他部分。 除了Header组件外,我将把其余的样式添加到一个外部的CSS文件中,并在项目中作为全局样式导入。...image.png 下面是你如何将外部的CSS文件导入到BaseLayout.astro文件中的例子: --- import Header from '.....加载本地文件 在你的blog目录中添加更多的博客文章,这样我们就可以在我们的主页上创建一个列表。 Astro.glob()允许你将本地文件加载到你的静态页面上。...那么问题来了,如何将React组件添加到你的项目中。 首先,你需要将React添加到你的项目中。

    1K40

    将 SVG 与媒体查询结合使用

    SVG 和元素:限制 从 SVG 文件链接到外部资源,包括 CSS 文件,不适用于该元素。这是嵌入到浏览器中的元素的安全限制。...Buckler 的教程“如何将可缩放矢量图形添加到您的网页”讨论了使用和详细信息。...内联 SVG 和外部资源 将 SVG 添加到 HTML 时,浏览器不会加载 SVG 文档引用的外部资源。...注意:SVG 2规范确实定义z-index了 SVG 文档中的行为和堆叠上下文,但大多数浏览器尚不支持它。 SVG 元素是根据它们的源顺序堆叠的。出现在文档后面的那些位于堆栈的顶部。...动画和转换 SVG CSS 属性 当我们将过渡和动画添加到混合中时,将 CSS 与 SVG 结合使用会变得更加有趣。该过程就像使用 CSS 为 HTML 元素设置动画一样,但具有 SVG 特定的属性。

    6.2K00

    HTML5 新特性_CSS3新特性

    ,即抓取对象以后拖到另一个位置 (2)在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放 2.拖动相关设置: (1)设置元素为可拖放: 首先,为了使元素可拖动,把 draggable 属性设置为...(drop 事件的默认行为是以链接形式打开) b.通过 dataTransfer.getData(“Text”) 方法获得被拖的数据。...该方法将返回在 setData() 方法中设置为相同类型的任何数据 c.被拖数据是被拖元素的 id (“drag1”) d.把被拖元素追加到放置元素(目标元素)中 3.拖动示例代码: 八.Canvas vs SVG: 1.SVG: (1)SVG 是一种使用 XML 描述 2D 图形的语言 (2)SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的...No Web Worker support.. } (2)创建 web worker 文件: 在一个外部 JavaScript 中创建我们的 web worker 我们创建了计数脚本。

    5.5K30

    现代前端技术解析:前端三层结构与应用

    let、const不再挂载到window对象下,不存在提升的问题; console.log(a); // Uncaught ReferenceError: a is not defined let a...,很耗性能】; SVG内部元素的动画只能在元素内进行,超出svg>标签元素,就可以认为是超出了动画边界; transition不能实现独立的动画,只能在某个标签元素样式或状态改变时进行平滑的动画效果过渡...通常依据HTML中标签元素的zoom属性缩放和根据REM自适配方案实现等比例缩放。...(1)zoom属性控制方案 ​ 如果希望在320px宽度屏幕上显示的内容在414px的宽度屏幕上进行等比例自动放大,可以考虑使用元素CSS的zoom属性来解决。...行为层响应式 和结构层类似,行为层的响应式同样分为JavaScript内容在前端引入和在后端引入两种情况。

    1.1K31

    SVG的动态之美-搜狗地铁图重构散记

    viewport尺寸计算出正确的展示内容; 注:之所以将“矢量”加引号是因为地图的实现包括栅格瓦片和矢量瓦片两种不同的技术方案。...此时如果用户进行了手势操作,以pan-拖动为例: panstart事件触发后记录拖动的初始坐标,不影响分层结构中的任何一层,也就是说不改变任何一层的任何属性或样式; panmove事件频繁触发,即拖动过程中...2) 拖动到地铁图边界后,拖动结束(即手指离开屏幕)后需要修正拖动边界,否则会停留在拖动结束的状态可能造成大面积空白。这种修正类似Safari IOS的橡皮筋效果。...有了handler节点的辅助,缩放操作进行中(请注意是进行中,不包括起始和结束时刻)唯一的计算便是handler的transform,无需将其转换为SVG的transform。...远于SVG坐标系的更多细节可以参考理解SVG坐标系和变换:视窗,viewBox和preserveAspectRatio 剩下的问题就是如何将CSS的transform-origin换算成SVG的transform

    2.2K01

    23个高手都在用的Figma小技巧!(2022新专辑)-Part 01

    您现在可以将其粘贴到文件内部或外部的任何位置。这样,不用导出文件就可以粘贴到ppt以及任何你想粘贴的地方了。 ‍...006.添加左右约束的网格 当您在将网格添加到框架(Frame)的同时设置约束时,(非嵌套)项目会将列作为其父容器。如果您希望您的元素与网格完美结合,请将它们设置为left-right。 ‍...这样,您可以将组织与命名分离,只需将组件拖动到新框架即可在一秒钟内重新组织组件。而且您的组件名称又好又短。...小提示:Figma中,按住Alt键双击位图可以直接裁切图片。 009.从浏览器复制可以编辑的SVG代码 您可以直接从页面的代码中复制 SVG,而不是下载 SVG 并将它们导入回 Figma 。...你现在可以将它粘贴到你的 Figma 文件中,它仍然是一个可扩展和可编辑的SVG,它的所有图层都包含在内。 试试阿里巴巴图标库中的复制SVG功能,那个更方便。

    3.9K30

    PhotoSwipe中文API(二)

    例如,如果您返回{X:0,Y:0,W:50}缩放动画将在你的页面的左上角开始。 函数有一个参数 - 即打开或关闭项目的索引。 在非模态模式,相对于视口模板的位置应该从x和y中减去。...您可以通过添加选项showHideOpacity做到这一点:真(尝试将其添加到上面CodePen来测试它的外观)。...选项始终是假的时,有不到3张幻灯片。 此选项没有关系箭头导航。箭头循环永久开启。您可以修改通过自定义UI此行为。 pinchToClose boolean true 捏关闭画廊的姿态。...mainClass string undefined 字符串将被添加到根PhotoSwipe(.pswp)的元素类的名称。可以包含由空格分隔的多个类。...如果是 - PhotoSwipe不会叫的preventDefault和点击事件会通过。功能应该是轻是可能的,因为它是在拖动开始和拖动发布执行多次。

    2.5K20
    领券