Thanks. Yes, I'm thinking it might have something to do with cells in tables needing to accommodate whatever is in them.
As for the elaborate markup, it's because I'm trying to give my old, tired content manager a more flexible design interface.
In the new design, you can have up to nine rows of elements, and within each row, you can have up to nine columns. Each column is its own table... There need be no correlation between column widths from one row to the next.
And to deliver one last layer of flexibility, each cell can be divided into three. Designing the page is then a simple process of telling the CMS what data or sets of data you want where.
I tried using floating divs, but you can't apply a height to an in-line element so that didn't work. And because you can't apply a height, you can't control the verticle alignment of the content (which you can do in a div table. I also considered just allowing the user to place div containers wherever they liked, but decided that wouldn't work with dynamically generated content.
Thanks again. If you have any more thoughts or suggestions, please let me know