PDA

View Full Version : Rollover/Clicking Popups


millerli26
01-13-2006, 03:46 AM
I am creating a website and I am VERY new to Dreamweaver (I just started using this a few nights ago). What I am trying to do is create a series of uniformly sized boxes that will contain business logos, and as the viewer mouses or clicks on it, whichever is easier really :P, I would like a popup to appear next to the square. This site ('http://www.agingeye.net/maculardegen/maculardegeninformation.php') is really similar to what I'm trying to do, however using images instead of text links.

I've searched high and low and consulted some other forums, but I've had no luck so far so any help you folks can give me would be VERY appreciated. Thanks :)

chriskq
01-13-2006, 05:46 AM
well arn't you just lucky as i was looking online for exactly the same thing this morning

try out these sites for help:
dis jointed roll overs ('http://www.daxassist.com/js/disjointedimagemap.cfm')
or prolly a better version ('http://www.tjkdesign.com/articles/css%20pop%20ups/3.asp')

give it a go and see how far you can get.
Where always here to help when you get stuck.

Chris
aka-the hulksta (btw - thanks C.I for that - lol)

PS - remember to size your images correctly (as in, they are all same height/width in pixels - this will give the site a clean professional look)

chriskq
01-13-2006, 05:49 AM
opps- sorry just checked out that site that wanted similar too AND YUK!
you'll be able to do better than that. nothing worse than bulked text on a webpage

ps - and if ur really keen on builing websites, try and get the hang of a html editor program such as homepage which will make you that much more of a guru in times/years to come

Creative Insanity
01-13-2006, 06:43 AM
The feature you are looking for miller is called a tooltip and there are HEAPS of scripts for them. Here is one by Dynamic Web ('http://www.dyn-web.com/') and it is rather easy to use.

<script language="javascript" type="text/javascript">
<!--
/*
Image w/ description tooltip- By Dynamic Web Coding (www.dyn-web.com)
Copyright 2002 by Sharon Paine
Visit http://www.dynamicdrive.com for this script
*/
/* IMPORTANT: Put script after tooltip div or
put tooltip div just before </BODY>. */

var dom = (document.getElementById) ? true : false;
var ns5 = ((navigator.userAgent.indexOf("Gecko")>-1) && dom) ? true: false;
var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
var ns4 = (document.layers && !dom) ? true : false;
var ie4 = (document.all && !dom) ? true : false;
var nodyn = (!ns5 && !ns4 && !ie4 && !ie5) ? true : false;

// resize fix for ns4
var origWidth, origHeight;
if (ns4) {
origWidth = window.innerWidth; origHeight = window.innerHeight;
window.onresize = function() { if (window.innerWidth != origWidth || window.innerHeight != origHeight) history.go(0); }
}

// avoid error of passing event object in older browsers
if (nodyn) { event = "nope" }


/////////////////////// CUSTOMIZE HERE ////////////////////
// settings for tooltip
// Do you want tip to move when mouse moves over link?

var tipFollowMouse= false;


// Be sure to set tipWidth wide enough for widest image

var tipWidth= 340;
var offX= 20; // how far from mouse to show tip
var offY= 12;
var tipFontFamily= "Verdana, arial, helvetica, sans-serif";
var tipFontSize= "8pt";


// set default text color and background color for tooltip here
// individual tooltips can have their own (set in messages arrays)
// but don't have to

var tipFontColor= "#000000";
var tipBgColor= "#FFFFFF";
var tipBorderColor= "#808080";
var tipBorderWidth= 3;
var tipBorderStyle= "ridge";
var tipPadding= 4;


// tooltip content goes here (image, description, optional bgColor, optional textcolor)
var messages = new Array();


// multi-dimensional arrays containing:
// image and text for tooltip
// optional: bgColor and color to be sent to tooltip
// increminate each new message x 1

messages[0] = new Array('image.jpg',' ',"#FFFFFF");


//////////////////// END OF CUSTOMIZATION AREA ///////////////////


// preload images that are to appear in tooltip
// from arrays above

if (document.images) {
var theImgs = new Array();
for (var i=0; i<messages.length; i++) {
theImgs[i] = new Image();
theImgs[i].src = messages[i][0];
}
}


// to layout image and text, 2-row table, image centered in top cell
// these go in var tip in doTooltip function
// startStr goes before image, midStr goes between image and text

var startStr = '<table width="' + tipWidth + '"><tr><td align="center" width="100%"><img src="';
var midStr = '" border="0"></td></tr><tr><td valign="top">';
var endStr = '</td></tr></table>';

////////////////////////////////////////////////////////////
// initTip - initialization for tooltip.
// Global variables for tooltip.
// Set styles for all but ns4.
// Set up mousemove capture if tipFollowMouse set true.
////////////////////////////////////////////////////////////

var tooltip, tipcss;
function initTip() {
if (nodyn) return;
tooltip = (ns4)? document.tipDiv.document: (ie4)? document.all['tipDiv']: (ie5||ns5)? document.getElementById('tipDiv'): null;
tipcss = (ns4)? document.tipDiv: tooltip.style;
if (ie4||ie5||ns5) { // ns4 would lose all this on rewrites
tipcss.width = tipWidth+"px";
tipcss.fontFamily = tipFontFamily;
tipcss.fontSize = tipFontSize;
tipcss.color = tipFontColor;
tipcss.backgroundColor = tipBgColor;
tipcss.borderColor = tipBorderColor;
tipcss.borderWidth = tipBorderWidth+"px";
tipcss.padding = tipPadding+"px";
tipcss.borderStyle = tipBorderStyle;
}

if (tooltip&&tipFollowMouse) {
if (ns4) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = trackMouse;
}
}

window.onload = initTip;


/////////////////////////////////////////////////
// doTooltip function
// Assembles content for tooltip and writes
// it to tipDiv
/////////////////////////////////////////////////

var t1,t2; // for setTimeouts
var tipOn = false; // check if over tooltip link
function doTooltip(evt,num) {
if (!tooltip) return;
if (t1) clearTimeout(t1); if (t2) clearTimeout(t2);
tipOn = true;


// set colors if included in messages array

if (messages[num][2]) var curBgColor = messages[num][2];
else curBgColor = tipBgColor;
if (messages[num][3]) var curFontColor = messages[num][3];
else curFontColor = tipFontColor;
if (ns4) {
var tip = '<table bgcolor="' + tipBorderColor + '" width="' + tipWidth + '" cellspacing="0" cellpadding="' + tipBorderWidth + '" border="0"><tr><td><table bgcolor="' + curBgColor + '" width="100%" cellspacing="0" cellpadding="' + tipPadding + '" border="0"><tr><td>'+ startStr + messages[num][0] + midStr + '<span style="font-family:' + tipFontFamily + '; font-size:' + tipFontSize + '; color:' + curFontColor + ';">' + messages[num][1] + '</span>' + endStr + '</td></tr></table></td></tr></table>';
tooltip.write(tip);
tooltip.close();
} else if (ie4||ie5||ns5) {
var tip = startStr + messages[num][0] + midStr + '<span style="font-family:' + tipFontFamily + '; font-size:' + tipFontSize + '; color:' + curFontColor + ';">' + messages[num][1] + '</span>' + endStr;
tipcss.backgroundColor = curBgColor;
tooltip.innerHTML = tip;
}
if (!tipFollowMouse) positionTip(evt);
else t1=setTimeout("tipcss.visibility='visible'",100);
}

var mouseX, mouseY;
function trackMouse(evt) {
mouseX = (ns4||ns5)? evt.pageX: window.event.clientX + document.body.scrollLeft;
mouseY = (ns4||ns5)? evt.pageY: window.event.clientY + document.body.scrollTop;
if (tipOn) positionTip(evt);
}


/////////////////////////////////////////////////////////////
// positionTip function
// If tipFollowMouse set false, so trackMouse function
// not being used, get position of mouseover event.
// Calculations use mouseover event position,
// offset amounts and tooltip width to position
// tooltip within window.
/////////////////////////////////////////////////////////////

function positionTip(evt) {
if (!tipFollowMouse) {
mouseX = (ns4||ns5)? evt.pageX: window.event.clientX + document.body.scrollLeft;
mouseY = (ns4||ns5)? evt.pageY: window.event.clientY + document.body.scrollTop;
}


// tooltip width and height

var tpWd = (ns4)? tooltip.width: (ie4||ie5)? tooltip.clientWidth: tooltip.offsetWidth;
var tpHt = (ns4)? tooltip.height: (ie4||ie5)? tooltip.clientHeight: tooltip.offsetHeight;


// document area in view (subtract scrollbar width for ns)

var winWd = (ns4||ns5)? window.innerWidth-20+window.pageXOffset: document.body.clientWidth+document.body.scrollLeft ;
var winHt = (ns4||ns5)? window.innerHeight-20+window.pageYOffset: document.body.clientHeight+document.body.scrollTop ;


// check mouse position against tip and window dimensions
// and position the tooltip

if ((mouseX+offX+tpWd)>winWd)
tipcss.left = (ns4)? mouseX-(tpWd+offX): mouseX-(tpWd+offX)+"px";
else tipcss.left = (ns4)? mouseX+offX: mouseX+offX+"px";
if ((mouseY+offY+tpHt)>winHt)
tipcss.top = (ns4)? winHt-(tpHt+offY): winHt-(tpHt+offY)+"px";
else tipcss.top = (ns4)? mouseY+offY: mouseY+offY+"px";
if (!tipFollowMouse) t1=setTimeout("tipcss.visibility='visible'",100);
}


function hideTip() {
if (!tooltip) return;
t2=setTimeout("tipcss.visibility='hidden'",100);
tipOn = false;
}

//-->
</script>

Then just link them to the image ot text with this line of code.
<a href="#" onmouseover="doTooltip(event,0)" onmouseout="hideTip()" >text or image tag</a>

and that is all there is to it.

millerli26
01-16-2006, 12:42 AM
So will I need to insert the script for every image I want to use this on?

Creative Insanity
01-16-2006, 01:57 AM
Yes.

millerli26
01-16-2006, 03:05 AM
Okay, thanks a ton guys, I had no idea what I needed was called and you guys still got it! :):):)

Creative Insanity
01-16-2006, 04:41 AM
Ok good luck with it.
It is an easy script.

Just created a new thread if you have any hassles.

davidj
01-16-2006, 02:17 PM
<span style='color:red'>reopened coz i have the power</span>

look for this line in the script

messages[0] = new Array('image.jpg',' ',"#FFFFFF");

you dont need to copy the full script for every image just add another line...

// tooltip content goes here (image, description, optional bgColor, optional textcolor)

messages[0] = new Array('image.jpg',' content content content',"#FFFFFF");
messages[1] = new Array('image.jpg',' content content content'',"#FFFFFF");
messages[2] = new Array('image.jpg',' content content content'',"#FFFFFF");

then add (note the argument i am passing changes for each link)



<a href="#" onmouseover="doTooltip(event,0)" onmouseout="hideTip()" >text or image tag</a>

<a href="#" onmouseover="doTooltip(event,1)" onmouseout="hideTip()" >text or image tag</a>

<a href="#" onmouseover="doTooltip(event,2)" onmouseout="hideTip()" >text or image tag</a>



i would add CI's script in a seperate js file and call it into each page using a js src call. It would be bad practice to copy that thing into every page

i would also change...
var tipFollowMouse= false;
to TRUE for the tooltip to behave properly like a tooltip should