博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
D3之svg transform 与 css3 transform 区别与联系
阅读量:5095 次
发布时间:2019-06-13

本文共 1423 字,大约阅读时间需要 4 分钟。

  D3就不用多介绍了,在数据可视化界属于大佬级别的js库。在这里主要想记录一下在写程序期间遇到的一个问题。

  如下图所示,想完成主视图在小地图上的映射,小地图的白色矩形框用来代表当前主视图可见区域,主视图可以进行缩放和平移。因此涉及到一些变换计算。

mainChart.group = mainChart.svg.append("g")            .attr("transform", "translate(" + mainChart.width / 2 + "," + mainChart.height / 2 + ")");        /*mainChart.group的变换导致mainChart.g的坐标原点并不在左上角,而在svg的坐标变换中不能设置变换的相对坐标,但是css3可以设置相对坐标(attr使用svg变换,style使用css3变换)*/        mainChart.g = mainChart.group.append("g")            .style("transform-origin", (-mainChart.width / 2) + "px " + (-mainChart.height / 2) + "px");        mainChart.svg_links = mainChart.g.selectAll(".links") .data(mainChart.result_links) .enter() .append("path") .attr("id", function (d, i) { return "link_" + i; }) .attr("stroke-opacity", mainChart.now_link_opacity) .attr("stroke", mainChart.now_link_color) .attr("stroke-width", mainChart.now_link_size) .attr("fill", "none") .attr("d", mainChart.line); mainChart.svg_nodes_g = mainChart.g.selectAll(".nodes") .data(mainChart.result_nodes.filter(function (d) { return !d.children; })) .enter() .append("g") .attr("id", function (d) { return "node_" + d.id; });

最开始是使用一个g元素将这个视图平移至主视图的正中心,然后再添加一个g元素用来存放点和边的绘制。此时,第二个g元素的坐标原点是以父节点平移后的位置为坐标原点,即主视图正中心为坐标原点。而在小地图中,矩形的变换是以小地图svg的右上角为坐标原点,导致两个坐标原点不能匹配,因此需要完成对坐标原点的修正。而svg的变换中无法设置transform-origin属性,所以采用css3,将第二g元素的坐标原点重新设置为主视图的左上角,从而保持一致。

关于svg的transform和css3的transform区别和联系:

转载于:https://www.cnblogs.com/RainyBear/p/8329174.html

你可能感兴趣的文章
作品-网站 - [二次开发] 广联达BIM
查看>>
JavaScript中的String对象
查看>>
C语言面试题(一)--------华为
查看>>
利用python解析地址经纬度和利用经纬度定位地址
查看>>
Linux下VMware在更新完内核无法启动
查看>>
希腊字母
查看>>
rust
查看>>
H3C S5000和H3C S5500,俺来罗
查看>>
EXTJS之DATA PROXY READER
查看>>
python-day18-初识面向对象
查看>>
SQLHelper
查看>>
吴昊品游戏核心算法 Round 17 —— 吴昊教你玩拼图游戏 序
查看>>
Python学习笔记——基础篇【第五周】——random & time & datetime模块
查看>>
linux SSH 汇总
查看>>
CCNA第三讲笔记
查看>>
JSR303校验
查看>>
上传文件
查看>>
System V 信号量使用相关函数
查看>>
让android程序根据重力感应旋转屏幕(支持4个方向旋转)
查看>>
我所热衷的编程生涯 连载(8)
查看>>