What are Iframes?
'Iframes' stand for inline frames1. I'm sure most of you remember (or still see) sites that seem to be broken into many windows. Before you could only create frames by basically drawing a line across the screen and splitting it into sliced parts. Now you can implant a frame (a whole other webpage) right into the middle of a website (in a box).
Why You Should Love Them
Iframes provide a way to present a lot of information in a limited space, and do it in a way that maintains a fixed width design. When you scroll a page with an iframe, the frame will scroll with the page, and you can even choose if the iframe scrolls or not. All normal frame properties and rules apply to iframes, making them familiar and relatively easy to use.
Why You Should Hate Them
Iframes constrict the most important part of any website (the information) into a limited space. Generally iframes are used in matter that make them inconvenient, with scrolling and additional user input to access everything the frame has to offer. If the iframe gives you links to change the location of what you're looking at in the frame, the results probably will not be linkable or bookmarkable. Iframes are kinda new and not supported in all the old browsers, cause hiccups, Netscape dry heaves and the dreaded poor-usability-induced vomiting. (Craig has been cleaning equally unpleasant dog-related body expulsions off the carpets here for a couple weeks now, ask him how fun that is to clean up.)
Furthermore, we program in XHTML 1.0 Strict (as you should be too), and iframes just aren't supported. To fix this you would need to switch to one of the other XHTMLs, and while that's better than doing things the old way, you're not going to get the same results you get with strict.
Why I Don't Like Iframes
There is rarely a use for iframes where they're actually required. Actually, I didn't think there was every a good use of them until recently when we built a new site for nCipher. A couple of their pages pull in stock information from another company's site. That company formatted the pages to fit our style, and we included them with iframes. The result was a good compromise between the three of us, and I think we're all happy.
The Spandex of Websites
Recently I was browsing the portfolio of SilverOrange, another web design company located on one of the many islands in Canada. I really love the simplicity of their designs, all strictly based around the principals of usability while trying to give their designs a dynamic yet not-overwhelming flair. I noticed that all of their site designs stretch to the entire width of my browser.
And then I maximized one of their sites.
A non-factual visualization of my experience.
Don't get me wrong, I could still use the site, but the usability was completely shot. I know this when I have to count down a column on one side of a table, then count down the other side to see what lines up with what (which I did).
The Great Compromiser
Henry Clay was born in 1777, was in both houses of congress and was big on the moderniaztion of America (or at least so currently says Wikipedia). Aside from founding the Whig Party and being ranked as one of the five greatest Senators in American history (yes, really, the committee was headed up by JFK), he was also known as the Great Compromiser.
While the issues at hand here are far less serious than those that Clay dealt with (and believe me, this isn't intended as a comparison of problems but a similarity in the solution), his ideas of compromise still make sense as the way to go. The compromise here: min-width and max-width.
CSS currently has attributes for minimum and maximum width, but unfortunately the browser that most of the world uses doesn't support it. These attributes allow you to set a minimum width of a div tag (let's say 780 to accommodate 800x600 resolutions), and set a maximum width of the same div tag (let's say to 1000 to accommodate up to 1024x768 resolutions). From here, any screens smaller than 800x600 will need to scroll horizontally, but if that's you it's really time for a new monitor. If your screen resolution is larger, the div expands to 1000 and then you'll see the body background on both sides of the site from there.
This allows for both stretchiness and a somewhat limited design to keep things presented in a nice and useable way, a move that Henry Clay would sure be proud of if he were alive today.
Digg, one of the sites we frequent around here, uses this technology. Take a look at the site in Firefox and then IE. Expand the window to as large as it goes and then shrink it down to a really small size. See the difference? Rumor has it that the latest public beta of IE7 (public beta 2) was actually nicely handling the minimum and maximum widths. Let's hope this makes the final browser and that that comes out sometime soon. (Because with Microsoft, you never know.)
Minimum and Maximum width are going to be the wave of the future, all we have to do is sit and wait for everyone to catch up.
In all seriousness, Henry Clay helped out with huge leaps forward in the slavery issues of the time. Although our nation still had to resort to a civil war to finish the deal, his compromises put it off for many years, while helping America grow with as little slavery as the southern states would then allow. When running for the American presidency, he was told not to take a stand against slavery, to which he replied, "I'd rather be right than be President." It turns out that he was right and lost the race for president five times (mostly by a small margin).
1 Edit: 'inline frames,' not 'internal frames', what the heck was I thinking.