Aquí tengo un selector CSS basado en la respuesta de bobince para seleccionar cualquier elemento HTML enfocable :
a[href]:not([tabindex='-1']),
area[href]:not([tabindex='-1']),
input:not([disabled]):not([tabindex='-1']),
select:not([disabled]):not([tabindex='-1']),
textarea:not([disabled]):not([tabindex='-1']),
button:not([disabled]):not([tabindex='-1']),
iframe:not([tabindex='-1']),
[tabindex]:not([tabindex='-1']),
[contentEditable=true]:not([tabindex='-1'])
{
/* your CSS for focusable elements goes here */
}
o un poco más bella en SASS:
a[href],
area[href],
input:not([disabled]),
select:not([disabled]),
textarea:not([disabled]),
button:not([disabled]),
iframe,
[tabindex],
[contentEditable=true]
{
&:not([tabindex='-1'])
{
/* your SCSS for focusable elements goes here */
}
}
Lo agregué como respuesta, porque eso era lo que estaba buscando cuando Google me redirigió a esta pregunta de Stackoverflow.
EDITAR: hay un selector más, que es enfocable:
[contentEditable=true]
Sin embargo, esto se usa muy raramente.