★ wanayoo — archive 1999 http://javascriptweenie.com/articles/layers.htmNouvelle recherche | Portail wanayoo
Back to the Web Developer's Journal Main Page
internet.com
side nav bar
Layers in Dynamic HTML
Related Articles:



HOW DID THEY DO THAT???

Find out in:
Amazing HTML





Search Our Site


Check out our Web-based
Discussion Groups:

Check out and join our email-based Mailing Lists on a wide variety of Web development subjects.

Ask the JavaScript Weenie:

For news and reviews of the latest computer audio tools, visit: The Tapeless Studio
Let internet.com work for you!
Discussion Groups Book Reviews Software Reviews Download Web Tools

DHTML Layers

Layers of Simplicity

by Gary Lee

I did not like layers. I hated how various sites used it to clutter my screen with crap. Then I came across Netscape's Expanding Colored Squares Example. I was transfixed by the expanding and contracting squares until, hours later, I realized I needed a life.
June 18, 1998

These moving layers belong to the "Dynamic HTML" family. After extensive research, I learned that Dynamic HTML is defined as "useless little gimmicks added to Web pages by yourself, or at extreme cost, by someone else." Let's take a quick look at layers and how to irritate people with them. First, you will need Netscape Navigator 4.0. MS Internet Explorer 4.0 also has support for this gimmick, but I'll disregard it for this article because

  1. I've run out of disk space to install IE4,
  2. Dissin' MS is cool (as the young delinquent losers in suburban malls say),
  3. It might lead to a second article which will be a copy of this, except for "IE4" replacing "NS4" everywhere, allowing me more time to sit in my rocking chair on the front porch complaining about young delinquent losers.

The first thing to do is define a layer. One way to go about this is to use Style Sheets, like this:

<STYLE TYPE="text/css">
<!--
#layer1 {
   position:absolute;
   top:50px;left:50px;
}
-->
</STYLE>   

A position property with the values absolute or relative defines a layer. If this is in the HEAD of your Web page, then somewhere in the BODY you can put:

<DIV ID=layer1>
This is a layer
</DIV>

If you have an old browser, the text will show up wherever you have placed it in the HTML. However, with a newer browser, the layer1 style you defined earlier will cause it to appear according to the top and left values. This can be used to create nice effects with overlapping text on newer browsers that is a totally unreadable mess on other browsers, or just plain ugly on all browsers.

One thing you might like to do to alleviate the problem is to somehow make the text visible only on capable browsers. You could do this by creating an "empty" layer:

<DIV ID=layer1>
</DIV>

Then, you could use JavaScript to write text into the layer. This way, if the browser does not support layers or JavaScript, nothing will show up. Assuming we have the layer1 style defined and an "empty" layer, we can add the following JavaScript function:

<SCRIPT LANGUAGE="JavaScript">
function layerWriteStuff() {
   if (navigator.appName == "Netscape" && parseInt(navigator.appVersion) >= 4) {
      document.layer1.document.write("Hi, this is a layer.<BR>");
      document.layer1.document.write("Irritating, eh?<BR>");
      document.layer1.document.write("<STRONG>Eat at Joe's</STRONG>");
      document.layer1.document.close();
      document.layer1.bgColor = "#FFDDDD";
   }
}
</SCRIPT>

If your brain hasn't fallen asleep, you might see how the layer is referred to as document.LayerName. The function uses .document.write() to add text to the layer. Don't forget to close() the layer after you finish writing. You can also see a little extra gimmick...a layer background colour. If bgColor is null, then the background is transparent. Lastly, you can see how we use navigator.appName and navigator.appVersion to check if the browser is capable of displaying this layer. If it isn't, we don't write anything, thereby avoiding the problem of messing up the page on an older browser.

With this function, all that is needed is to execute it when the Web page is loaded. All you need is a BODY tag that looks like:

<BODY onLoad="layerWriteStuff();">

The ability to precisely place text might be fun, but what's even more fun is moving it around.

function moveTheLayer() {
   if (document.layer1.left < 400) {
      document.layer1.moveBy(10,1);
      setTimeout(moveTheLayer,100);
   }
   return false;
}

In this function, we use moveBy(x,y) to move document.layer1 horizontally by x and vertically by y. Then we use setTimeout() to run the function again after 100 milliseconds. The net result is a layer, and its contents, moving across the screen. We use the left property to check the position of the layer and stop the movement when it is far enough to the right.

If you look at the source for this page, you will see all this implemented and in action. It's not rocket science, and it barely scratches the surface, but it is a first step to a greater consciousness of the possibilities and a realization that I have to meet a word quota. To learn more funky things to do with layers, try the Dynamic HTML in Netscape Communicator page. But the basics to start are:

  1. define a layer (e.g. by using a style),
  2. create a layer (perhaps with <DIV ID=LayerName>),
  3. use JavaScript to funkify the layer.

Related Links:



Back to the Web Developer's Journal
Contact WDJ   •    Suits!   •    Propheads!   •    Ponytails!
Masthead   •    Subscribe   •    Search

internet.com
Internet News   Internet Stocks/VC   Internet Technology   Windows Internet Tech.   Linux/Open Source   Web Developer   E-Commerce/Marketing   ISP Resources   Downloads   Internet Resources   Internet Lists   International      Search internet.com   Advertising Info   Corporate Info   Internet Trade Shows  
internet.commerce
Be an Affiliate   Be a Partner   Software Store   Computer Help   Register a Domain   Be Domain Registrar   e-solutions   Internet Jobs   A/V Network   Map Your Website   Rent E-mail Lists   Bookstore   Press Release dist.   Sell Ad Space   Internet Research   Venture Capital   Web Publishing   Build Your Intranet   Expert Advice   Get e-Biz Intell.   Content for Websites
WebDeveloper Network
BrowserWatch   Java Boutique   JavaScript Source   ScriptSearch
SearchEngineWatch   StreamingMedia World   The WDVL   WebDeveloper.com
Developer Forums   Developer News   WebReference.com   The XML Files

Copyright 1999-2000 internet.com Corp. All Rights Reserved. Legal Notices, Reprints.