2

我在 HTML 页面上有一个图形的 PNG 图像。

我希望包含一组叠加的 x 和 y 指导线,这些指导线出现在鼠标上方,其顶点跟随鼠标指针,以帮助用户读取 x 和 y 轴上的值。

例如,他们在 WolframAlpha 上使用了这样的效果(虽然在 IE<8 中不起作用): http ://www.wolframalpha.com/input/?i=graph+y%3D2x

有没有人对如何完成这个有任何想法,javascript或其他?如果有帮助的话,我相信 WolframAlpha 会以某种方式使用 HTML5 画布(见下面的截图)。

截屏。

虽然如果有办法避免使用画布以支持 IE8,那将是极好的。网格线当然也可以从图像边界延伸到整个页面,如果这样可以更容易的话。

4

1 回答 1

6

这是一个简单的实现

CSS

#imageholder div{ background-color:black;position:absolute; }
#imageholder{;position:relative;display:inline-block;overflow:hidden; }
#horizontal{width:100%;height:1px;}
#vertical{width:1px;height:100%;}

JS(使用jquery)

$('#imageholder img').on('mousemove', null, [$('#horizontal'), $('#vertical')],function(e){
    e.data[1].css('left', e.offsetX==undefined?e.originalEvent.layerX:e.offsetX);
    e.data[0].css('top', e.offsetY==undefined?e.originalEvent.layerY:e.offsetY);
});
$('#imageholder').on('mouseenter', null, [$('#horizontal'), $('#vertical')], function(e){
    e.data[0].show();
    e.data[1].show();
}).on('mouseleave', null, [$('#horizontal'), $('#vertical')], function(e){
        e.data[0].hide();
        e.data[1].hide();
});

HTML

<div id="imageholder">
    <div id="horizontal"></div>
    <div id="vertical"></div>
    <img src="http://placehold.it/320x280">
</div>

演示

还有穿过页面DEMO的线条

于 2012-07-13T00:44:52.983 回答