- From: Maciej Stachowiak <mjs@apple.com>
- Date: Sun, 16 Sep 2007 01:28:03 -0700
- To: "public-html@w3.org WG" <public-html@w3.org>
1) I propose using <label> for the element that holds the caption of
an image instead of <legend>. I believe this would allow for easier
graceful degradation. They seem to be about equally semantically close
to the word "caption". Current browsers handle <legend> that's outside
a fieldset oddly:
- Firefox and Safari drop the element entirely from the DOM when it
appears outside a <fieldset>.
- Opera puts the <legend> in the DOM as a void element, and inserts
its contents afterwards.
- IE adds a void <legend> element and a void </legend> element before
and after the text.
<label> doesn't have any of these problems.
The following styling (mostly done by Lachlan Hunt) gives pretty good
default styling in Firefox, Safari and Opera. Getting any kind of
decent result with <legend> requires nesting a <span> inside the
<legend>, due to the above issues. It doesn't work in IE, because IE
doesn't support CSS tables and because of its handling of unknown
elements (cited elsewhere).
figure { display: table; }
figure label { display: table-caption; text-align: center; caption-
side: bottom; }
figure label:first-child { caption-side: top; }
http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%0A%3Cstyle%3E%0Afigure%20%7B%20display%3A%20table%3B%20%7D%0Afigure%20label%20%7B%20display%3A%20table-caption%3B%20text-align%3A%20center%3B%20caption-side%3A%20bottom%3B%20%7D%0Afigure%20label%3Afirst-child%20%7B%20caption-side%3A%20top%3B%20%7D%0A%3C%2Fstyle%3E%0A%0A%3Cfigure%3E%0A%3Cimg%20src%3Dimage%3E%0A%3Clabel%3ECaption%3C%2Flabel%3E%0A%3C%2Ffigure%3E%0A%0A
2) <details> has the same issue (though it's trickier to handle that
one in pure CSS).
3) Lachlan Hunt points out two possible problems with using <label>:
3.a) It may interfere with assistive technology to have labels
that don't contain a form control and are not associated with a form
control via "for". Neither of us was sure if this would be a real
problem. If anyone could test this, it would be helpful.
3.b) Authors may have existing styling for label for form control
purposes that's not specifically scoped via classes, ids or descendant
rules. In this case, they would have to undo it for figure labels. The
same issue is possible in theory for <legend>, but the use of
<fieldset> seems to be relatively rare as it does not fit well with
modern visual/interaction design.
I think the problems with using <legend> are more serious than either
of the above problems.
4) Another alternative would be using a new unknown element. Whipping
out my thesaurus, I see <rubric>, <inscription>. Another possibility
is something like <figcaption> (to avoid the problems <caption> would
cause for figures inside tables), but that wouldn't be a good fit for
<details>.
This would solve the problems in Safari, Opera and Firefox. But it
would not help in IE (which seems like it would require script-based
assistance in any case).
Regards,
Maciej
Received on Sunday, 16 September 2007 08:28:23 UTC