Computer Forums

Member Login

Remember Me? Sign Up! | Forgot Password
 
Slogan
 
Computer Forums > Programmers Lounge > Programming Discussions » Specialized Javascript Image Rollover
Closed Thread
Old 08-09-2004, 12:09 AM   #1 (permalink)
 
Newb Techie

Join Date: Aug 2004

Posts: 1

harton

Default Specialized Javascript Image Rollover

I am trying to make a javascript image rollover feature for my site. The problem is I am using angled images, which makes the rollover difficult. I found a script on O'Reilly's website which allows for using only 3 images (one for normal state, one for mouseover, and one for mousedown) and using image maps and CSS to control which part of the image is displayed, provding a mousover effect. The only problem is it is set to use rectangle shapes on the image maps, and I need something that can use polygon shapes.






A demo of the code can be seen here :

http://www.oreillynet.com/javascript...1_example.html


The complete code is :


------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
<base href="http://www.oreillynet.com/javascript/2003/07/01/examples/">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Scriptable Imagemaps</title>
<script type="text/javascript">
/*****************************************
Scriptable Image Maps by Danny Goodman (www.dannyg.com)
A bonus recipe for readers of O'Reilly's
"JavaScript & DHTML Cookbook"
This recipe first published at O'Reilly Network (www.oreillynet.com)
For full implementation notes, read the article.
******************************************/
function initMaps() {
if (document.getElementById) {
var mapIds = initMaps.arguments; // pass string IDs of containing map elements
var i, j, area, areas;
for (i = 0; i < mapIds.length; i++) {
areas = document.getElementById(mapIds[i]).getElementsByTagName("area");

for (j = 0; j < areas.length; j++) { // loop thru img elements
area = areas[j];
area.onmousedown = imgSwap; // set event handlers
area.onmouseout = imgSwap;
area.onmouseover = imgSwap;
area.onmouseup = imgSwap;
}
}
}
}


// image swapping event handling
function imgSwap(evt) {
evt = (evt) ? evt : event;
var elem = (evt.target) ? evt.target : evt.srcElement;
var imgClass = elem.parentNode.name;
var coords = elem.coords.split(",");
var clipVal = "rect(" + coords[1] + "px " +
coords[2] + "px " +
coords[3] + "px " +
coords[0] + "px)";
var imgStyle;

switch (evt.type) {
case "mousedown" :
imgStyle = document.getElementById(imgClass + "Down").style;
imgStyle.clip = clipVal;
imgStyle.visibility = "visible";
break;
case "mouseout" :
document.getElementById(imgClass + "Over").style.visibility = "hidden";
document.getElementById(imgClass + "Down").style.visibility = "hidden";
break;
case "mouseover" :
imgStyle = document.getElementById(imgClass + "Over").style;
imgStyle.clip = clipVal;
imgStyle.visibility = "visible";
break
case "mouseup" :
document.getElementById(imgClass + "Down").style.visibility = "hidden";
// guarantee click in IE
if (elem.click) {
elem.click();
}
break;
}
evt.cancelBubble = true;
return false;
}

</script>
</head>

<body onload="initMaps('menubarMap')">

<div style="position:relative">
[img]/javascript/2003/07/01/graphics/menubarUp.jpg[/img]
[img]/javascript/2003/07/01/graphics/menubarOver.jpg[/img]
[img]/javascript/2003/07/01/graphics/menubarDown.jpg[/img]
</div>
<map id="menubarMap" name="menubar">

<area shape="rect" coords="8,22,117,86" href="index.html" alt="new" title="new" onclick="return false" />
<area shape="rect" coords="120,22,227,86" href="products.html" alt="products" title="view products" />
<area shape="rect" coords="230,22,337,86" href="manuals.html" alt="manuals" title="download manuals" onclick="return false" />
<area shape="rect" coords="340,22,447,86" href="dealers.html" alt="dealers" title="find a dealer" onclick="return false" />
<area shape="rect" coords="450,22,557,86" href="support.html" alt="support" title="get support" onclick="return false" />
<area shape="rect" coords="560,22,667,86" href="contact.html" alt="contact" title="contact us" onclick="return false" />
</map>

</body>

</html>


------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------






Can anyone help to refromat the code to accept polygon shapes?

Thanks.
harton is offline  
Old 08-14-2004, 05:01 PM   #2 (permalink)
 
Junior Techie

Join Date: Aug 2004

Posts: 52

Lasha

Default

I don't really know how to edit that code to make it fit your needs, but what you can do it make a square image with whatever shape you want. Then you can use HTML Image Maps to make the links in a sphere, or a polygon, or etc. Here's a link that might help:

http://www.htmltutorials.ca/lesson20.htm
__________________
<a href=\"http://www.ionmac.com/\">iOnMac.com - Apple website - Community Boards - Help us grow!</a>
<a href=\"http://www.ionmac.com/\"><img src=\"http://www.createdbyjessica.com/screenshots/80x15ionmac.jpg\"></a> GRAB YOUR iOnMac BUTTON!
Lasha is offline  
 
Closed Thread

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On