On 04/11/2011 03:40 PM, Tomasz Jamroszczak wrote:
I've got another proposal for making <summary> and <details> easier to implement and - what's more important - easier to understand and thus easier to use. Instead of making <summary> inside <details> working as <legend> inside <fieldset>, we can throw away the <details> tag and make <summary> work like <label> element with form element. There's no need for "open" attribute, instead already existing "hidden" attribute can be used on any HTML element. Clicking on <summary> adds or removes "hidden" attribute from element with given id. Here's default UA style: summary { display: list-item; list-style-type: -o-disclosure-closed; } [hidden] { display: none; } Here's example HTML: <summary for="detailsId">This is summary. Click to show/close details.</summary> <div id="detailsId" hidden>...</div>
That seems much harder for authors. In particular having to maintain the id references would be harder, not just for copy-paste. That sort of structure should only be used when it is really needed for the extra flexibility, but in this case is is clearly not; the possibility of having multiple elements between the disclosure element and the thing it discloses seems unnecessary.
I also imagine that in this case the author would typically wrap the whole structure in an extra <div> to get the grouping they want. They would then style the element in such a way as to reproduce something like the default styling proposed for <details>. So that part would shift complexity from implementors to authors, which is bad.
Pros: 1. Simple to understand by web page authors - its representation and semantics play well together.
fwiw I find this much harder to understand; it depends on lots of low level mechanics rather than on a simple declaration.