《D3.js数据可视化实战手册》——2.2 选择单个元素

2.2 选择单个元素

在进行视觉处理时,我们常常需要选择页面上的单个元素。本例将展示在D3中如何使用CSS选择器来选取特定单个元素。

2.2.1 准备阶段

请在浏览器中打开如下文件的本地副本。

https://github.com/NickQiZhu/d3-cookbook/blob/master/src/chapter2/single-selection.html

2.2.2 开始编程

让我们来选取一些元素并在屏幕上打印经典的“hello world”信息。

<p id="target"></p><!-- A -->
<script type="text/javascript">
  d3.select("p#target") // <-- B
  .text("Hello world!"); // <-- C
</script>

本例将在屏幕上显示“hello world”。

2.2.3 工作原理

在D3中,我们用d3.select方法来实现对单个元素的选取。该select方法接受一个CSS3选择器字符串或者待操作对象的引用,并返回一个D3选集。随后,就可以用级联修饰函数对该选集的属性以及HTML进行操作了。

技巧.tif 如果发现多个匹配元素,最终只返回第一个匹配的元素。

本例中,我们在B行,通过id的值选取了段落元素,然后在C行中将它的文本设置为hello world。所有的D3选集都支持一系列标准修饰函数,本例中用到的text函数就是其中之一。下面列出了本书中用到的部分常见修饰函数。

selection.attr函数:用来读取或改变元素上的给定属性。
// 将p元素的foo属性设为goo
d3.select("p").attr("foo", "goo");
//读取p元素的foo属性
d3.select("p").attr("foo");
selection.classed函数:用来添加、删除选定元素上的css class。
// 检测p元素是否有名为goo的class
d3.select("p").classed("goo");
//为p元素添加goo class
d3.select("p").classed("goo", true);
//移除p元素上的goo class。classed方法也接受函数作为参数传入,
// 从而可以动态地添加或移除css class
d3.select("p").classed("goo", function(){return false;});
selection.style函数:用来给选定元素添加指定样式。
// 获取p元素的font-size
d3.select("p").style("font-size");
//将font-size的值设为10px
d3.select("p").style("font-size", "10px");
//将font-size的值设为某个函数的运算结果。style方法也接受函数作为参数传入,
// 从而可以动态地改变样式的值
d3.select("p"). style("font-size", function(){
  return normalFontSize + 10;});
selection.text函数:用来获取或设置选定元素的文本内容。
// 获取p元素的文本内容
d3.select("p").text();
// 将p元素的文本内容设为"hello"
d3.select("p").text("Hello");
// text方法也接受函数作为参数传入,从而可以动态地改变文本内容
d3.select("p").text(function () {
  var model = retrieveModel();
  return model.message;
});
selection.html函数:用来更改元素内的HTML。
// 获取p元素的inner html
d3.select("p").html();
// 将p元素的inner html 设为 "<b>Hello</b>"
d3.select("p").text("<b>Hello</b>");
// html方法也接受函数作为参数传入,从而可以动态地改变元素内的HTML
d3.select("p").text(function () {
  var template = compileTemplate();
  return template();
});

这些修饰函数可用于单个元素以及多个元素,当应用于多元素选集时,这些函数会依次作用于其中每个元素。在后续的内容中将会看到类似示例。

提示.tif 当函数被作为参数传入修饰函数时,其实同时还有一些其他的隐含参数传入,最终实现了数据驱动计算。D3的强大之处就在于数据驱动的方式,它的名称数据驱动文档(data-driven document),也正是来自于此。我们在后续章节中会详细讨论这一问题。

时间: 2024-09-16 05:13:53

《D3.js数据可视化实战手册》——2.2 选择单个元素的相关文章

《D3.js数据可视化实战手册》—— 1.2 搭建一个简易的D3开发环境

1.2 搭建一个简易的D3开发环境 D3.js数据可视化实战手册 在开始使用D3之前,我们要做的第一件事是搭建一个开发环境.这节里,我们将告诉你如何在几分钟内搭建一个简单的D3开发环境. 1.2.1 准备阶段 在我们开始前,请确保你已经安装好一个文本编辑器. 1.2.2 搭建环境 我们先要下载D3.js. 1.我们可以在http://d3js.org/下载最新版本的D3.js,也可以在https://github. com/mbostock/d3/tags下载之前的版本.另外,如果你对开发中的最

《D3.js数据可视化实战手册》——导读

前言 D3.js数据可视化实战手册 D3.js是一个JavaScript库,它主要用于对数据的动态图表展示.通过HTML.SVG以及CSS,D3可以让数据展现得更加鲜活.D3使得数字的图形化展示变得异常简单,可以说,它是当下最强大的基于网络的数据可视化技术. 本书理论与实践结合,力图向读者全方位地展示D3数字可视化技术,帮助读者快速利用D3创建可视化程序.学习完本书后,快速高效地创建叹为观止的数据可视化程序,对读者来说将是小菜一碟! 本书由浅入深,首先介绍了一些D3数字可视化编程中的基本概念,继

《D3.js数据可视化实战手册》—— 第1章 D3.js入门指南

第1章 D3.js入门指南 D3.js数据可视化实战手册本章涵盖以下内容: 搭建简易的D3开发环境 搭建基于NPM(Node Packaged Modules是Node.js的套件管理工具)的开发环境 理解D3风格的JavaScript

《D3.js数据可视化实战手册》—— 1.3 搭建一个基于NPM的开发环境

1.3 搭建一个基于NPM的开发环境 D3.js数据可视化实战手册如果你所在的项目是一个略复杂的数据展示项目,并且使用了为数不少的JavaScript库,那我们之前讨论的那个简单的解决方案可能就显得有些褚小杯大,不能胜任了.在这一节当中,我们将展示一个使用了NPM(Node Packaged Modules,实际上就是JavaScript库的代码库管理系统)的更加强大的系统.如果你像我一样没有耐心,想更快地尝试本书最带劲儿的部分,想学点秘传招式,完全可以跳过这部分,如果想搭建一个产品开发环境,再

《D3.js数据可视化实战手册》—— 第2章精挑细选

第2章精挑细选 D3.js数据可视化实战手册本章涵盖以下内容: 选取单个元素选取多个元素迭代选集中的元素使用子选择器函数级联调用处理原始选集

《D3.js数据可视化实战手册》—— 1.1 简介

1.1 简介 D3.js数据可视化实战手册本章旨在帮助读者初步认识并且运行D3.js.其中包含一些基本知识,比如什么是D3.js,如何搭建一个典型的D3.js数据可视化(data visualization)环境.还有一个专门的章节,解释了一些JavaScript中鲜为人知而D3.js又甚为倚重的特性. 什么是D3?D3是指数据驱动文档(Data-Driven Documents),根据D3的官方定义: D3.js是一个JavaScript库,它可以通过数据来操作文档.D3可以通过使用HTML.

《D3.js数据可视化实战手册》——2.6 函数级联调用

2.6 函数级联调用 到现在为止,我们看到的D3 API都体现了函数级联调用的思想.因此它接近于形成了一个可以动态构建HTML/SVG的领域特定语言(Domain Specific Language).在接下来的例子中,我们将看到如何只使用D3来生成前一个例子的页面结构. 提示.tif 如果对DSL不熟悉,推荐阅读Martin Fowler在领域特定语言(Domain-Specific Languages)一书中的相关解释,参见http://www.informit.com/articles/a

《D3.js数据可视化实战手册》—— 2.1 简介

2.1 简介 选集(selection)是基于D3的可视化项目的重要基础之一,它用来定位页面上的特定视觉元素.如果你已经熟知W3C的标准CSS选择器,或一些流行的JavaScript库(如jquery或Zepto.js)提供的选择器API,那么掌握D3的选择器API对你来说将易如反掌.不过,即便从未接触过选择器也无妨,本章将借助一些生动的例子,带领你一步步地进入选择器的世界,这些例子涵盖了可视化中的绝大多数应用场景. 所有的现代浏览器都内嵌支持W3C的标准选择器API.然而,在网络开发,尤其数据

《D3.js数据可视化实战手册》——2.4 迭代选集中的元素

2.4 迭代选集中的元素 有些时候,我们需要遍历选集中的所有元素,再根据它们的不同位置分别进行不同的处理.本节将使用D3的选集迭代API来实现. 2.4.1 准备阶段 请在浏览器中打开如下文件的本地副本. https://github.com/NickQiZhu/d3-cookbook/blob/master/src/chapter2/selection-iteration.html 2.4.2 开始编程 D3为其选集对象提供了简单的迭代接口,我们可以用类似JavaScript数组的方式迭代D3