Easy-to-follow video tutorials help you learn software, creative, and business skills.Become a member
Frames in XHTML and HTML are a way of displaying multiple pages within one page. In other words, this is a frames document and it has different areas and each of these areas has a separate XHTML page being displayed in it. When I click on the links here in the menu side, on Info, it shows me the information page here in the big open part of the frames and then Contact, it goes in this frame here, in the big frame. Each of these that I click on is going to show up there in that frame.
If I open one of them by itself, in other words, here is the Info here, company information goes here. If I right-click on this link and say Open Link in New Tab, then it will show that Info page in a tab all by itself and that's what it is here. That's a normal HTML file. So, if we look at this in the Editor, here's our frames document and I brought up the nav document here too. This is the navigation document on the left-hand side. You can see it's a normal HTML file and it's just got that unordered list with all of the links in it, just like you saw there in the browser.
So that's this document here. It's just a normal HTML file or rather an XHTML file in this case that is simply displayed in this frame. So, let's look at how this works in the frames document. This is frames document and you'll notice that it uses a different DOCTYPE, a different DTD, a Document Type Definition. It uses the frameset one. So the frameset DOCTYPE has these frameset tags available. So framesets have frameset tag and it has the frame tag. Now the frameset tag is a container, just like any other container, you see it's got the begin tag here and it's got end tag there.
The frame tag is not a container, so it has the shorthand here for not being a container and not having a separate end tag. The frameset contains frames and it can also contain other framesets. So this frameset here is contained within this frameset here. The frameset can also contain a no frames part, so here is noframes and there is the end tag for noframes. It has a body and a normal XHTML document within it. That gets displayed if it's displayed on a device or on a browser that does not support frames.
So that noframes part if what would display if the browser looking at the page does not support frames. So here is the frameset tag and you'll notice that it has columns attribute, cols. It's short for columns. So that's for vertical divisions, as you can see the comment here. This is an XHTML comment. I'm just going to cover this real quickly here. XHTML comments, just like HTML comments, they have an opening angle bracket and an exclamation point and two dashes and a space.
That all delimits the beginning of the comment. The space is required; you have to have the space. And then at the end of the comment, it has a space and two dashes and a closing angle bracket. That makes a comment. This does not get interpreted by the browser. It doesn't get displayed on the page. It's just a comment so that we can help to understand the code. So this comment says cols for vertical divisions. I put these things in to help myself remember, as much as anybody else, because I don't use frames very often, so I want to remember how they work.
So here's the frameset for the columns and it has a number here, 130,*. We'll get back to that in a moment. Within this frameset, there is a frame that has that navigation on the left-hand side that we saw in the browser. Then there is another frameset. This one says rows, this is for horizontal division. It's got a number here and an asterisk. So, this frameset is for rows. So looking at it on the browser, the first frameset is the column, so it has this one and it has this one, which is another frameset. So, it has this frame and it has this frameset that's divided horizontally.
The second frameset has the row, so it has this horizontal one here and that horizontal one there. Going back to the document, let's look at those numbers and see what those mean. I bet you can figure out by this time. 130 is the number of pixels for the first division and the frameset and then the asterisk means use up the rest of the space, divide it equally amongst whatever frames are left. So in this case we just have two, we have the one, which is the nav.html, and so that has that menu in it and that is 130 pixels wide and it's vertical.
Then the next one is this frameset, which takes up the rest of the space. So, if we look at it again in the browser, you see here is the 130 pixels and there is the nav.html. If I right-click on that and say Show Only This Frame or Open Frame in New Tab, there it is. There is the Navigation menu and that's what's there in this column all by itself, 130 pixels wide. Then the rest of the space is divided up by this other frameset. Now going back to the XHTML, here is the frameset on the right and it says rows, 75 pixels and then an asterisk.
So, the first document is going to be 75 pixels high at the top and then the next one is going to take up the rest of the space. So we'll see here in the browser. This one here is the 75 pixels at the top and this one is taking up the rest of the space. So that's how the frames work. The frameset document sets up the space and then it specifies where all of these documents come from. So, looking again at the HTML, we have a frame here with source=content/nav.html and name=nav and then a source here for this one, it says titlebar.
This was the one at the top of the rows and source here for default content at the bottom of the rows. Now, let's take a quick look at this nav.html and this is one other feature that you need to know about frames. And notice each of these links in here, these are normal anchor tags, a href=info.html target=content. This is an attribute we haven't seen before. target=content. What this means is that this link when it's clicked on will be displayed in the frame that's named content.
We look back over here at the example. We see that we have a frame that's named content. It has name=content. This one is name=title bar. This one is name=nav. This one is name=content. So when those links are clicked on, we can get nav.html again, they will show up in the content frame. If we look at this again, the content frame is the bottom frame. I have a comment there. Remember, frameset rows = 75, *. So the first one is 75 pixels and the next one takes up the rest of the space.
So if we look at the browser, we see that this is the 75-pixel one and this is the rest-of-the-space one. So when we click on these links, they're going to show up in this frame here that's named content and that's where they show up, so that's how that works. All right? So reviewing once more, it's really very simple. We have an outer frameset and that frameset has two spaces in it. It has a frame and I have another frameset. The inner frameset has two spaces and these are horizontal; the outer ones are vertical.
The outer one is vertical because it says columns and the inner one is horizontal because it says rows. Then each of these, we have-- this one is named title bar and that takes up 75 pixels. This one is named content and that takes up the rest of the space. Then the navigation file, which is in the left frame, that targets the content frame for each of the links using the target attribute. So see, that's how it works. That is, in a nutshell, how frames work.
Get unlimited access to all courses for just $25/month.Become a member
61 Video lessons · 105345 Viewers
56 Video lessons · 117074 Viewers
71 Video lessons · 86292 Viewers
131 Video lessons · 41239 Viewers
Access exercise files from a button right under the course name.
Search within course videos and transcripts, and jump right to the results.
Remove icons showing you already watched videos if you want to start over.
Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.
Click on text in the transcript to jump to that spot in the video. As the video plays, the relevant spot in the transcript will be highlighted.