spacer

Color, Margin and Control

 
Alright then, so far we've learned how to make basic and advanced frame layouts, how to make hyperlinks in frames and how to adjust the border widths in frames. Now let's round out our frame rendering skills by learning how to add some color and how to tweak some of the user controls.

We'll start with color. (All the examples below will be a modification of the advanced frame layout discussed in more detail on a previous page.)


Background Color


Rendering the background color of each frame in your frame layout is a no-brainer. To do this, you have only to adjust the background color of the frame source document loaded into the frame. For more information, see Page Color and Background.

Here's our advanced frame layout using a background color for the header and site menu frames.

Here's the same except with no borders. As you can see, this is already a vast improvement on the default appearance of the advanced frame layout.


Frame Border Color


You can adjust the color of the borders in your frame layout by using the bordercolor attribute in either the <frameset> or <frame> start tags. When used in the <frameset> tag, bordercolor affects the borders of all frames in that particular frameset. When used in the <frame> tag, bordercolor affects only the borders in that particular frame. The value can be any valid color expression.

Let's take the previous example and modify the source code so that it will display a 10 pixel black border in the top frame only:


<html>

<head>
<title>HTML Frames - An Advanced Frame Layout</title>
</head>

<frameset rows="20%,80%" framespacing="10" border="10">

<frame src="headercolor.htm" bordercolor="black">

<frameset cols="25%,75%" frameborder="no">
<frame src="menucolor.htm" name="menu">
<frame src="chapter1.htm" name="content">
</frameset>>

</frameset>

</html>



Here's what it looks like.

NOTES:

  • Since the frameborder attribute is omitted in the primary <frameset> tag then the default is frameborder="yes" (all frame borders are rendered). The framespacing="10" attribute/value pair renders a 10 pixel border in Internet Explorer and Opera while the border="10" attribute/value pair renders a 10 pixel border in Gecko-based browsers.
  • The bordercolor="black" in the first <frame> tag renders the top frame row border black in Internet Explorer and Gecko-based browsers (bordercolor is not supported in Opera).
  • The frameborder="no" attribute/value pair in the nested <frameset> tag turns off all frame borders in the bottom frame row (which is split into two columns).

Setting Margins


You can set the margins in each frame by using the marginwidth and marginheight attributes in your <frame> tags. The marginwidth attribute will set the amount of white space to be displayed on the left and right side of your frame's contents while the marginheight attribute sets the amount of white space to be displayed on the top and bottom. The value is a number specifying the width or height in pixels.

We'll build upon our previous example by setting all margins of the content frame. The top and bottom margins will be set to 30 pixels while the left and right margins will be set to 50 pixels.

Here's the source code:


<html>

<head>
<title>HTML Frames - An Advanced Frame Layout</title>
</head>

<frameset rows="20%,80%" framespacing="10" border="10">

<frame src="headercolor.htm" bordercolor="black">

<frameset cols="25%,75%" frameborder="no">
<frame src="menucolor.htm" name="menu">
<frame src="chapter1.htm" name="content"
   marginheight="30" marginwidth="50">
</frameset>>

</frameset>

</html>



Here's what it looks like.


Setting User Controls


There are two user controls that you can turn on and off by using certain attributes in your <frame> tags. These are detailed in the following:
  • noresize ~ The default setting in HTML frames permits the user to resize any frame by hovering the mouse pointer over the frame border and then clicking-and-dragging. Inserting the noresize attribute in any <frame> tag will disable resizing in that frame.
  • scrolling="yes|no|auto|" ~ Frames automatically display horizontal or vertical scrollbars whenever the frame's content outsizes the allotted dimensions of that particular frame. If the frame's content fits within the allotted dimensions, however, then no scrollbars are displayed. This is the default setting for frames and is the same as using the scrolling="auto" attribute/value pair. If you wish to always display scrollbars in a particular frame then use scrolling="yes". If you wish to always hide scrollbars in a particular frame then use scrolling="no".

*   *   *


By now you have enough information to create a full-blown framed website but before you launch it, you should be well aware of some of the common problems when using frames...