[whatwg] [hidden] attribute should not allow overrides via css

2014-11-05 Thread Bruno Racineux
Those two lines from spec [1] are in conflict:

Because this attribute is typically implemented using CSS, it's also
possible to override it using CSS

if something is marked hidden, it is hidden from all presentations

The latter is not true as currently implemented.
The former allows a css enabled styled presentation to display a hidden
element,
while browsing with *styles disabled* with have the element hidden (not
displayed)
due to the default browser stylesheet making it so.

Technically it is therefore *not* hidden form all presentations and
breaks the hidden = aria-hidden accessibility assumptions. I find this
conflicting.

And allowing a css override, breaks my use case:

Say, I have a link: a class=email hiddenEmail/a . And I only want this
link to
render dynamically and conditionally as a mailto: href with a
'display:block' style.
I am unable to pre-style my links with a 'display:block', because it cancels
'hidden',
which makes 'hidden' useless to me here if it wasn't for a *[hidden] {
display: none; }
at the end of my stylesheet.

I strongly suggest that hidden be made a 'display: none !important' instead
to remedy this confusion.

[1] https://html.spec.whatwg.org/#the-hidden-attribute




Re: [whatwg] [hidden] attribute should not allow overrides via css

2014-11-05 Thread Tab Atkins Jr.
On Wed, Nov 5, 2014 at 5:07 PM, Bruno Racineux br...@hexanet.net wrote:
 Those two lines from spec [1] are in conflict:

 Because this attribute is typically implemented using CSS, it's also
 possible to override it using CSS

 if something is marked hidden, it is hidden from all presentations

 The latter is not true as currently implemented.
 The former allows a css enabled styled presentation to display a hidden
 element,
 while browsing with *styles disabled* with have the element hidden (not
 displayed)
 due to the default browser stylesheet making it so.

 Technically it is therefore *not* hidden form all presentations and
 breaks the hidden = aria-hidden accessibility assumptions. I find this
 conflicting.

 And allowing a css override, breaks my use case:

 Say, I have a link: a class=email hiddenEmail/a . And I only want this
 link to
 render dynamically and conditionally as a mailto: href with a
 'display:block' style.
 I am unable to pre-style my links with a 'display:block', because it cancels
 'hidden',
 which makes 'hidden' useless to me here if it wasn't for a *[hidden] {
 display: none; }
 at the end of my stylesheet.

 I strongly suggest that hidden be made a 'display: none !important' instead
 to remedy this confusion.

 [1] https://html.spec.whatwg.org/#the-hidden-attribute

This is intentionally *not* done, so that authors can hide it using
whichever technique they wish; in particular, authors need to be able
to do a transition of styles when setting/removing 'hidden', like
fading it to/from opacity:0.  Forcing it to display:none would prevent
these kinds of animations.

~TJ