【问题标题】:Raphael js toFront() method distortedRaphael js toFront() 方法失真
【发布时间】:2014-08-28 02:28:36
【问题描述】:

我只是在尝试用 raphael.js 生成交互式 svg 地图,我想要实现的有点像这个印度地图的例子,我从 wikimedia 下载的,JS fiddle working example ,一切都很顺利,但是当我悬停任何状态时,我无法弄清楚为什么“to.front()”会使地图变形。是因为 SVG 有问题还是和我的代码有关

MY problamatic fiddle , distorted on hover

这是我的一小段代码

regions[i].mouseover(function (e) {
        this.node.style.fill = 'grey';
        //this.glow({ color: "#555", width: 10 });
        //document.getElementById('region-name').innerHTML = this.data('region');
        this.toFront();
        this.attr({
            cursor: 'pointer',
            fill: '#990000',
            stroke: '#fff',
                'stroke-width': '2'
        });
    });

【问题讨论】:

    标签: javascript svg map raphael


    【解决方案1】:

    toFront() 方法不会扭曲任何东西。

    发生的事情是,底层的“区域”是这样制作的,只是其他东西与它重叠。如果你删除其他东西,你会得到类似...

    region jsfiddle

    你真的想要吗..

    regions[i].mouseover(function (e) {...
    

    或者将鼠标悬停在其他元素上?

    所以它做的正是它应该做的。如果您不希望这种情况发生,您将需要将处理程序附加到一个区域,而不是您希望它发生的元素。或者创建一个匹配的不同区域路径。

    【讨论】:

    • 感谢您的回复,但我想有点像这样jsfiddle.net/allankiezel/FJrNN。那么我需要做什么,改变我的 SVG 还是什么?对不起,我没有让你清楚
    • 看看它刚刚缩小时会发生什么jsfiddle.net/3sDDM/2 你会发现形状不是你想象的那样(假设我们谈论的是同一件事!)。您需要有一个填充路径,以准确地填充您想要放大的形状或其他任何形状。
    • 嗯,所以以编程方式我无法实现这一点,我需要设计路径:(或其他东西..
    • 是的,但如果你够聪明,也许部分路径(边界)已经完成(覆盖它的其他元素)可以组合起来。不是微不足道的,但我想可能。或者也许还有其他免费的 svg 地图。
    • 感谢 Mate 的想法 :)
    猜你喜欢
    • 2014-06-09
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 2011-01-30
    • 1970-01-01
    • 2014-01-30
    • 2012-12-18
    相关资源
    最近更新 更多