Welcome aboard scalfy, I just did one of these. It was far more complex than yours. :-) It had five states for mapped areas - since you have only one, what I would do is follow the stacking method mentioned below, remove the <img> tag and map, and make it an anchor tag. Then you could do something like this.
<a id="#circle" href="#">This is my circle image</a>
#citcle { display:block; width: 1000px; height: 800px; background:url(splashpage.png) top left no-repeat; }
#circle: hover { background-position: bottom left; }
That's the **easier** way, no JS required. However, it will change when the entire image is moused over, even outside the circle. If you want it to only change in the area of the circle, you're correct in that you'll have to use JS, but if you use Jquery it's quite easy.
Begin by taking your splashpage.png and stacking it with the alternate image below it. So if it's a 1000 X 800 image, your file will now be 1000 X 1600 with the moused-over version on the bottom (use this for either method: )
MY IMAGE
--------
MY MOUSEOVER
Now create a 1 X 1 transparent pixel (one of the few times we ever have to use these now!) This will be our "imagemap," with the splashpage.png as our background image for the container holding the transparent image. Since we're using the transparent image and it's map as the event object and operating on another object, we can't do this in CSS alone, we need the assistance of Javascript.
Now your HTML will look something like this.
<p id="splashcontainer"><img src="images/
blank-pixel.gif" width="1000px" height="800px" alt="Homepage Image" usemap="#splashpage" />
</p> In XHTML, image objects should be contained anyway. Add an ID to the map anchor:
<area shape="circle"
id="mapcircle" coords="754,406,111" href="tickets.html"
alt="TICKETS" />
ALT is required for valid XHTML The CSS for this would be something like:
#splashcontainer { margin:0; padding:0; display:block; width: 1000px; height: 800px; background:url(splashpage.png) top left no-repeat; }
Now we add the Javascript to the head of the document, you can use any version of JQuery - I have an old one for reasons unrelated to this project:
<script type="text/javascript" src="jquery-1.2.6.min.js"></script>
<script type="text/javascript" src="my-script.js"></script>
The contents of myscript.js would be this alone. What is happening here is on initialization of the document, we are assigning an action to the map mouseover. When moused over, the Javascript moves the background of #spashcontainer to the bottom position, emulating :hover.
$(function(){
$('#mapcircle').onmouseover=function() { $('#splashcontainer').style.backgroundPosition="bottom left"; }
$('#mapcircle').onmouseout=function() { $('#splashcontainer').style.backgroundPosition="top left"; }
});
Note this is not tested code, typed on the fly, but this will work, even on complex maps.