Basic Page Structure: Figure 1 - The Intended Design
Basic Page Structure: Figure 1 - The Intended Design
For this tutorial, we're targeting a layout that has three columns of content with spaces at the top
and bottom for a header and footer. The page will be a fixed width and will also be centered in
the browser's display area (Figure 1).
Attachments:
We'll begin with an XHTML page structure in its most simple form. In the <head> of our document, we'll
point to an external CSS file.
<html>
<head>
<title>My Website</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
</body>
</html>
Now, within our "page_container", we'll add containers for the specific content areas that we
mentioned before. Again, we'll identify each uniquely.
<body>
<div id="page_container">
<div id="header"></div>
<div id="left_column"></div>
<div id="center_column"></div>
<div id="right_column"></div>
<div id="footer"></div>
</div>
</body>
At this point, if we were to render this document, we would not be able to see anything. Let's add some
dummy content so that we can see what's happening. We'll use a typical scheme for structuring
information including titles, sub-titles, paragraphs and a menu.
<body>
<div id="page_container">
<div id="header">
<h1>My Web Site</h1>
</div>
<div id="left_column">
<ul>
<li><a href="#">Menu 1</a></li>
<li><a href="#">Menu 2</a></li>
<li><a href="#">Menu 3</a></li>
</ul>
</div>
<div id="center_column">
<h2>My Document</h2>
<p>Vivamus elementum ligula gravida neque. Cras adipiscing ligula non turpis. Sed cursus
scelerisque libero. Sed at arcu. Vestibulum metus. Class aptent taciti sociosqu ad litora torquent
per conubia nostra, per inceptos hymenaeos. Phasellus id turpis. Sed purus. Integer eget ligula
elementum felis aliquet rhoncus. Morbi augue.</p>
</div>
<div id="right_column">
<h3>Sidebar</h3>
<p>Vivamus non urna eget nisi placerat vehicula. Vivamus semper molestie lacus. Proin a
tellus et massa placerat ultricies. Curabitur viverra convallis felis.</p>
</div>
<div id="footer">
<p>Copyright Information</p>
</div>
</div>
</body>
With the HTML and CSS in place, our page should render as shown in Figure 2. Notice that our document
makes sense "semantically", similar to a document printed on paper. The web site has a title, there is a
menu/table-of-contents for the site, the page we're viewing within the site has a title, and there is a
clear heirarchy/structure for ancillary and tertiary information. The structure of this arrangement should
always be based on the needs of the site and/or page that's being created.
#page_container{width:760px;margin:0 auto;}
Now we get into the crux of creating a "float" scheme. For each <div> that we are going to use as a
column, we'll add two definitions in our CSS, a width and a float.
Notice that the sum of the widths of these three elements is equal to the width of the #page_container
element.
#left_column{width:180px;float:left;background:#CCC;}
#center_column{width:400px;float:left;background:#ECECEC;}
#right_column{width:180px;float:left;background:#CCC;}
When we added these definitions, we altered the postions and widths of the columnar elements in the
render flow. To return to the normal render flow within the parent container, we'll need to "clear" the
next element from the effects of the "float".
#footer{clear:both;background:#999;}
Our three columns now line up from left to right and the longest column, in this case the right_column,
pushes the footer down the page, within the parent container (Figure 3).