-
单击节点展示节点信息
-
双击节点以该节点为中心展开
-
双击导致 svg 图放大 (zoom)
双击节点时, 会触发这个节点的双击事件, 这个节点的单击事件, 还有整个svg的双击事件.
考虑到整个svg图会受节点双击事件影响导致放大, 是由于冒泡导致的, 所以可以取消一下 d3.js 的事件冒泡:
.on("zooms", function () {
d3.event.sourceEvent.stopPropagation();
- 点击节点时不会放大整个 svg 图
- 点击节点以外的其他区域时, svg 可以放大
将 zoom 中的双击事件重新设置为null:

vue 引入的 d3 库中, d3-zoom.js 中的代码:

- 整个svg图的双击放大功能失效, 因此不仅点击节点时不会导致svg图放大, 点击其他区域也不会使svg图放大.
描述使用 D3.js v5版本绘制了一个力引导图, 有几个功能之间发生了冲突:单击节点展示节点信息双击节点以该节点为中心展开双击导致 svg 图放大 (zoom)问题双击节点时, 会触发这个节点的双击事件, 这个节点的单击事件, 还有整个svg的双击事件.解决方法一考虑到整个svg图会受节点双击事件影响导致放大, 是由于冒泡导致的, 所以可以取消一下 d3.js 的事件冒泡: .on("zooms", function () { d3.eve
d3可缩放
这个可重用的组件提供了一种使用鼠标滚轮/拖动事件使DOM元素可缩放/平移的简便方法。 它主要是功能的便利包装,它隐藏了一些复杂性,并提供了对常见用例的轻松访问。
支持缩放svg (通过转换属性), canvas (通过上下文转换)甚至纯html DOM元素(通过转换样式)。
查看示例:
import zoomable from 'd3-zoomable';
const zoomable = require('d3-zoomable');
[removed][removed]
const myZoom = zoomable();
myZoom(<DOM>)
.svgEl(<SVG eleme
在dragstart 和dragend 使用 d3.event.sourceEvent.stopPropagation()
click的阻止冒泡
使用 d3.event.stopPropagation()
在d3中使用on()绑定事件,on的第二个参数为一个函数,函数的参数为data(绑定事件的选择元素(d3.select())上绑定的数据),函数里的thi...
业务需求是模态框为可拖动,模态框内为D3.js的拖拽和缩放事件,然而两者是冲突的,出现的效果特别奇怪,但是在D3中回调函数并没有Event事件,所以只能用D3自带的阻止默认事件方法去处理。原生阻止默认事件方法
//阻止浏览器的默认行为
function stopDefault(e) {
//阻止默认浏览器动作(W3C)
if (e && e.preventDefault)
像素图由一个个像素块组成,矢量图由多个数学公式绘制曲线组成,这样即使我们缩放,数学公式会重新计算,所以矢量图不会出现失真。
二、D3.js使用
https://d3js.org/
D3js 是一个可以基于数据来操作文档的 JvaScript 库。可以帮助你使用 HTML, CSS, SVG 以及 Canvas 来展示数据。D3 遵循现有的 Web 标准,可以不需要其他任何框架独立运行在现代浏览器中,它结合强大的可视化组件来驱动 DOM 操作。
三、D3操作svg
四、D3绑定数据
五、绘制静态直方图
移动端浏览器兼容性较好,我们不需要考虑以前JS的兼容性问题,可以放心的使用原生JS书写效果,但是移动
端也有自己独特的地方。比如触屏事件touch (也称触摸事件),Android和IOS都有。touch对象代表一个触摸点。触摸点可能是一根手指 ,也可能是一根触摸笔。触屏事件可响应用户手指(或触控笔)对屏幕或者触控板操作。常见的触屏事件如下:
1.2 触摸事件对象(TouchEvent)
TouchEvent是一类描述手指在触摸平面(触摸屏、触摸板等)的状态变化的事件。这类事件用于描述一个或多
个触点,使
直接给出可以在WebServer中运行的代码,通过这个示例,你可以知道如何进行事件绑定表格数据官方建议用csv运行效率高d3ia_2.html<html>
<head>
<title>D3 in Action Examples</title>
<!-- 演示D3的事件绑定 -->
<meta charset=...
d3.js是一个用于数据可视化的JavaScript库,可以帮助我们创建交互式和动态的图表和图形。在你提供的引用中,有关于使用d3.js实现图片放大的代码和一些问题。
根据你提供的代码,你可以使用d3.zoom()函数来实现图片的放大。在代码中,你创建了一个svg元素,并在其中添加了一个g元素和一个image元素。然后,你使用svg.call(d3.zoom())来调用d3.zoom()函数,并设置了一些参数,如缩放范围和缩放事件的处理函数。在zoomed函数中,你使用d3.selectAll('g')来选择所有的g元素,并使用transform属性来设置缩放的变换。
如果你想要实现图片的放大功能,你可以在zoomed函数中添加一些代码来改变image元素的大小。你可以使用d3.select('.control-img')来选择image元素,并使用attr()方法来设置其height和width属性。根据你的需求,你可以根据缩放的比例来计算新的大小,或者直接设置一个固定的值。
另外,你提到了一个新的需求,即点击按钮后,将放大或缩小的图形恢复到原始大小。为了实现这个功能,你可以在按钮的点击事件处理函数中,使用attr()方法来设置image元素的height和width属性为原始大小。
综上所述,你可以根据上述的提示和代码,使用d3.js来实现图片的放大和恢复功能。希望对你有帮助!
#### 引用[.reference_title]
- *1* [d3.js 取消zoom双击放大, 阻止默认事件](https://blog.csdn.net/Charonmomo/article/details/122428430)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v12^insert_chatgpt"}} ] [.reference_item]
- *2* [vue+svg+d3.js清除放大缩小的效果](https://blog.csdn.net/weixin_42118466/article/details/106056400)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v12^insert_chatgpt"}} ] [.reference_item]
- *3* [D3.js的放大,缩小和平移功能:](https://blog.csdn.net/m0_52518047/article/details/119039356)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v12^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]