MXL Magazine Online
HOMELATEST ISSUEARTICLESBINARY BINGEJAVA JNUKYGUI LABLINKSSHOPABOUT CONTACT  
Home > Issue 004 > Java Junky > Show hide layers

Show hide layers

In this article I'll be looking at what you can do in DHTML and Javascript functions.

Why use dynamic layers?

Dynamic layers can be used to do several praction functions:

a) adverts

Using dynamic adverts allows you to fill the screen with an advert for a short time or inserting the advert into the middle of the page without having tro disurb content. This allows you to give the user the option to hide the advert as well so it does not intrude.

b) adding extra content

Visitors with different screen sizes cause no end of problems, so making the decision of where to draw the line is a hard one. 640 pixels? 700 pixels? 800 pixels?

The problem is thayt if you make your side too wide it won't fin on some users screens whereas if you make it too small the content will be all squashed up and won't fill the screen.

The solution. Extra content added on in a layer. This can be done using the syntax:

If client.width > 800 Then

show layer

Else

hide layer

End If

MSN use this to add their channels menu onto the edge of the page if the browser window is wide enough.

c) using tooltips

Tooltips can be easily added to images using the ALT tag which provides text for the image if it does not load of a user has disabled them. However if you want to add a tooltop to ordinary text (links) or if you want to enhance your tooltips with formated text, images, etc, you can do this using a layer.

d) adding dynamic content

Dynamic content means you can add pages on top of each other using an ifrane. For instance ou could have a layer pop up with an iframe linking to a help page on your site.

The basic syntax

When dynamically showing or hiding layers it is slightly more complex than programing in languages such as Visual Basic ("objecct. show"). However it can be donein javascript using:

document.object.visible = 'true or false'

You can add this directly into a link though the easiest way I find is to embedd it in a fuction:

<script language="JavaScript" type="text/JavaScript">
function hidelayer{
document.layer1.visible = False
}
</script>

This script presumes you have a layer called layer1. To name your layer simply add the following to the tag:

name="layer1" ID="layer1"

Yuo can then create a link to activate this fuction:

<a href="javascript:hidelayer()">Hide My Layer</a>

Show Hide Layer Function

The above example works fine but you need a different link and function for showing and hiding the layer. It may not be cross browser compatable either but we will worry about that in a later article. But its easier to have one function to do both so you only need one link and so you can have it done automatically in case you want to. For the situation you could use this script:

<script language="JavaScript" type="text/JavaScript">
function showhidelayer{
If document.layer1.visible = 'True' Then

// layer1 is visible
// so hide it
document.layer1.visible = 'False'

else

// layer1 is hidden
// so show it
document.layer1.visible = 'True'

end if
}
</script>

Now all you need to do is add the following link somehwere into your page and everytime you click it, it will auotmatically show or hide your layer (make sure your layer is named layer1).

<a href="javascript:showhidelayer()">Show/hide My Layer</a>

A quick example

Here's an example we used on one of M World's old sites where it detects how wide the browser is and if its wide enough it writes in another column in a table. All you need to do is modify this so that it adds in a layer if the browser is wide enough.

The easiest way to do this is to write you code in HTML and then convert it into javascript using a tool such as HTML to AnyCode.

It also reloads the page if a user resizes the browser to make sure it fits on but you can remove this function if you dont want this to happen by removing the second script tag at the bottom.

<SCRIPT language=javascript>

hidestuff();

function hidestuff() {
if (document.body.clientWidth > 880) {
document.writeln('<td bgcolor=\"#996666\" valign=\"top\" >');
document.writeln("<table width=\"160\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"LayerT\">");
document.writeln(" <tr> ");
document.writeln(" <td height=\"73\" valign=\"top\" colspan=\"2\"> <div align=\"right\"><img src=\"../../media/images/layercorner.gif\" width=\"30\" height=\"30\"></div></td>");
document.writeln(" </tr>");
document.writeln(" <tr> ");
document.writeln(" <td colspan=\"2\"><div align=\"center\"><img src=\"/media/images/features/layer001.gif\" width=\"120\" height=\"80\"></div></td>");
document.writeln(" </tr>");
document.writeln(" <tr> ");
document.writeln(" <td height=\"57\" colspan=\"2\"> <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\">");
document.writeln(" <tr> ");
document.writeln(" <td><a href=\"#\">Need a break? Check out the travel channel for that ");
document.writeln(" perfect desination</a></td>");
document.writeln(" </tr>");
document.writeln(" </table></td>");
document.writeln(" </tr>");
document.writeln(" <tr> ");
document.writeln(" <td colspan=\"2\" bgcolor=\"#B69292\">&nbsp;Communities</td>");
document.writeln(" </tr>");
document.writeln(" <tr> ");
document.writeln(" <td width=\"25\">&nbsp;</td>");
document.writeln(" <td><a href=\"#\">Star Wars</a><br> <a href=\"#\">Javascript</a><br> <a href=\"#\">Teens</a><br> ");
document.writeln(" <a href=\"#\">Internet</a><br> <a href=\"#\">more...</a></td>");
document.writeln(" </tr>");
document.writeln(" <tr> ");
document.writeln(" <td colspan=\"2\"><a href=\"http://www.microsoft.com/windowsxp\"><img src=\"../../media/adverts/square001.gif\" alt=\"Windows XP\" width=\"160\" height=\"160\" border=\"0\"></a></td>");
document.writeln(" </tr>");
document.writeln(" <tr> ");
document.writeln(" <td colspan=\"2\" bgcolor=\"#B69292\">&nbsp;Explore</td>");
document.writeln(" </tr>");
document.writeln(" <tr> ");
document.writeln(" <td width=\"25\">&nbsp;</td>");
document.writeln(" <td><a href=\"#\">Literature</a><br> <a href=\"#\">Wicca</a><br> <a href=\"#\">Linux</a><br> ");
document.writeln(" <a href=\"#\">Hitch Hiker Guide</a><br> <a href=\"#\">more... </a></td>");
document.writeln(" </tr>");
document.writeln("</table>");
document.writeln("</td>");
}
else {
document.write('')
}
}
function redo() {
window.location.reload();
}
function errortrap( msg,url,line){
return true;
}
</SCRIPT>
<SCRIPT language=javascript event=onresize for=window type=text/javascript>
// remove the line above and everything below if you don't want the page to reload when the brower is resized
redo();

onerror = errortrap;
</SCRIPT>