2015-08-08 39 views
0

对不起,有些东西可能是如此愚蠢的完成,但我卡住了。 我尝试过很多方法让“onmouseover”在地图图像上叠加一张透明图片,但我无法弄清楚。 我放弃了使用PNG图像的可能性,并且我使用JPG图片制作了我的地图,但结果很差,因为我正在制作一个巨大的国家的地图,并且压缩的8位PNG可以保存在这种情况下,空间很大,相比之下,压缩的JPG格式更加丑陋,并且尺寸更大(至少在这种情况下)。 顺便说一下,这里是一个带有Javascript的示例地图的代码来调整它的大小。 请注意,JS不能在小提琴中工作,但它与我的原始地图有关。我不得不让它说清楚,因为我真的需要它,任何可能的解决方案都应该考虑到它。通过使用“onmouseover”,可以在地图上堆叠透明PNG吗?

下面的代码:

<area id="planA" alt="" title="planA" href="#" shape="rect" coords="184,122,408,322" style="outline:none;" target="_self" onmouseover="if(document.images) document.getElementById('choices-map-img').src= 'http://www.clker.com/cliparts/a/5/8/e/1298546227709322759png-transparency.png';" onmouseout="if(document.images) document.getElementById('choices-map-img').src= 'http://blogs-images.forbes.com/jacobmorgan/files/2015/03/Choice.jpg';" /> 

<area id="planB" alt="" title="planB" href="#" shape="rect" coords="572,125,796,318" style="outline:none;" target="_self" onmouseover="if(document.images) document.getElementById('choices-map-img').src= 'http://www.clker.com/cliparts/a/5/8/e/1298546227709322759png-transparency.png';" onmouseout="if(document.images) document.getElementById('choices-map-img').src= 'http://blogs-images.forbes.com/jacobmorgan/files/2015/03/Choice.jpg';" /> 
</map> 

Here's the fiddle with JS.

总之,我想看到的是在具有透明度的工作背景图像中的骰子。 任何帮助真的很感激。

+0

就像@ TomMon-Tom发布使用png来获得透明度。另外JPG还没有alpha通道,所以你不可能摆脱这种情况。 – divy3993

+0

也许描述是误导,但我知道我应该使用PNG图像,问题是,onmouseover完全切换图像,而我问,我需要它在背景之上是透明的。 :/ 你知道我该怎么做才能做到这一点? –

+0

尝试小提琴,它使用JPEG上的PNG,但图片与该方法交换。 如果你知道如何将它堆叠在前面,我很乐意听到它。 就是这样。 –

回答

1

因为PNG可以包含不同于任何其他图像格式的alpha通道数据,所以PNGs是一条可行的路。为什么他们需要JPG格式?你说你自己8位PNG节省了他们在某些情况下所做的空间。如果这是我,我会将它们更改为PNG。

+0

**这并没有回答这个问题。**也许描述是误导性的,但我知道我应该使用PNG图像,问题在于onmouseover完全切换图像,而如我所问,我需要它在背景上透明。 :/你知道我应该怎么做才能使它工作?否则,请在回答前仔细阅读... –

1

这可以通过堆叠图像来完成。另外我需要JQuery库来使用mouseover &鼠标。

DEMO

$("#planA").mouseover(function() { 
 
    $("#plan_a").css("display","block"); 
 
    $("#plan_a").css("width","1000");  
 
    }) 
 
    .mouseout(function() { 
 
    $("#plan_a").css("display","none"); 
 
    }); 
 

 
$("#planB").mouseover(function() { 
 
    $("#plan_b").css("display","block"); 
 
    $("#plan_b").css("width","1000");  
 
    }) 
 
    .mouseout(function() { 
 
    $("#plan_b").css("display","none"); 
 
    });
.main 
 
{ 
 
\t display:block; 
 
\t width:100%; 
 
} 
 

 
.main img 
 
{ 
 
\t float:left; 
 
\t left:0px; 
 
\t position:absolute; 
 
\t width:1000; 
 
} 
 

 
#plan_a, #plan_b 
 
{ 
 
\t display:none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<div class="main"> 
 
\t <img id="main_img" src="http://blogs-images.forbes.com/jacobmorgan/files/2015/03/Choice.jpg" usemap="#choices" alt=""/> 
 
\t <map name="choices" id="choices-id"> 
 
\t \t <area id="planA" alt="" title="planA" href="#" shape="rect" coords="184,122,408,322" style="outline:none;" target="_self" /> 
 
\t \t <area id="planB" alt="" title="planB" href="#" shape="rect" coords="572,125,796,318" style="outline:none;" target="_self" /> 
 
    \t </map> 
 
\t <img id="plan_a" src="http://www.clker.com/cliparts/a/5/8/e/1298546227709322759png-transparency.png" usemap="#choices" /> 
 
\t <img id="plan_b" src="http://www.fnordware.com/superpng/pnggradHDrgba.png" usemap="#choices" /> 
 
</div>

注:图像的堆叠可以做多种方式,我的是这个。去 与你更喜欢适合你的任何东西。

+0

**这不考虑JS中的小提琴** (你删除它) 它的工作原理,好吧,但没有调整器,它是一半的解决。 :/ 它的写法**“任何可能的解决方案都应该考虑到它。“** :P –

+0

顺便说一句,这很好,我可以尝试解决这个问题我自己^ _ ^” Thanx很多为你的努力,我真的很感激它:) –

+0

我解决了resizer问题,通过添加100 %在CSS和你的JavaScript。 现在完美了,我不知道该如何谢谢你,你真棒。 :D 您应该在您的个人资料中的某处放置捐赠按钮。 ;) –