Frames and XHTML
I'm in the midst of a small redesign of an application's UI for a client. The previous (and current) design uses an <iframe> to display most of the content in the app (it's an e-learning app). The driving forces behind the re-design are to 1) make the UI fluid rather than fixed height/width, and 2) make the application work on Opera 6 on Linux.
The re-design began with them sending me some screenshots of proposed layouts, and I used that to formulate what you see today. Basically, what they (and I) was hoping to accomplish was a fixed header/footer height and a fluid center. I tried doing this with an iframe, but had inconsistence results. So I tried consulting the experts. No one seemed to have a solution - and it seems that a fixed header/footer, fluid center is not possible with XHTML. So I resorted to using frames, which is what you see now. The reason I'm writing this post is to express my frustration with frames and the current XHTML Standards. You basically start a framed page with a <frameset> right? Any of you that have worked with frames know that it's a headache to get framespacing correct between all the browsers you need to support. Throw Netscape 4 into the mix, and consistency is virtually impossible. The problem with a frameset in XHMTL is that there are no supporting attributes for eliminating a frameset's spacing or border. From looking at the XHTML DTD, you can see that our old friends frameborder (="0" needed for Mozilla) and border (="0" needed for Opera) are missing:
<!ATTLIST frameset %coreattrs; rows %MultiLengths; #IMPLIED cols %MultiLengths; #IMPLIED onload %Script; #IMPLIED onunload %Script; #IMPLIED >
So I ended up following Zeldman's advice and K10K's examples and adding these attributes in. Why? Because they work to achieve the results I want. It doesn't validate, but it does work, so I'm going with it. If anyone has any alternatives to achieve borderless frames with CSS, please let me know.
The cool part about this post is that I get to tell you that the device we're targeting with Opera 6/Linux is the FreePad - a type of Tablet PC, but more like a wireless browser. Looks cool, that's for sure - and it's possible I'll even get a demo machine to test the new layout on.