IE and modern browsers
michaelrjohnson said:
Just because sites are still laid out using tables doesn't mean it's the right thing to do. Tables were never intended to do positioning of elements other than rows and columns of type.
I'd like to add that browsers don't render tables as quickly as a layout that is positioned with CSS. Tables are harder than CSS, the code is harder to maintain, and they aren't rendered as fast as CSS. The only reason for using tables for positioning is ignorance of CSS, really.
Use tables only for tabular information.
michaeljohnson said:
IE for PC or Mac is not considered a modern browser.
IE is about five years behind in terms of supporting standards, so it is quite right to say that it is not a modern browser. That may change, however. Microsoft's Visual Studio 2005 suite does XHTML 1.1 by default. So that may indicate better standards support in IE 7 which is due out about the same time. I speculate that users will adopt IE 7 as fast as they did previous versions, which means the majority of IE users will be at version 7 within a year or so.
Meanwhile, there are three main problems with IE and CSS, and you can easily fix two of them.
The first problem is that IE does not support position:fixed. The second is that IE does not support the :hover pseudo class with tags other than the anchor tag, and the third is that the previous version of IE got the box model wrong, so that padding and borders come out differently than on other browsers.
1. There is no cure for the first problem. You have to code around position:fixed, using a technique like I suggested earlier (specify the element with position:absolute, then respecify it with position:fixed using the child operator.)
2. You can cure the second problem by adding a behavior statement to your style sheet that implements an HTC file that makes IE support the :hover pseudo class on all elements. The technique is very simple, you can learn the technique and get the HTC file from the book "More Eric Meyer on CSS," by, well, Eric Meyer. The behavior statement is not standard CSS, but it fixes IE and other browsers ignore it, so why not.
3. The third problem stems from the fact that Microsoft misunderstood the box model in (Windows) IE 5. They fixed it in IE 6. IE 6 has a quirks mode that emulates the legacy behavior and a standards mode that gets the box model right. If you write your code with a valid doctype on the first line of the file, you will be in standards mode and the borders and padding will render the same as in other browsers. That means no linebreaks before the doctype.
If you implement the HTC file and code so that your page is rendered in standards mode, both simple to do, you shouldn't have much trouble getting things to look the same in IE as in other browsers.