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.

Reply via email to