d3.js-当鼠标悬停在SVG容器上的这些元素上时,我如何设置光标
d3.js - How can I set the cursor to hand when mouseover these elements on SVG container?
我用d3.js在SVG容器上画了一些圆。
我已经成功地将这些圆圈上的鼠标悬停行为设置为打印简单的控制台消息。当我鼠标悬停(和鼠标移出)时,我会看到这些控制台消息,所以我知道它们工作正常。
但是,我不想打印控制台消息,而是想在鼠标悬停在它们上面时将光标更改为指针,并且在鼠标悬停时将光标改回正常箭头。考虑到下面的代码,我该怎么做?
在mouseover上,我知道我需要将样式属性cursor
更改为pointer
,在mouseout上,我也知道我需要更改为default
,但我不知道该如何执行。有人能向我解释一下吗?下面是我的代码。
var myCircle = svgContainer.selectAll(".dots")
.data(myDataList).enter().append("circle")
.attr("class", "dots")
.attr("cx", function(d, i) {return d.centerX})
.attr("cy", function(d, i) {return d.centerY})
.attr("r", 5)
.attr("stroke-width", 0)
.attr("fill", function(d, i) {return "red"})
.style("display", "block");
myCircle.on({
"mouseover": function(d) {
console.log('Hello World!'); // What do I change this to?
},
"mouseout": function(d) {
console.log('Goodbye World!'); // What do I change this to?
}
}
);
你可以这样做:
myCircle.on({
"mouseover": function(d) {
d3.select(this).style("cursor", "pointer");
},
"mouseout": function(d) {
d3.select(this).style("cursor", "default");
}
});
此处为工作代码
或
你可以在CSS中简单地解决这个问题。
myCircle.style('cursor', 'pointer')
为什么不让CSS来处理它呢?
.dots {
cursor: pointer;
}
你刚才试过这个吗:
var myCircle = svgContainer.selectAll(".dots")
.data(myDataList).enter().append("circle")
.attr("class", "dots")
.attr("cx", function(d, i) {return d.centerX})
.attr("cy", function(d, i) {return d.centerY})
.attr("r", 5)
.attr("stroke-width", 0)
.attr("fill", function(d, i) {return "red"})
.style("display", "block")
.style("cursor", "pointer");
因为当您将游标定义为对象的指针时,当您"鼠标悬停"时,指针就会变成指针。
请参见以下示例:https://jsfiddle.net/oj5vubxn/2/
在这种情况下动态设置样式没有任何意义。如果鼠标位于元素上,则应用光标样式。否则,将鼠标悬停在另一个图元上,并应用该图元的光标样式。因此,没有理由根据mouseover事件动态设置样式。您还可以在初始化时设置样式。
myCircle.style("cursor", "pointer");
或者,只需将CSS文件中的样式设置为另一个答案。
相关文章:
- 如何重置搜索表单中的特定表单元素
- HTML5-画布元素&自定义光标
- html元素是否具有内置的属性
- Javascript重置元素样式
- 保持光标位置元素在顶部使用 svg
- 为什么触发点击内容可编辑不会激活元素和设置光标
- 如何在每次页面重新加载时更改渐变背景,同时保持光标位置元素处于活动状态
- ContentEditable元素--将光标移回可编辑文本的开头
- jQuery未根据总li宽度重置nav元素宽度
- jQuery如何动态添加select元素和重置select
- 谷歌Chrome元素仍然存在:即使从光标移开,也要悬停
- 将char插入光标所在的活动表单元素中
- 如何设置<p>元素,以及如何使用按钮重置某个对象的所有对象
- Appending Child重置JavaScript上先前附加的元素值
- HTML元素的光标是在拖动之后设置的,但不是在拖动过程中设置的
- AngularJS:让元素跟随光标
- 当元素在光标下动态移动时,光标样式不会更新
- JQuery -显示进度鼠标光标在整个页面(也JQuery UI元素),并正确重置之后
- 防止“向上箭头”;键在文本框内重置光标位置
- 如何使元素靠近光标