我正在使用 jQuery Map Hilighter插件,但我不想在每个区域上淡化一个深色补丁,而是想反转它,而是使周围区域变暗,保持悬停区域的颜色相同。
我查看了插件的代码,它似乎使用 canvas 元素(我猜是一个 MS 等效元素)来进行突出显示。然而,Firebug 对形状定义的确切位置并不是很明确——在上面的演示中它只是显示了这一点:
<canvas style="border: 0pt none ; padding: 0pt; width: 960px; height: 593px; position: absolute; left: 0pt; top: 0pt; opacity: 1;" height="593" width="960"></canvas>
而且我看不到任何指定要悬停的元素形状的东西。这是似乎正在创建形状的 JS 部分:
add_shape_to = function(canvas, shape, coords, options) {
var i, context = canvas.getContext('2d');
context.beginPath();
if(shape == 'rect') {
context.rect(coords[0], coords[1], coords[2] - coords[0], coords[3] - coords[1]);
} else if(shape == 'poly') {
context.moveTo(coords[0], coords[1]);
for(i=2; i < coords.length; i+=2) {
context.lineTo(coords[i], coords[i+1]);
}
} else if(shape == 'circ') {
context.arc(coords[0], coords[1], coords[2], 0, Math.PI * 2, false);
}
context.closePath();
if(options.fill) {
context.fillStyle = css3color(options.fillColor, options.fillOpacity);
context.fill();
}
if(options.stroke) {
context.strokeStyle = css3color(options.strokeColor, options.strokeOpacity);
context.lineWidth = options.strokeWidth;
context.stroke();
}
if(options.fade) {
fader(canvas, 0);
}
};