- From: Lachlan Hunt <lachlan.hunt@lachy.id.au>
- Date: Tue, 01 Dec 2009 14:28:32 +0100
Philip J?genstedt wrote: > As currently speced, the proper usage of <figure> is: > > <figure> > <dd><img src="bunny.jpg" alt="A Bunny"></dd> > <dt>The Cutest Animal</dt> > </figure> > > Apart from all that has been said about legacy parsing, leaking style in > IE, etc I would (perhaps not be the first to) add: > > 1. It seems quite easy to confuse or mistype dd/dt. Without guessing how > often authors will get it wrong, I think everyone agrees that (all else > equal) a syntax which is harder to confuse/mistype is better. Yes, I expect we'll see a lot of authors get them reversed, using the dd for the caption if they want the caption below the content. This is likely to occur since existing authors have already learned that dt comes before dd when used within a dl, and because old habbits die hard, they're likely to repeat the pattern within figure. > 2. Only the caption needs to be marked up, the content is implicitly > everything else. While some content may need a wrapping element for > styling, e.g. <img> usually does not. > > 3. Aesthetics. (My eyes are bleeding, but I can't speak for anyone else's.) Some additional reasons why using dt/dd in figure is a bad solution: The simplest workaround presented so far to solve the styling issue in IE is basically to do this: <div class="figure"> <figure> <dd><img src="image" alt="..."></dd> <dt>Caption</dt> </figure> </div> And then rather than style the figure itself, give some style to the div because some styles don't work properly when applied to the figure. This effectively makes the figure element itself entirely useless, especially given that all browsers lack support for it. It would be far easier for authors to just stick with this entirely hack free alternative that doesn't use the new elements: <div class="figure"> <img src="image" alt="..."> <p class="caption">Caption</p> </div> At least until browsers actually implement support for <figure> and IE6/7's market share becomes negligible. It will take a couple of years for those events to occur, and there's no need to rush into using the new elements yet. > The main difficulty with coming up with something better seems to have > been finding a name for an element which isn't already taken. If that's > the only issue, why not just take some inspiration from <time pubdate> > and use an attribute instead? > > <figure> > <img src="bunny.jpg" alt="A Bunny"> > <p caption>The Cutest Animal</p> > </figure> I was the first one to suggest that on IRC a while ago, but I'm not convinced it's a good idea. Although it's certainly better than using dt/dd. See IRC logs here. http://krijnhoetmer.nl/irc-logs/whatwg/20090917#l-1525 http://krijnhoetmer.nl/irc-logs/whatwg/20090918#l-1133 The original idea for using the attribute was that it could apply to a wide range of elements, like p, div, etc. But that makes it difficult for browsers to provide sensible default styling for captions, since it requires carefully overriding existing defaults for so many other elements. To some extent, it even makes it difficult for authors to provide reasonable styles if they can't guarantee which elements content writers will choose for their caption. Imagine designing a CMS template with some default styles for figure and caption, the CSS in the template would have to deal with so many possible element choices just for the caption, it'll be difficult to get it right and test everything. Limiting the caption attribute to just the p element, or just div or something, might help, but I'd still expect authors to end up using it on other elements anyway. There are only 2 sensible options for element choices: <legend> or introducing a new element. Using dt/dd is *not* and was never a sensible choice for figure, and the idea must be dropped. Since Hixie is adamant that introducing a new element for the caption isn't going to happen, and I've yet to find a way to convince him otherwise, that leaves us with legend. Although legend has it's own styling issues in browsers, these will eventually be resolved in a couple of years. Therefore, the best solution is to revert the spec back to using legend for figure, but strongly discourage authors from using these new elements yet, until the implementation issues are resolved. -- Lachlan Hunt - Opera Software http://lachy.id.au/ http://www.opera.com/
Received on Tuesday, 1 December 2009 05:28:32 UTC