Tab Atkins Jr.
jackalmage at gmail.com
Mon Jan 30 17:26:47 PST 2012
On Mon, Jan 30, 2012 at 1:54 PM, Ian Hickson <ian at hixie.ch> wrote:
> On Tue, 8 Nov 2011, Ojan Vafai wrote:
>> We keep running into the use case where the physical position matters
>> for the tab order. The problem with just setting tabIndex (or CSS3
>> tab-index) is that it takes the thing out of the natural order.
>> This problem comes up in a lot of places (e.g. absolute positioning).
>> It's recently come up for CSS flexboxes, e.g. if you set flex-order or a
>> reverse flow, then the tabindex still being in document order is often
>> not what the author wants
>> <button tabindex=0>A</button>
>> <div tabindex=2 tabindexscope>
>> <button tabindex=2>C</button>
>> <button tabindex=1>B</button>
>> <button tabindex=1>D</button>
>> The order for the tabbing would be A-D-B-C.
> The spec says that the order when you omit tabindex (or set it to 0)
> should follow platform conventions. If the platform convention is to make
> the tab order follow the visual position, then that's what the browser
> should do.
> Surely that would be better than having authors manage local regions for
> tabindex, especially since the positioning depends on the CSS level, not
> the HTML level, and thus trying to manage the tabindex in the HTML would
> be a layering violation anyway.
If you are attempting to match the tab order to the position of an
element, you are correct. In this situation, the tab order of the
group itself should be controlled by the 'nav-index' property
alongside the positioning code.
However, *within* a group of controls, the relative order can want to
be scoped without reference to CSS. This can happen because the group
is being positioned with CSS (and thus the appropriate tab-index is
unpredictable), because the group may be generated into multiple pages
with different tab-index'd items elsewhere in the page, or just
because the dev would like to write their tab-indexes without having
to renumber everything every time they move the HTML around in the
Scoping a tab-index is thus a property that can appropriately belong
to the HTML level, just as much as tab-index itself does.
More information about the whatwg