- From: Leif Halvard Silli <xn--mlform-iua@xn--mlform-iua.no>
- Date: Tue, 4 Sep 2012 22:24:00 +0200
- To: Mathew Marquis <mat@matmarquis.com>
- Cc: Peter Winnberg <peter.winnberg@gmail.com>, Steve Faulkner <faulkner.steve@gmail.com>, HTML WG <public-html@w3.org>, "public-respimg@w3.org" <public-respimg@w3.org>
Mathew Marquis, Tue, 4 Sep 2012 13:47:22 -0400: I continue to side with Steve, Chaarles and other in their preference for markup-fallback as alternative text of the <picture> element. However, I want to make a point that should be valid regardless of picture's role and content model. See below. > I am still curious about the viability of allowing an `alt` specified > on the fallback `img` to “bubble up” to the parent `picture` element > — if that should be possible, I think it would be ideal if we could > mention that specifying an `alt` on the fallback `img` applicable to > the parent `picture` is also a valid approach. [...] > On a separate note: I do think `role="img"` should be an essential > part of any `picture` polyfill. Steve, are you okay with my copying > your post above and filing an issue on Picturefill ( > https://github.com/scottjehl/picturefill/tree/div-markup-currentprop > ), so I can address this as soon as possible? You mention role=img as polyfill. Then keep in mind that this is how role=img works, See WAI ARIA on Children Presentational/presentational children.[1][2] <foo role=img> You may write what ever you like here but AT do not see it anyway. (And that's why the HTML5 spec demoes it effect with an ASCII art example.) </foo> Thus: <picture role=img> means that AT, from day one (as long as they support ARIA) will pick the alternative text from the <picture> element rather than from the <img> element - regardless of whether the user agent supports <picture>. In fact, the child <img> element will just be ignored. Meaning that the role of the <img> element, accessibility wise, only becomes to display as visible fallback to sighted users when the image for some reason does not load. However, it could be argued that it would be better to advice *against* role=img as part of the polyfill. Why? Well, because once we apply the img role to <picture>, then we are also faced with AT bugs related to use of role on unknown elements. For instance, in IE8 and below, then each unknown element becomes *two* uknown elements. Which means that if you do the following - without also using the HTML5 shiv, then AT perceives two image elements - the foo element and the img element: <foo role=img alt="Text."> <img alt="Text." /> </foo> To instead just wait for AT and UAs to pick up the semantics of the new element thus seems to me like a better approach. However, if we would like the img element to "bubble up", then (as you should see from the above and from the ARIA reference), there is a *design* reason to never ever pick "img" as the role of <picture>: Since the img role hides the children, then the choice of img role would close the door from the bubbling up option. It is not even a given that <picture> should be given any of the (current) ARIA roles - *may be* it it would be better to give the task to UAs themselves, like ARIA already does for many elements, such as for instance HTML <table>. Also, once we start to fiddle with role=img, then the question becomes: Why not use aria-lablledby as well? After all, we are in ARIA land anyhow ... I don't say this because I want you tool look at the aria-labelledby option once more but because I think Steve's proposal needs more consideration. >> (Strictly speaking, and despite the canvas behavior, the AT *could* >> probably announce the picture — e.g. it could say ‘Picture!’. But >> if so, if there could perhaps be confusion e.g. if it found <img> >> element inside the picture.) > > Fortunately (in a sense), this is a fundamentally broken scenario > even outside the realm of a11y: without specifying a fallback `img`, > no user in an unsupported browser would know an image existed. I > think this is a fairly unlikely situation, at least for a long time > yet — it wouldn’t be an “out of sight, out of mind” sort of error on > the part of a careless author. I think, without doubt, that it is necessary to specify what is supposed to happen (once <picture> is supported) in case there is a <picture> with @alt but no <img>. Imagine, for instance, that the images of the <picture> don't load or that the UA do not render images: Would the @alt of the <picture> then be displayed? (I am not thinking of unsighted AT users - I think about all others.) Personally, I tend to think that it should be one of the characteristics of the @alt attribute that it get rendered, visually, if the image is disabled. And, if that is not the case - namely, the attribute does not and is not supposed to render when the image does not load, then we are other attributes available - first and foremost the @aria-label attribute. [1] http://www.w3.org/TR/wai-aria/complete#img [2] http://www.w3.org/TR/wai-aria/complete#childrenArePresentational -- leif halvard silli
Received on Tuesday, 4 September 2012 20:24:35 UTC