![07f2b742a94ffcf4fd8e4a2a61a1825d.png](https://i-blog.csdnimg.cn/blog_migrate/4105205aa91ebcda3052209db613158b.jpeg)
这书买了一个月了,终于开封了。
D3.js的官网,看官网最新的版本已经到5.7了。
D3.js - Data-Driven Documentsd3js.org![4602716505c65ed06abb66340ee874dd.png](https://i-blog.csdnimg.cn/blog_migrate/940962214894ddfc3cdf1670fb08a50e.jpeg)
之前对D3.js的印象完全以为它是一个图形库,类似于echart.js那种,各种安利D3.js的广告也都打的是可视化的关键词。
![6fdd865e7c418f1fb05e447c2760473f.png](https://i-blog.csdnimg.cn/blog_migrate/567507c7c262b4276a680886010a0583.png)
不读书只能被扇醒啊,应该类比成jQuery才对。至少链式的操作跟jQuery是一模一样的。
Hello World
先看一个Hello World感受一下
<!DOCTYPE html>
![2952a5e18ec0f686789438289e80b8bd.png](https://i-blog.csdnimg.cn/blog_migrate/a5f1b1b636b70520466ff7dc7aadf784.jpeg)
github上的中文手册也不错
d3/d3github.com![6d8f44379c5bb7b0c6bcf09d02a01971.png](https://i-blog.csdnimg.cn/blog_migrate/824990bd589d2b70a9cde0b62e04ef33.png)
选择器
这跟jQuery一毛一样啊,DOM操作的话选择器确实是基础。
选取单个元素
d3.select( )
d3
选择完了之后可以链式地跟attr、classed、style、text、html各种方法,直接看栗子
d3
选取多个元素
d3.selectAll( )
迭代元素
d3
举一反三,查了下API,没有map,但是有filter
![6891dcfabb4af31191c1249c9ffc3c01.png](https://i-blog.csdnimg.cn/blog_migrate/c59a6fd4c27d1c4db9cfdb2e5f7e6801.jpeg)
子选择器
要么使用css的>选择器来选择子元素,要么通过级联继续调用select来选择子元素,至于我们熟悉的jQuery里的children( ),查了一下,在d3里存在于别的对象上
d3
D3.js里的级联调用,返回的都是当前操作或者变化的元素,所以会看到如下的代码
body
获得原始DOM对象
通过D3.js操作后的对象并不是原始DOM对象,这也跟jQuery一样,jQuery里只要调用数组索引[index]或者get(index)方法就能获得,在D3.js里要通过nodes( )方法
d3