
One of the keys steps in the adoption of Web standards ahs been the abandonment of tables as a means of laying out pages. Tables were never meant to be used in this way, they were intended to be used for laying out grids of data, in a similar manner to an Excel spreadsheet. However, before the development of CSS, tables were used to create a page grid into which elements could be organized into columns. This meant adding nasty presentational hacks, such as spacer gifs, line breaks, and non-breaking spaces, into the markup to achieve the desired layout. With CSS, you can position XHTML elements with great accuracy without adding presentational elements into your markup.
Yow well you succeed with these techniques depends on how well you understand the box model, the position property, and the display property. The box model describes the positioning controls that exist for every element in your markup. The position property defines the positional relationship between these elements on the page. The display property determines whether elements stack or si side-by-side, or even display on the page at all.