我的项目的最终目标是让我的圆形图像在鼠标悬停时互动。当用户将它们悬停时,我希望圆圈的各个部分将不透明度更改为.5(从1开始)。我有一个图表的图像,但我不知道如何使一个单一图像的区域在悬停时改变不透明度。我尝试了几件事:
非常感谢任何方向或建议。我愿意学习javascript或jquery来帮助完成这项工作。
谢谢
编辑图表图片现已附上
答案 0 :(得分:1)
我不确定我是否理解关于当前答案的正确问题,但如果你想让图表的各个部分互动,我有两种方法:
为了达到使用纯CSS的效果,我猜你需要像你刚才提到的那样在单个图像中划分图表。定位非常简单。我在下面的演示中使用了一个图像让它旋转。在您的情况下,您可以单独剪切图表的每个部分,并使用绝对位置为他们找到合适的位置。
再次如您所说,您可以使用地图区域来定义图表的各个部分。使用这样的插件:ImageMapster你可以实现你想要的。我已经将这一次用于以下map。它再次非常简单,当悬停在地图的任何部分时,它的背景将被另一个背景替换。在您的情况下,您可以使用完全不透明度保存图表,并在悬停图表的图像时显示50%不透明度。
演示不是很干净,因为我没有花很多时间完成部件的位置,但你可以看到它是如何工作的。
transform: rotate(45deg);
答案 1 :(得分:0)
我不知道CSS3过渡是否适合您: http://www.w3schools.com/css/css3_transitions.asp
.chart-item { opacity: 0.5; transition:opacity 2s; }
.chart-item:hover { opacity: 1; }
检查文档以获取浏览器支持。
答案 2 :(得分:0)
也许创建一个div并将每个图像作为一个div的背景或内容(按顺序),然后为div类创建一个监听器,以使用jQuery在mouseenter
或mouseleave
上更改不透明度。
这是一个简单的例子(原谅任何错误):
jQuery的:
$( ".somedivclass" )
.mouseenter(function() {
$(this).fadeTo(200, 0.5);
})
.mouseleave(function() {
$(this).fadeTo(200, 1);
});
关于$.mouseenter()
的更多信息 Here's。 $.fadeTo()
一些用于{{1}}。
答案 3 :(得分:0)
查看此演示。将光标准确地悬停在猫头鹰的眼睛上,您将看到不透明度发生变化。如果将鼠标悬停在图像的其余部分上,它将不会改变。
<强> http://jsfiddle.net/q6d57/14/ 强>
$('.eye1').on('mouseenter mouseleave', function(e) {
$('.box2').stop(true, false).fadeToggle(1500)
});
答案 4 :(得分:0)
我建议使用svg。以下是您正在尝试做的实现,因为我觉得今天要学习d3.js:
您不需要通过代码制作图表,因为您可以使用html5将svg加载到页面上并使用类似于我的css:
.arc.filled:hover {
opacity: .8;
cursor: pointer;
}