This chapter discusses how to specify either absolute or relative positions for blocks of HTML content. It lists all the characteristics you can specify for a positioned block of HTML content, describes the <NOLAYER>
tag, and discusses the behavior of applets, plug-ins, and forms in positioned blocks of HTML content.
A layer can have an absolute position or a relative position.
If a layer has an absolute position, you can specify its position within its containing layer, or within the document if it is not inside another layer. You define the exact position of the top, left corner of the layer by setting the left
and top
attributes or properties.
For a layer with absolute position, if you do not provide values for the left
and top
attributes or properties, they default to the value of the current position in the containing layer. For a layer at the top level, you can think of the document as the containing layer.
A layer with an absolute position is considered out-of-line in that it can appear anywhere in an HTML document, and does not take up space in the document flow.
To create a layer with an absolute position, use the <LAYER>
tag with a matching </LAYER>
tag to identify the end of the layer. For layers defined as styles, create a layer with an absolute position simply by specifying the position
property as absolute
. For example:
<LAYER ID=layer1 TOP=200 LEFT=260>
<P>Layer 1 content goes here</P>
</LAYER>
<STYLE type="text/css">
<!--
#layer1 {position:absolute; top:200px; left:260px;}
-->
</STYLE>
A layer with a relative position is known as an inflow layer, and it appears wherever it naturally falls in the flow of the document. Inflow layers are considered to be both inflow, because they occupy space in the document flow, and inline, because they share line space with other HTML elements. If you want an inflow layer to appear on a separate line, you can insert a break before the layer, or wrap the layer in the <DIV>
tag.
For layers with relative positions, you can use the left
and top
attributes or properties to specify the offset of the layer's top-left corner from the current position in the document.
To create an inflow layer, you can use the <ILAYER>
tag with a closing </ILAYER>
tag. For layers defined as styles, create an inflow layer by specifying the position
property as relative
.
For example:
<ILAYER ID=layer2>
<P>Layer 2 content goes here</P>
</ILAYER>
<STYLE type="text/css">
<!--
#layer2 {position:relative; }
-->
</STYLE>
This section lists all the attributes or properties that you can specify when defining layers, whether you use the <LAYER>
and <ILAYER>
tags to create layers, or you define layers as styles. (This list only includes only those properties that are relevant to layers. A style definition for a layer can include any style property. See Chapter 5, "Style Sheet Reference," for a list of all the other style sheet properties.)
For the sake of simplicity, in this section the term parameter means either an HTML attribute or a style property. For example, the ID
parameter means either the ID
attribute that can be used with the <LAYER>
tag or the ID
style property. Whenever the term attribute is used, it means an attribute for an HTML tag. Whenever the term property is used, it means a style property.
The <LAYER>
tag always uses pixels as the unit of measurement for attributes that specify a distance. You do not need to specify the measurement units. For style properties however, you should always specified measurement units for properties that have numerical values.
#block1 {position:absolute;}
#block2 {position:relative;}
The position
property applies only to layers defined as styles. It indicates that the style represents a positioned block of HTML. Its value can be either absolute
or relative
.
A style whose position
property is absolute
creates a layer similar to one created by the <LAYER>
tag. A style whose position
property is relative
creates a layer similar to one created by using the <ILAYER>
tag.
<LAYER ID=block1>
#block1 {position:absolute;} /* CSS */
The ID
parameter is an identification handle, or name, for the layer. The ID
must begin with an alphabetic character. (The ID
attribute was previously called NAME
. The NAME
attribute still works, but its use is discouraged, since it is only applicable to the <LAYER>
tag).
You can use the layer's id as a name to refer to the layer from within HTML and from external scripting languages such as JavaScript.
This attribute is optional; by default, layers are unnamed, that is, they have no id.
The LEFT
and TOP
parameters specify the horizontal and vertical positions of the top-left corner of the layer within its containing layer, or within the document if it is at the top level. Both parameters are optional. The default values are the horizontal and vertical position of the layer's contents as if it was not enclosed in a layer. The value must be an integer.
For layers with absolute positions, the origin is the upper-left corner of the document or containing layer, with coordinates increasing downward and to the right.
The default units for LEFT
and TOP
when used in the <LAYER>
tag is pixels. When defining a layer as a style, however, you need to specify the units. For example:
<LAYER BGCOLOR="yellow" TOP=300 LEFT =70
WIDTH=400 HEIGHT=200>
<P>Paragraph in layer with absolute position.</P>
<LAYER BGCOLOR=teal TOP=50 LEFT=20
WIDTH=200 HEIGHT=100>
<P>Paragraph in embedded layer with absolute position</P>
</LAYER>
</LAYER>
<DIV STYLE="position:absolute; background-color:yellow;
top:300px; left:70px; width:200px; height:200px;
border-width:1;">
<P>Paragraph in layer with absolute position.</P>
<DIV STYLE="position:absolute; background-color:teal;
top:30px; left:20px; width:150px; height:120px;
border-width:1px;">
<P>Paragraph in embedded layer with absolute position.</P>
</DIV>
</DIV>
For layers with relative positions, the origin is the layer's "natural" position in the flow, rather than the upper-left corner of the containing layer or page. You can also use the LEFT
and TOP
parameters to offset a relatively positioned layer from its natural position in the flow, as shown in the following example.
<P>Paragraph above relatively positioned layer.</P>
<P><ILAYER LEFT=2>
This relatively positioned layer is displaced 2 pixels to the right of
its normal position.
</ILAYER></P>
<P>Paragraph below relatively positioned layer</P>
<P>This <ILAYER TOP=3>word</ILAYER> is nudged down 3 pixels.</P>
<P>Paragraph above relatively positioned layer.</P>
<P STYLE="position:relative; left:2px;">
This relatively positioned layer is displaced 2 pixels to the right of
its normal position.</P>
<P>Paragraph below relatively positioned layer.</P>
<P>This <SPAN STYLE="position:relative; top:3px;>word </SPAN> is nudged down 3 pixels.</P>
The following code illustrates another example of relatively positioned layers defined as styles.
STYLE TYPE="text/css">
<!--
all.UP {position:relative; top:-10pt;}
all.DOWN {position:relative; top:10pt;}
-->
</STYLE>
<BODY>
<P>This <SPAN CLASS=DOWN>text </SPAN>goes <SPAN CLASS=UP>up</SPAN>
and <SPAN CLASS=DOWN>down, </SPAN>up
<SPAN CLASS=DOWN>and <SPAN CLASS=DOWN>down.</SPAN></SPAN>
</P>
</BODY>
To see the results of some of the examples given in this section, see:
updown.htm
When using the The following example uses inline JavaScript code to define a layer whose ID is Notice these two points in the previous example: Using Inline JavaScript to Position Layers
<LAYER>
tag, you can use also inline JavaScript scripted expressions to position the layer. For example, you can position one layer relative to another. suspect1
, and then defines another layer whose ID is suspect2
that is positioned 10 pixels below the bottom of the first suspect.<LAYER ID="suspect1">
<IMG WIDTH=100 HEIGHT=100 SRC="suspect1.jpg">
<P>Name: Al Capone
<P>Residence: Chicago
</LAYER>
<LAYER ID="suspect2"
LEFT=&{"&"};{window.document.suspect1.left};
TOP=&{"&"};{window.document.suspect1.top +
document.suspect1.document.height + 10};>
<IMG WIDTH=100 HEIGHT=100 SRC="suspect2.jpg">
<P>Name: Lucky Luciano
<P>Residence: New York
</LAYER>
top
from the layer, but you get the value of height
from the layer's document.
Although you cannot use inline JavaScript within a style definition for a layer, you CAN use JavaScript to reposition such a layer after it has been defined.
<LAYER PAGEX=100 PAGEY=100>
These attributes are used only with the <LAYER>
tag; there is no equivalent style property.
The PAGEX
and PAGEY
attributes specify the horizontal and vertical positions in pixels of the top-left corner of the layer relative to the enclosing document (rather than the enclosing layer.)
<LAYER SRC="htmlsource/meals/special.htm>
source-include:url("htmlsource/meals/special.htm"); /* CSS */
The SRC
attribute for the <LAYER>
tag and the source-include
style property specify an external file that contains HTML-formatted text to be displayed in this layer. (Note that the source-include
style property is not approved by W3C.)
The file specified can contain an arbitrary HTML document.
The following code shows an example of the use of the SRC
attribute and include-source
property.
<STYLE TYPE="text/css">
<!--
#layer1 {
position:absolute;
top:50pt; left:25pt; width:175pt;
include-source:url("content1.htm");
background-color:purple;
color:yellow; border-width:1; }
-->
</STYLE>
<BODY BGCOLOR=white>
<DIV ID=layer1>
</DIV>
<LAYER top=50 left=250 width=175
src="content1.htm"
BGCOLOR="#8888FF">
</LAYER>
</BODY>
To see the results of this example, select:
source1.htm
The source file can include JavaScript code. Any layers in the source file are treated as child layers of the layer for which the source file is providing content. Using an external source as the content of your layer is particularly useful if you want to dynamically change the content of the layer. For example, a restaurant might have a web page that uses a layer to describe the special meal of the day. Each morning, after the chef has decided what the special is going to be for the day, he or she quickly edits the file "special.htm" to describe the meal. The chef doesn't have to rewrite the entire page just to update the information about the special of the day. It can also be a very good idea to use external source as the content of a layer when you wish to provide alternative content for browsers that do not support layers. In that case, you can use the The Note, however, that if the layer contains elements that cannot be wrapped, such as images, that extend beyond the specified width, the actual width of the layer expands accordingly. If this parameter is not specified, the layer contents wrap at the right boundary of the enclosing layer. See Chapter 13, "Changing Wrapping Width Example," for an example of dynamically changing the wrapping width of a layer. The Note, however, that if the contents of the layer do not fit inside the specified height, the layer increases its height to include all its contents. The main purpose of the By default, the height is the minimum height that contains all the layer contents. The The value is a set of four numbers, each separated by a comma, and optionally enclosed in a string. If you omit the quotes, be sure not to have any white space between the four numbers. The numbers indicate the left value, the top value, the right value, and the bottom value in order. The left and right values are specified as pixels in from the left edge of the layer itself, while the top and bottom values are specified as pixels down from the top edge of the layer itself. Each of the four values are numbers of pixels. You can also specify the value as a set of two numbers, in which case the left and top values default to 0. For example: is equivalent to If the For an example of changing the clipping region of a layer, see Chapter 12, "Expanding Colored Squares Example.". The These parameters specify the z-order (stacking order) of layers. If you set one of these parameters, it overrides the default stacking order which is determined by placing new layers on top of all existing layers. Only one of the The The Similarly, the Currently all nested layers exist above their parent layer in the stacking order. The For an example of changing the stacking order or z order of layers, see Chapter 11, "Swimming Fish Example." The By default, a layer has the same visibility as its parent layer, that is, the value of the Remember that even if the visibility of a layer is set to If the visibility of a relatively positioned layer is For an example of making layers visible and invisible, see Chapter 10, "Fancy Flowers Farm Example." The By default, a layer is transparent -- layers below it show through the transparent areas of the layer's text and other HTML elements. If a layer is defined with the Netscape Navigator 4.0 also supports a This is really hard to explain in words, but is immediately obvious when you see the results. To see an illustration of this point, click on:<NOLAYER>
tag to enclose the content to be displayed on browsers that do not support layers, as illustrated in the section "The <NOLAYER> Tag."
WIDTH
<LAYER WIDTH=200>
<LAYER WIDTH="80%">
width:200px; /* CSS */
width:80%; /* CSS */
WIDTH
parameter determines the width of the layer at which the layer's contents wrap. The width can be expressed as an integer value, or as a percentage of the width of the containing layer.
HEIGHT
<LAYER HEIGHT=200>>
<LAYER HEIGHT = "50%">
height:200px; /* CSS */
height:50%; /* CSS
HEIGHT
parameter determines the initial height of the clipping region of the layer. The height can be expressed as an integer value, or as a percentage of the height of the containing layer (or the window for a top-level layer.)HEIGHT
parameter is to act as the reference height for children layers that specify their heights as percentages.
CLIP
<LAYER CLIP="20,20,50,100">
clip:rect(0,100,100,0); /* CSS */
CLIP
parameter determines the clipping rectangle of the layer, that is, it defines the boundaries of the visible area of the layer.CLIP="10,20"
CLIP="0,0,10,20"
CLIP
attribute is omitted, the clipping rectangle of a layer is determined by the values of WIDTH
, HEIGHT,
and the content of the layer. If neither of these values are given, by default, the clip left value of a layer is 0; clip top is 0; clip right is the wrapping width, and clip height is the height required to display all the contents.
Z-INDEX, ABOVE and BELOW
<LAYER Z-INDEX=3>
<LAYER ABOVE=layer1>
<LAYER BELOW=greenlayer>
z-index:3; /* css */
ABOVE
and BELOW
attributes are used with the <LAYER>
tag. There are no corresponding style properties.Z-INDEX
, ABOVE
, or BELOW
parameters can be used for a given layer. Z-INDEX
parameter allows a layer's z-order to be specified in terms of an integer. Layers with higher-numbered Z-INDEX
values are stacked above those with lower ones. Only positive Z-INDEX
values are allowed.ABOVE
attribute specifies the layer immediately on top of a newly created layer; that is, the new layer is created just below the layer specified by the ABOVE
attribute. (The ABOVE
and BELOW
attributes are not available in as style properties.)BELOW
attribute identifies the layer immediately beneath the newly created layer. For either attribute, the named layer must already exist. Forward references to other layers result in default layer creation behavior (as if the ABOVE
or BELOW
attribute had not appeared). Z-INDEX
, ABOVE
and BELOW
values are relative to sibling layers, that is, other layers that have the same parent layer.
VISIBILITY
<LAYER VISIBILITY=SHOW>
<LAYER VISIBILITY=HIDE>
<LAYER VISIBILITY=INHERIT>
visibility:show; /* css */
visibility:hide; /* css */
visibility:inherit; /* css */
VISIBILITY
parameter determines whether the layer is visible or not. A value of HIDE
hides the layer; SHOW
shows the layer; INHERIT
causes the layer to have the same visibility as its parent layer. For top level layers (that is, layers that are not nested inside other layers), a value of INHERIT
has the same effect as SHOW
since the body document is always visible.VISIBILITY
attribute is INHERIT
.SHOW
, you will only be able to see the layer if there are no other visible, opaque layers stacked on top of it.HIDE
, the layer contents are not shown, but the layer still takes up space in the document flow.
BGCOLOR and BACKGROUND-COLOR
<LAYER BGCOLOR="#00FF00">
<LAYER BGCOLOR="green">
background-color:green;
background-color:00FF00;
BGCOLOR
attribute and background-color
style property determine the solid background color of a block of HTML content, similar to the BGCOLOR
attribute of the <BODY>
tag. The background color is either the name of a standard color such as red
or an RGB value, such as #334455
(which has a red hexadecimal value of 33, a green hexadecimal value of 44 and a blue hexadecimal value of 55.) <LAYER>
tag, its background color is applied to the rectangular region occupied by the layer. If a layer is defined as a style, the background color is applied only to the actual content of the layer, not to the entire region of the layer. If the style has a border, the region enclosed by the border uses the background color, but this region is still limited to the region that contains content. If the style specifies width and height values that define a region larger than is needed to display the content, the background color will only be applied to the area inside the border, which will be drawn around the actual content. layer-background-color
CSS style property, which sets the background color of the entire layer, but this property is not approved by the W3C.bgtest.htm
The By default, a layer is transparent -- layers below it show through the transparent areas of layer's text and other HTML elements. Note that Netscape Navigator 4.0 also supports a If a layer is defined with the Netscape Navigator 4.0 also supports a To see an illustration of this point, click on:
BACKGROUND and BACKGROUND-IMAGE
<LAYER BACKGROUND="images/dogbg.gif">
background-image:url("images/dogbg.gif"); /* CSS */
BACKGROUND
attribute and background-image
style property indicate a tiled image to draw across the background of a block of HTML content. The value is the URL of an image. layer-background-image
CSS style property, which sets the background color of the entire block that uses the style, but this property is not approved by the W3C.<LAYER>
tag, the background image is applied to the rectangular region occupied by the layer. If a layer is defined as a style, the background image is applied to the region that contains the actual content of the layer. If the style specifies width and height values that define a region larger than is needed to display the content, the background image will only be applied to the area that encloses the actual content. layer-background-image
CSS style property, which draws the image across the entire layer, but this property is not approved by the W3C.bgimage.htm
These attributes only apply to the These are event handlers. Their values must be functions or inline JavaScript code. The For on example of using an These attributes only apply to the These are event handlers. Their values must be functions or inline JavaScript code. The This attribute only applies to the This is an event handler. Its value must be a function or inline JavaScript code. The For an example of setting the onLoad handler for a layer, see Chapter 11, "Swimming Fish Example" and Chapter 12, "Expanding Colored Squares Example.".
OnMouseOver, OnMouseOut
<LAYER>
tag.<LAYER OnMouseOver="highlight(); return false;">
<LAYER OnMouseOut="dehighlight(); return false;">
onMouseOver
handler is invoked when the mouse enters the layer, and the onMouseOut
handler is invoked when the mouse leaves the layer. onMouseOver
handler, see Chapter 12, "Expanding Colored Squares Example."
OnFocus, OnBlur
<LAYER>
tag.<LAYER OnFocus="function1(); return false;">
<LAYER OnBlur="function2(); return false;">
onFocus
handler is invoked the layer gets keyboard focus, and the onBlur
handler is invoked when the layer loses keyboard focus.
OnLoad
<LAYER>
tag.OnLoad="dosomething(); return false;"
onLoad
handler is invoked when the layer is loaded, regardless of whether the layer is visible or not.
If an HTML file that contains positioned blocks of HTML content is displayed in a browser that does not know how to position content, the content is displayed as if it was not positioned. If the file contains any scripts that require layers functionality, they will generate JavaScript errors if loaded into a browser that does not support positioning.
You can use the <NOLAYER>
and </NOLAYER>
tags to surround content that is ignored by Netscape Navigator 4. This enables you to provide alternative content that will be displayed by browsers that cannot position content. For example:
<LAYER SRC=layerContent.html></LAYER>
<NOLAYER>
This page would show some really cool things if you had
a browser that can position content.
</NOLAYER>
Layers can contain form elements, applets, and plug-ins, which are known as windowed elements. These elements are special in that they float to the top of all other layers, even if their containing layer is obscured.
When a windowed element is moved to the edge of its containing layer, it disappears as soon as one of its borders hits a border of the layer, instead of seeming to glide out of view as non-windowed elements would do. For form elements, it is the individual element that disappears on contact with the border of the layer, not the entire form.
Note however, that windowed elements do move and change visibility in accordance with their containing layer.
Forms cannot span layers. That is, you cannot have part of the form in one layer and another part in another layer.
Communicator introduces windowless plug-ins, which are plug-ins that do not pop to the top of the window and can be drawn below other items in the window. Windowless plug-ins are discussed in the Plug-in guide.
Here's the URL for the Plug-in Guide:
/library/documentation/communicator/plugin/index.htm
To link to Chapter 1, "Plug-in Basics," which contains a section called "Windowed and Windowless Plug-ins" see: /library/documentation/communicator/plugin/pg1bas.htm
To link to Chapter 4, "Drawing and Event Handling," which contains a section on general issues in writing windowless plug-ins, see: /library/documentation/communicator/plugin/pg4dr.htm
Last Updated: 08/07/97 15:21:59