Previous discussion:
http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-November/037905.html

On Wed, Apr 30, 2014 at 6:01 AM, Anne van Kesteren <ann...@annevk.nl> wrote:

> >> <div hidden></div>
> >>
> >> Per spec, the div should be shown right? I imagine there is no way back
> on
> >> that?
>
> We could change the specification to use display-box instead. That might
> work.
>

It's too bad that display-box also has multiple uses--it doesn't only
display or hide the content, it has a third "contents" mode.  That means
the same problem would happen as soon as you set "display-box: contents" on
something--it would override [hidden].  What we really need is a CSS
property that only sets whether the element is visible or not and nothing
else, like "visible: false".  That way, the only way [hidden] gets
overridden is if you're actually setting the visibility style.

I assume it's too late to change the style [hidden] uses, though.  Lots of
pages do things like "d = elem.style.display; elem.style.display = "block";
width = elem.style.offsetWidth; elem.style.display = d;" to work around
offset* being 0 while hidden, and if [hidden] changes to some other style
(or to !important) that code will break.

I always just put [hidden] { display: none !important; } in my stylesheets
to work around this.  That sucks, since it makes [hidden] in pages and
scripts I write incompatible with everyone else, who may be writing scripts
that don't understand this (such as the above pattern), or may work around
it in some other way.

-- 
Glenn Maynard

Reply via email to