CSS fix for bad layout alignment in Internet Explorer
The new fixed width theme for this blog was giving me problems with Internet Explorer. I had remembered that IE 6 and previous versions were finicky about margins. Instead of computing the exact margin size from the edge of the previous <div> element, the margin is calculated from the body's edge. This led to a weird problem where the width of the entire layout was shifted a lot more to the right than I intended.
I had used margin-left: 60px; in the CSS of the main layout <div> tags: the header, the content and the footer ids. And also used margin-left to create spaces to the left of the inside content element and the sidebar.
Here's how I fixed the bug to make it pixel correct in Internet Explorer.
- Removed the
margin-leftfor each of the main CSS elements (the header, the content and the footer) and instead gave the<body>element amargin-leftattribute with the same width to get the same result. The content block is shifted to the right by 60 pixels and doesn't stick to the left edge of the browser. - Replaced the inner
marginattributes (for the inside content block as well as for the sidebar block) with thepaddingattribute to get the same gap.
That's it. The theme is now compatible with IE as well. I suspect that IE 6 and below have problems with the margin CSS attribute and so it makes some bizzare layout decisions when rendering the <div> blocks.
Here are the explanatory screen shots:
Before the fix:

After the fix:

The above fix should be applicable for CSS layout problems of this nature with IE while ensuring that other browsers also render correctly. There are other CSS rendering issues with Internet Explorer, but that's another story altogether 
10 comments
Ain't I generous? :razz:
Great job on the fix, by the way. I too am going to have to set up an IE hack this weekend so that the transparent PNG on MiraGroupware.org will display properly on IE6
I'm looking forward to seeing the redesigned version of Hari's Reviews
It's looking great. Good job!