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.