- From: Michael A. Peters <mpeters@domblogger.net>
- Date: Mon, 28 Nov 2016 16:05:03 -0800
- To: "w3c-wai-ig@w3.org" <w3c-wai-ig@w3.org>
I'm thinking of images but I'm sure this isn't only an issue with image
links. Take the following HTML
<div id="topbanner">
<a href="https://example.org" target="_blank" title="Buy Stuff from
Example.Org">
<img src="/banners/examplebanner.png" alt="[An example banner]" />
</a>
</div>
If #topbanner bad is wider than the image, a usability bug is
introduced. Because the image is a child of the anchor, the anchor is
not limited to physical screen space of the image and (at least in some
browsers) empty white space to the right and left of the image will
trigger the anchor.
This is a UX problem because it is not what users viewing the web page
expect.
Thinking of the banner in terms of objects, it makes more sense for the
link and target to be properties of the image itself rather than
properties of a parent of the image. e.g.
<div id="topbanner">
<img src="/banners/examplebanner.png" alt="[An example banner]"
title="Buy Stuff from Example.org" data-href="https://example.org"
data-target="_blank" />
</div>
Currently browsers won't know what to do with that, but CSS can change
the pointer and a JavaScript function attached to the onclick event
handler can perform the action.
That solves the UX problem - clicking the white space to left or right
of the image no longer triggers the action, only clicking on the image
itself does. Why objects like image don't already have href and target
attributes I don't know, it seems more logical to me for the link and
target to be a property of the object that the user interacts with.
But anyway, doing that breaks tab browsing - tab skips over it. I
suppose tabindex and a listener for enter key press could be used, but
what's the best way with the least ambiguity to tell accessibility
software that the object opens up a link?
Another solution I suppose is to put a container around the a object
that is exactly same width and height as the image so that it constrains
the a element on the screen, but that seems conceptually wrong even if
it works. It seems to me that the conceptually right method is for the
URI to be a property of the image object.
Thanks
Received on Tuesday, 29 November 2016 00:05:34 UTC