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区别和联系:http://www.zhangxinxu.com/wordpress/2015/10/understand-svg-transform/

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

D3之svg transform 与 css3 transform 区别与联系相关推荐

  1. html transform属性,css3 transform属性详解

    CSS3变形是一些效果的集合,比如平移translate() .旋转rotate().缩放scare()和倾斜skew()效果,每个效果都被称作为变形函数(Transform Function),它们 ...

  2. css3 transform文字,CSS3 transform 字体模糊问题

    使用 Vue Material 的 Dialog 做了一个弹出框,弹出框内动态绑定了几个数据,页面效果一出来 What the fuck? 马赛克? Vue Material 的组件肯定没问题,应该自 ...

  3. css让div旋转,CSS3 transform 属性 旋转 div 元素

    div { transform:rotate(7deg); -ms-transform:rotate(7deg); /* IE 9 */ -moz-transform:rotate(7deg); /* ...

  4. 理解CSS3 transform中的Matrix(矩阵)

    一.哥,我被你吓住了 打架的时候会被块头大的吓住,学习的时候会被奇怪名字吓住(如"拉普拉斯不等式").这与情感化设计本质一致:界面设计好会让人觉得这个软件好用! 所以,当看到上面& ...

  5. 【CSS3】 理解CSS3 transform中的Matrix(矩阵)

    理解CSS3 transform中的Matrix(矩阵) by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu ...

  6. CSS3 Transform变形理解与应用

    CSS3 Transform变形理解与应用 Transform:对元素进行变形: Transition:对元素某个属性或多个属性的变化,进行控制(时间等),类似flash的补间动画.但只有两个关键贞. ...

  7. CSS3 Transform 【3D 】

    三维变换使用基于二维变换的相同属性,如果您熟悉二维变换,你们发现3D变形的功能和2D变换的功能相当类似.CSS3中的3D变换主要包括以下几种功能函数: 3D位移:CSS3中的3D位移主要包括trans ...

  8. css3 transform animation 动画 小结

    css3 transform animation 动画 小结 最近在策划自己的博客,本来是想写一个 酷炫 可以让人玩的,全是动画的页面, 结果哎 - - 可以说是非常失败了,这是一个刷牙的动画,变色的 ...

  9. CSS3 Transform详解

    CSS3 Transform 简介: Css3 transform 允许元素在2维以及3维空间进行变换.具体包括三大块,2D transform.3Dtransform.以及SVG transform ...

  10. 基于css3 transform实现散乱的照片排列

    分享一款基于css3 transform实现散乱的照片排列.这是一款简单零散的css3相册排列特效下载.效果图如下: 在线预览    源码下载 实现的代码. html代码: <div class ...

最新文章

  1. html 滚动条向下滚动,如何实现元素随着滚动条向下滑动逐渐变小
  2. jQuery选择器全集详解
  3. netty系列之:netty中的懒人编码解码器
  4. Spring Boot端口从默认更改为自定义或新端口
  5. 一个自动生成关键字索引页面的比处理文件
  6. 一文读懂Java泛型中的通配符 ?
  7. 基于Bounding Box的激光点云聚类
  8. 阿里云业绩同比增126% 云服务现“3A鼎立”
  9. linux module 目录,/sys/module/ 模块信息目录与/proc/modules文件
  10. 实体映射类库之ModelMapper
  11. javascript高级程序设计 Boolean类型
  12. 自定义Flutter控件
  13. 怎样才算是优质的Scratch作品?
  14. Java技术栈(跳槽,面试必备)
  15. 解决ROS编译时opml库找不到
  16. html复选框,不打勾默认值是0,打钩默认值是1,方框打钩符号复制(一招教你方框里打勾的符号)...
  17. @SpringBootApplication注解的意思
  18. AWK中的OFS的问题
  19. 腾讯帝国的下坡路 | 畅言
  20. 离散数学期末复习知识点(不挂科系列)

热门文章

  1. MongoDB 3.0 新特性【转】
  2. Linux下进程信息的深入分析
  3. open*** 跨平台部署
  4. SharePoint 网站搬迁
  5. oracle 执行顺序 select查询优化
  6. async await 的用法
  7. git学习笔记(上)
  8. Dataguard之redo传输服务
  9. Linux中断技术、门描述符、IDT(中断描述符表)、异常控制技术总结归类
  10. 如何利用ThoughtWorks.QRCode 生成二维码