tutorial que example ejemplo html css xhtml

html - que - ¿Cómo se hace un div "tabbable"?



xhtml vs html5 (3)

Tengo botones que son elementos div y quiero hacerlos para que el usuario pueda presionar la tecla de tabulación en su teclado y moverse entre ellos He intentado envolver su texto en etiquetas de anclaje pero no parece funcionar.

¿Alguien tiene una solución?


Agregue atributos de tabindex a sus elementos div .

Ejemplo:

<div tabindex="1">First</div> <div tabindex="2">Second</div>

Según el comentario de steveax, si no desea que el orden de las pestañas se desvíe de donde está el elemento en la página, establezca el tabindex de tabindex en 0 :

<div tabindex="0">First</div> <div tabindex="0">Second</div>


Agregue el tabindex="0" a cada div que desee tabbable. Luego use pseudoclases de CSS: desplazarse y: enfocar, por ejemplo, para indicar al usuario de la aplicación que la división está enfocada y puede hacer clic, por ejemplo. Usa JavaScript para manejar el clic.

var doc = document; var providers = doc.getElementsByClassName("provider"); for (var i = 0; i < providers.length; i++) { providers[i].onclick = function() { console.log(this.innerHTML); }; }

.provider { flex: 0 1 auto; align-self: auto; width: 256px; height: 48px; margin-top: 12px; margin-right: 12px; text-align: center; line-height: 48px; text-transform: uppercase; background-size: contain; background-repeat: no-repeat; background-position: 10%; background-color: gray; } .provider:hover{ cursor: pointer; } .provider:focus{ -webkit-box-shadow: 0px 2px 8px 2px rgba(0,0,0,0.4); -moz-box-shadow: 0px 2px 8px 2px rgba(0,0,0,0.4); box-shadow: 0px 2px 8px 2px rgba(0,0,0,0.4); }

<h4>Click in this area first then press tab</h4> <div id="email" class="provider" tabindex="0">email</div> <div id="facebook" class="provider" tabindex="0">facebook</div> <div id="github" class="provider" tabindex="0">github</div> <div id="google" class="provider" tabindex="0">google</div> <div id="twitter" class="provider" tabindex="0">twitter</div>


para aquellos interesados, además de la respuesta aceptada, puede agregar el siguiente jQuery para cambiar el estilo de div cuando lo tabule, y también manejar Intro y Espacio para activar un clic (entonces su controlador de clic hará el resto)

$(document).on(''focus'', ''.button'',function(){ $(this).css(''border'',''1px dotted black'') }); $(document).on(''keyup'', ''.button'',function(e){ if(e.which==13 || e.which==32) $(this).click() });

Estoy seguro de que alguien ha hecho esto en un complemento jq $ (). MakeTabStop