Hello dear readers! welcome back to another section of my tutorial on Html. In this tutorial guide, am going to be discussing about Html frames.
Html frames are used in dividing your browser window into different sections where each section can load a seperate Html document. A collection of various frames in the browser window is known as a frameset.
Disadvantages Of Frames
There are few disadvantages with using frames, so take note that it's never recommended to make use of frames in your webpages:
Some smaller devices can't cope with frames often because their screen is not big enough to divide up.
Sometimes your webpage displays differently on different computers due to different resolutions of the computers.
The browser back button may not work as the user hopes. And then lastly there are still few browsers that do not support frame tech.
RECOMMENDED: Html Image Links
Creating Frame
In order to use a frame on a web page we make use of <frameset> tag instead of the <body> tag. The <frameset> tag defines how to divide the window into frames. The rows attribute of <frameset> tag defines the horizontal frames and cols attribute defines the vertical frames. Each frame is indicated by <frame> tag and it defines which Html document shall open into frames.
Example
Follow the example below to create three horizontal frames
<!DOCTYPE html>
<html>
<head>
<title>HTML Frames</title>
</head>
<framset rows="15%,90%,15%">
<frame name="top" src="/html/top_frame.html"/>
<frame name="main" src="/html/main_frame.html"/>
<frame name="bottom" src="/html/bottom_frame.html"/>
<noframes>
<body>
Your browser does not support frames
</body>
</noframes>
</framset>
</html>
<html>
<head>
<title>HTML Frames</title>
</head>
<framset rows="15%,90%,15%">
<frame name="top" src="/html/top_frame.html"/>
<frame name="main" src="/html/main_frame.html"/>
<frame name="bottom" src="/html/bottom_frame.html"/>
<noframes>
<body>
Your browser does not support frames
</body>
</noframes>
</framset>
</html>
You can try the above out to see how it looks like on your browser
Now lets take a look at another example where we replaced rows attribute by cols and changed their width. In this case all three frames will be created verticaly:
Example
<!DOCTYPE html>
<html>
<head>
<title>HTML Frames</title>
</head>
<framset cols="20%,60%,20%">
<frame name="left" src="/html/left_frame.html"/>
<frame name="center" src="/html/center_frame.html"/>
<frame name="right" src="/html/right_frame.html"/>
<noframes>
<body>
Your browser does not support frames
</body>
</noframes>
</framset>
</html>
<html>
<head>
<title>HTML Frames</title>
</head>
<framset cols="20%,60%,20%">
<frame name="left" src="/html/left_frame.html"/>
<frame name="center" src="/html/center_frame.html"/>
<frame name="right" src="/html/right_frame.html"/>
<noframes>
<body>
Your browser does not support frames
</body>
</noframes>
</framset>
</html>
Feel free to try the above code out using your text editor for a better understanding. You can also drop your questions via the comment box below.
RECOMMENDED POST: Grouping Content
The <frameset> Tag Attribute
The following are the important sets of attritube of <frameset> tag:
Sr.No | Attribute & Description |
---|---|
1 |
cols
Specifies how many columns are contained in the frameset and the size of each column. You can specify the width of each column in one of the four ways −
Absolute values in pixels. For example, to create three vertical frames, use cols = "100, 500, 100".
A percentage of the browser window. For example, to create three vertical frames, use cols = "10%, 80%, 10%".
Using a wildcard symbol. For example, to create three vertical frames, use cols = "10%, *, 10%". In this case wildcard takes remainder of the window.
As relative widths of the browser window. For example, to create three vertical frames, use cols = "3*, 2*, 1*". This is an alternative to percentages. You can use relative widths of the browser window. Here the window is divided into sixths: the first column takes up half of the window, the second takes one third, and the third takes one sixth.
|
2 |
rows
This attribute works just like the cols attribute and takes the same values, but it is used to specify the rows in the frameset. For example, to create two horizontal frames, use rows = "10%, 90%". You can specify the height of each row in the same way as explained above for columns.
|
3 |
border
This attribute specifies the width of the border of each frame in pixels. For example, border = "5". A value of zero means no border.
|
4 |
frameborder
This attribute specifies whether a three-dimensional border should be displayed between frames. This attribute takes value either 1 (yes) or 0 (no). For example frameborder = "0" specifies no border.
|
5 |
framespacing
This attribute specifies the amount of space between frames in a frameset. This can take any integer value. For example framespacing = "10" means there should be 10 pixels spacing between each frames.
|
The <frame> Tag Attibute
The following are the important attributes of <frame> tag available in HTML:
Sr.No | Attribute & Description |
---|---|
1 |
src
This attribute is used to give the file name that should be loaded in the frame. Its value can be any URL. For example, src = "/html/top_frame.htm" will load an HTML file available in html directory.
|
2 |
name
This attribute allows you to give a name to a frame. It is used to indicate which frame a document should be loaded into. This is especially important when you want to create links in one frame that load pages into an another frame, in which case the second frame needs a name to identify itself as the target of the link.
|
3 |
frameborder
This attribute specifies whether or not the borders of that frame are shown; it overrides the value given in the frameborder attribute on the <frameset> tag if one is given, and this can take values either 1 (yes) or 0 (no).
|
4 |
marginwidth
This attribute allows you to specify the width of the space between the left and right of the frame's borders and the frame's content. The value is given in pixels. For example marginwidth = "10".
|
5 |
marginheight
This attribute allows you to specify the height of the space between the top and bottom of the frame's borders and its contents. The value is given in pixels. For example marginheight = "10".
|
6 |
noresize
By default, you can resize any frame by clicking and dragging on the borders of a frame. The noresize attribute prevents a user from being able to resize the frame. For example noresize = "noresize".
|
7 |
scrolling
This attribute controls the appearance of the scrollbars that appear on the frame. This takes values either "yes", "no" or "auto". For example scrolling = "no" means it should not have scroll bars.
|
8 |
longdesc
This attribute allows you to provide a link to another page containing a long description of the contents of the frame. For example longdesc = "framedescription.htm"
|
Browser Support for Frames
If a user is using any old browser, that does not support frames then a <noframes> element should be displayed to the user.
A <body> element must be placed inside the <noframes> element because the <frameset> element is supposed to replace the <body> element, but if a browser does not understand <frameset> element then it should understsnd what is inside the <body> element that is contained in <noframes> element.
You can put some polite message for your user having old browsers. For example, sorry!! your browser does not support frames.
RECOMMENDED: Html Images
Frame's Name and Target Attribute
One of the most popular uses of frames is to place navigation bars in one frame and then load main pages into a seperate frame.
Example
<!DOCTYPE html>
<html>
<head>
<title>HTML Target Frames</title>
</head>
<framset cols="200, *">
<frame src="/html/menu.html" name="menu_page"/>
<frame src="/html/main.html" name="main_page"/>
<noframes>
<body>
Your browser does not support frames
</body>
</noframes>
</framset>
</html>
<html>
<head>
<title>HTML Target Frames</title>
</head>
<framset cols="200, *">
<frame src="/html/menu.html" name="menu_page"/>
<frame src="/html/main.html" name="main_page"/>
<noframes>
<body>
Your browser does not support frames
</body>
</noframes>
</framset>
</html>
In the above example, we have created two columns to fill with two frames. The first frame is 200 pixels wide and will contain the navigation menu bar implemented by menu.html file. The second column fills in remaining space and will contain the main part of the page and it is implemented by main.html file. For all the three links available in menu bar, we have mentioned target frame as main_page, so when you click any of the links in menu bar, available link will open in main page
The target attribute can also take one of the following values:
Sr.No | Option & Description |
---|---|
1 |
_self
Loads the page into the current frame.
|
2 |
_blank
Loads a page into a new browser window. Opening a new window.
|
3 |
_parent
Loads the page into the parent window, which in the case of a single frameset is the main browser window.
|
4 |
_top
Loads the page into the browser window, replacing any current frames.
|
5 |
targetframe
Loads the page into a named targetframe.
|
Alright guys! This is where we are rounding up for this tutorial post. In my next tutorial, we are going to be studying about Html Iframes
Feel free to ask your questions where necessary and i will attend to them as soon as possible. If this tutorial was helpful to you, you can use the share button to share this tutorial.
Follow us on our various social media platforms to stay updated with our latest tutorials. You can also subscribe to our newsletter in order to get our tutorials delivered directly to your emails.
Thanks for reading and bye for now.
Feel free to ask your questions where necessary and i will attend to them as soon as possible. If this tutorial was helpful to you, you can use the share button to share this tutorial.
Follow us on our various social media platforms to stay updated with our latest tutorials. You can also subscribe to our newsletter in order to get our tutorials delivered directly to your emails.
Thanks for reading and bye for now.