Think of DHTML as not a singular technology
but a combination of three existing technologies
glued together by the Document Object Model
(DOM):
1. HTML - For creating text and image links
and other page elements.
2. CSS - Style Sheets for further formatting
of text and html plus other added features
such as positioning and layering content.
3. JavaScript - The programming language
that allows you to accesses and dynamically
control the individual properties of both
HTML and Style Sheets.
The way JavaScript accesses the properties
of an HTML document is through the Document
Object Model (DOM). The job of the DOM is
to expose all the attributes of HTML and
Style sheets to JavaScript control. All
you need to know about the DOM is what JavaScript
commands it accepts. Not that easy, as different
browsers have their slightly different versions
of the DOM, so they access HTML properties
differently as well as display them differently.
So how do you locate an HTML element on
a page and change its property? This is
the job of JavaScript. Obviously, I cant
into all the details of JavaScript or the
DOM, but here is an example of how JavaScript
can change a visibility of a style sheet
layer in both browsers.
Note: That every piece of HTML has a location
much like a directory in a phone book. When
finding that piece of HTML you have to go
through the same hierarchy process of searching
for a name in the phone book such as
(state) Washington -> (City) Seattle
-> (Listings) j -> (Name) Jessica
In JavaScript, a reference to this would
be equivalent to
washington.seattle.j.jessica
Now Jessica may have additional information
such as her address and phone number, so
the JavaScript reference would be written
this way.
washington.seattle.j.jessica.address
or
washington.seattle.j.jessica.phone
Lets transcribe the above metaphor to a
DHTML document that contains a <DIV>
layer [myLayer] with style attributes [top,left,width,height,z-index,visibility,etc]
and the layer contains a bit of text "myText"
(Note that the visibility attribute is set
to hidden)
<DIV ID="myLayer" STYLE="position:
absolute; left: 0px; top: 0px; width: 100px;
height: 100px; z-index: 3; visibility: hidden;">
myText </DIV>
In Netscape the address to the DIV layer
"myLayer" is
document.myLayer
in Explorer it is
document.all.myLayer.style
The W3C way of identifying the address
is
document.GetElementById('myLayer').style
To access the properties such as visibility
under "myLayer" you would use
these addresses.
Netscape
document.myLayer.visibility
Explorer
document.all.myLayer.style.visibility
W3C
document.getElementById('myLayer').style.visibility
To change the visibility of this layer
you would assign a value to your JavaScript
address.
Netscape
document.myLayer.visibility = "visible";
Explorer
document.all.myLayer.style.visibility =
"visible";
W3C
document.getElementById('myLayer').style.visibility="visible";
Now the previously hidden layer is now
visible. This is essentially how DHTML works,
but understand there are hundreds and hundreds
of attribute properties for text, images,
documents and windows. Not all these properties
are supported in both browser and sometime
accessing a property requires a few more
hurdles, but if you stick to the common
denominator properties both browser use
then life it a bit easier. I recommend the
excellent DHTML reference book Dynamic HTML
- The Definitive Guide by Danny Goodman
(O'Riley Books) It lists all of the DHMTL
properties and their cross browser compatibilities.
About the Author
Eddie Traversa DHTML Nirvana http://nirvana.media3.net/
is a site dedicated to exploring the possibilites
of DHTML. It hosts free graphics, dhtml
templates and tutorials. Some of the tutorials
emphasis is on Flash/DHTML integration.
|