Follow the bouncing ball with the CSS
http://www.cutcodedown.com/for_others/toddTemple/screen.css
First thing I have in every CSS file is a reset. Mine is medium sized, never needed more, and using less invariably bites you in the ass. MOST of the time using a reset like the one I do can actually result in LESS CSS overall.
body - I set bottom padding so #footer is spaced from the bottom of scrolling the same as it’s top distance from #contentWrapper… the text-align is as the comment says to center #pageWrapper in IE 5 (it’s one line of code, big deal). I set up the font with a serif font stack pretty much guaranteed to be present everywhere – might not be identical to what you were using but frankly, OH WELL. If you REALLY want that specific font you could always @font-face it, though welcome to blowing 30-80k on something trivial. Finally the background declaration should be no big surprise.
#pageWrapper - fix the width, center it… again, no surprises.
h1 - set it up to wrap floats which is how we’ll build the SMALL next to the A, and pad down the top to push it off the body background-image. I use padding instead of margin so as to avoid collapse headaches.
h1 a,
h1 small - these share a number of common properties including float, position:relative so we can absolute position our B tags inside them, a display:inline margin fix on floats, and the same height.
h1 a – and these are the unique values. margin-left to push it over, letter-spacing to space the letters apart for our images off appearance, and some pretty font/colors… oh, and turn the underlines off.
h1 a span – the display:block forces it to a new line, the fixed width prevents the border-top I apply from being too wide, naturally we center it with margins, and turn off the high letter spacing resulting in it being about the same width as the larger text above it.
h1 b – the bold tags in both the A and the SPAN share the absolute positioning values, height, and even background-image so put them together. The absolute positioning over the text shows the image instead of the text; a technique called “gilder-levin image replacement”. Unlike the method you were using this one works images off/css on.
h1 a b – this one’s only unique value is the width.
h1 small – padding the top to push the text down, a font declaration reasonably close to what you were using in the image, and of course the same (approximate) color.
h1 small span – the span just gets a different color.
h1 small b – this image replacement gets a nice big width and the background slid into position.
#mainMenu – clear the floats just in case, turn off bullets, and center the contents.
#mainMenu li – rather than dealing with the headaches formatting the LI can imbue, I choose to set them to display:inline which pretty much strips all the formatting quirks clear off them. Don’t even waste time trying to do anything extra with them.
#mainMenu a – setting these to inline-block lets us top/bottom pad these. I avoid declaring a height and instead use the 18px line-height and 14px top / 6px bottom padding to add up to the 38px of the background image. The side padding and letter-spacing is just to make it pretty…
The background-image I load on the anchor and then position so you can’t see it – this way you don’t have to wait for it to load on hover. Instead of having all those separate drawings of every button, just use the text and put the background behind it.
#mainMenu a:active,
#mainMenu a:focus,
#mainMenu a:hover,
#mainMenu .current – These all get a background-color for images off. To erase that background-color when hovered I made the background-image 256px wide, which to show we just change the alignment to “top center”.
#mainMenu .current – of course the current one also gets a different color.
This too is crafted so images off/CSS on the page still looks good.
#contentWrapper – The top padding is to make room for the borders.png image. Since we’re working fixed-width we can simply put both images side-by-side and use top/left alignment on this one and bottom-right on the other. The margin-bottom is to space #footer away from this wrapper. From there it’s just color and background. Rather than use transparent .png I use a black background and let the image erase the corners.
Content – as mentioned pad the bottom for the background image, and then the image itself.
.plate – a plate image is pretty much what you have there, I usually have a .plate class with these values for that very reason. (I usually also have ‘leadingPlate’ which is a left float and ‘trailingPlate’ which is a right float)
#footer – again float wrapping behavior due to its’ children, some text formatting (regrettably using PX fonts since we’re on a fixed height background image), and colors/background. I did NOT try to use the sliding doors effect as you did since it’s a fixed width layout.
#footer div – float it, pad it. Pretty simple. Again, no heights so we don’t have the legacy IE height+padding bugs.
#footer .facebook – float it, prevent margin doubling in IE, fix the width, use text-indent instead of padding to push the text off the F part of the image, some top/bottom padding to add up to our desired height, and of course the image itself. This too gets a background-color on it so images off there’s still a hover effect and we get rid of having the text in the image.
#footer .facebook:active,
#footer .facebook:focus,
#footer .facebook:hover – simple color changes and background slide.
… and that’s it. Pretty simple… and half as much CSS to do the same job.
Hope all this helps, or at least you are able to come away with some handy tidbits.