第十一章 交互式操作

    交互,指的是用户输入了某种指令,程序接受到指令之后必须做出某种响应。对可视化图表来说,交互能使图表更加生动,能表现更多内容。例如,拖动图表中某些图形、鼠标滑到图形上出现提示框、用触屏放大或缩小图形等等。

    用户用于交互的工具一般有三种:鼠标、键盘、触屏。

    对某一元素添加交互操作十分简单,代码如下:

    on() 的第一个参数是监听的事件,第二个参数是监听到事件后响应的内容,第二个参数是一个函数。

    鼠标常用的事件有:

    • click:鼠标单击某元素时,相当于 mousedown 和 mouseup 组合在一起。
    • mouseout:光标从某元素上移出来时。
    • mousemove:鼠标被移动的时候。
    • mousedown:鼠标按钮被按下。
    • mouseup:鼠标按钮被松开。
    • dblclick:鼠标双击。

    键盘常用的事件有三个:

    • keypress:当用户按下字符键(大小写字母、数字、加号、等号、回车等)时触发,按住不放会重复触发此事件。该事件区分字母的大小写。
    • keyup:当用户释放键时触发,不区分字母的大小写。
      触屏常用的事件有三个:

    • touchmove:当触摸点在触摸屏上移动时。
    • touchend:当触摸点从触摸屏上拿开时。
      当某个事件被监听到时,D3 会把当前的事件存到 d3.event 对象,里面保存了当前事件的各种参数,请大家好好参详。如果需要监听到事件后立刻输出该事件,可以添加一行代码:

    将第 5.1 章的部分代码修改成如下代码。

    这段代码添加了鼠标移入(mouseover),鼠标移出(mouseout)两个事件的监听器。监听器函数中都使用了 d3.select(this),表示选择当前的元素,this 是当前的元素,要改变响应事件的元素时这么写就好。

    mouseover 监听器函数的内容为:将当前元素变为黄色

    mouseout 监听器函数的内容为:缓慢地将元素变为原来的颜色(蓝色)

    展示地址:http://www.ourd3js.com/demo/rm/R-8.0/interaction.html