Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 悬停样式和转换未正确应用于Firefox中的附加元素_Javascript_Jquery_Html_Css_Svg - Fatal编程技术网

Javascript 悬停样式和转换未正确应用于Firefox中的附加元素

Javascript 悬停样式和转换未正确应用于Firefox中的附加元素,javascript,jquery,html,css,svg,Javascript,Jquery,Html,Css,Svg,我有一个SVG,我用它作为一种交互式平面图。将鼠标悬停在楼层平面的不同区域(图元)上时,它们会展开并浮动在其他区域上方。元素的缩放是由CSS触发的,但是为了使悬停区域显示在其他区域的上方,我使用jQuery将元素附加到SVG的底部 这在Chrome中运行良好,但在Firefox中不起作用。你能帮忙吗 代码实际上超出了问题的字符限制,因此我无法添加代码片段 以下是代码的重要部分: CSS: JS: HTML: 我试图在网上找到一些答案,但我发现的最有用的东西是,我认为这是朝着正确方向迈出的一步

我有一个SVG,我用它作为一种交互式平面图。将鼠标悬停在楼层平面的不同区域(
图元
)上时,它们会展开并浮动在其他区域上方。元素的缩放是由CSS触发的,但是为了使悬停区域显示在其他区域的上方,我使用jQuery将元素附加到SVG的底部

这在Chrome中运行良好,但在Firefox中不起作用。你能帮忙吗

代码实际上超出了问题的字符限制,因此我无法添加代码片段

以下是代码的重要部分:

CSS:

JS:

HTML:



我试图在网上找到一些答案,但我发现的最有用的东西是,我认为这是朝着正确方向迈出的一步,所以希望它能有所帮助。

原因正如您发布的链接所述。在DOM中移动元素将阻止Firefox正确处理悬停事件

一种解决方案是将动画绑定到类而不是悬停事件。然后在悬停时删除该类

jQuery(函数(){
jQuery('g.hoverFX').hover(函数(e){
jQuery(this).addClass(“悬停”).appendTo('svg#Layer_2');
},功能(e){
jQuery(this.removeClass)(“悬停”);
});
});
.st4{fill:#EEEEEE;}
.st19{fill:#1B998B;}
.st20{fill:#87BCDE;}
.st21{fill:#D7263D;}
.st22{fill:#042E6F;}
.st48{fill:#7f3d82;}
g、 气垫外汇{
过渡:0.3s线性变换;
变换原点:50%50%;
变换:比例(1);
}
g、 悬停{
过滤器:url(#阴影);
转换:比例(1.1);
}


谢谢,但您仍然无法在正常状态和悬停状态之间转换,如果该链接中的解决方案正确,我不会询问。此外,您的解决方案与ChromeI中的转换原点有冲突。我没有尝试解决您的所有问题。这就是防止Firefox中出现悬停效果的方法。无论如何,你都需要修复你的
变换原点
,因为你依赖Chrome中的一个bug使房间从中心开始缩放。由于此原因,
变换原点的百分比值目前不建议使用。我建议您切换到绝对像素值,而不是百分比。
g.hoverFX { 
    transition: transform 0.3s linear;
    transform-origin: 50% 50%;
    transform: scale(1); 
}
g.hoverFX:hover { 
    filter: url(#shadow);
    transform: scale(1.1); 
}
jQuery(function(){
  jQuery('g.hoverFX').hover(function(e){
    jQuery(this).appendTo('svg#Layer_2');
  });
});
<g class="hoverFX" id="Conference_1_">
    <rect x="342" y="206.5" class="st19" width="330.3" height="218.9"/>
    <path class="st4" d="M671,207.8V424H343.3V207.8H671 M673.7,205.1h-333v221.6h333V205.1L673.7,205.1z"/>
</g>
<g class="hoverFX" id="Kitchen_1_">
    <rect x="674.3" y="206" class="st48" width="161.7" height="219.3"/>
    <path class="st4" d="M834.7,207.4V424H675.6V207.4H834.7 M837.3,204.7H672.9v222h164.4V204.7L837.3,204.7z"/>
</g>
<g class="hoverFX" id="Catering_Store_1_">
    <rect x="1264.7" y="306.7" class="st20" width="554.7" height="476.3"/>
    <path class="st4" d="M1818.4,307.8v474.2h-552.7V307.8H1818.4 M1820.5,305.7h-556.8V784h556.8V305.7L1820.5,305.7z"/>
</g>
<g class="hoverFX" id="Clearance_Store_1_">
    <rect x="1112.6" y="180.3" class="st21" width="706.8" height="124.4"/>
    <path class="st4" d="M1818.5,181.3v122.4h-704.8V181.3H1818.5 M1820.5,179.3h-708.8v126.4h708.8V179.3L1820.5,179.3z"/>
</g>
<g class="hoverFX" id="Showroom_1_">
    <polygon class="st22" points="296.8,783 296.8,426.7 537.7,426.7 837.4,426.8 837.3,180.4 1110.6,180.4 1110.6,306.7 1262.6,306.7 
        1262.6,783  "/>
    <path class="st4" d="M1109.6,181.4l0.1,124.3l0,2.1h2.1h149.9v474.2H297.8V427.8h239.9l298.7,0l2.1,0l0-2.1l-0.1-244.3H1109.6
         M1111.6,179.3H836.3l0.1,246.4l-298.7,0H295.7V784h967.9V305.7h-152L1111.6,179.3L1111.6,179.3z"/>
</g>