161 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			161 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | id: 587d7790367417b2b2512ab1 | ||
|  | title: Usar tabindex para especificar a ordem do foco em vários elementos usando o teclado | ||
|  | challengeType: 0 | ||
|  | videoUrl: 'https://scrimba.com/c/cmzRRcb' | ||
|  | forumTopicId: 301028 | ||
|  | dashedName: use-tabindex-to-specify-the-order-of-keyboard-focus-for-several-elements | ||
|  | --- | ||
|  | 
 | ||
|  | # --description--
 | ||
|  | 
 | ||
|  | O atributo `tabindex` também especifica a ordem em que a tecla tab percorrerá os elementos. Isso é obtido quando o valor do atributo é definido como um número positivo (1 ou acima). | ||
|  | 
 | ||
|  | Definir um `tabindex="1"` fará com que o foco seja levado para esse elemento quando o usuário apertar a tecla tab pela primeira vez. Em seguida, o foco passará ao próximo elemento que tem um `tabindex` maior que o anterior. Quando não existirem mais itens para receberem foco, ele volta ao valor inicial - `tabindex="0"`. | ||
|  | 
 | ||
|  | É importante observar que quando a ordem da tecla tab é definida dessa forma, ela sobrescreve a ordem padrão (que se baseia no código HTML). Isso pode confundir os usuários que esperam iniciar a navegação do topo da página. Esta técnica pode ser necessária em algumas circunstâncias, mas, em termos de acessibilidade, tome cuidado antes de aplicá-la. | ||
|  | 
 | ||
|  | Exemplo: | ||
|  | 
 | ||
|  | ```html | ||
|  | <div tabindex="1">I get keyboard focus, and I get it first!</div> | ||
|  | ``` | ||
|  | 
 | ||
|  | ```html | ||
|  | <div tabindex="2">I get keyboard focus, and I get it second!</div> | ||
|  | ``` | ||
|  | 
 | ||
|  | # --instructions--
 | ||
|  | 
 | ||
|  | O Camper Cat tem um campo de pesquisa em sua página Citações Inspiradoras, o qual ele planeja posicionar no canto superior direito com CSS. Ele deseja que os controles de formulário search `input` e submit `input` sejam os dois primeiros itens na ordem das guias. Adicione um atributo `tabindex` definido como `1` para o `search` `input` e um atributo `tabindex` definido como `2` para o `submit` `input`. | ||
|  | 
 | ||
|  | Outra questão a ser observada é o fato de que alguns navegadores podem colocar você no meio da ordem de navegação via tecla "tab" quando um elemento é clicado. Um elemento foi adicionado à página que garante que você sempre iniciará no início de sua ordem ao pressionar a tecla tab. | ||
|  | 
 | ||
|  | # --hints--
 | ||
|  | 
 | ||
|  | O código deve adicionar um atributo `tabindex` à tag `input` de id `search`. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert($('#search').attr('tabindex')); | ||
|  | ``` | ||
|  | 
 | ||
|  | O código deve adicionar um atributo `tabindex` à tag `input` de id `submit`. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert($('#submit').attr('tabindex')); | ||
|  | ``` | ||
|  | 
 | ||
|  | O código deve definir o atributo `tabindex` na tag `input` de id `search` para um valor de 1. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert($('#search').attr('tabindex') == '1'); | ||
|  | ``` | ||
|  | 
 | ||
|  | O código deve definir o atributo `tabindex` na tag `input` de id `submit` para um valor de 2. | ||
|  | 
 | ||
|  | ```js | ||
|  | assert($('#submit').attr('tabindex') == '2'); | ||
|  | ``` | ||
|  | 
 | ||
|  | # --seed--
 | ||
|  | 
 | ||
|  | ## --seed-contents--
 | ||
|  | 
 | ||
|  | ```html | ||
|  | <body> | ||
|  |   <div tabindex="1" class="overlay"></div> | ||
|  |   <header> | ||
|  |     <h1>Even Deeper Thoughts with Master Camper Cat</h1> | ||
|  |     <nav> | ||
|  |       <ul> | ||
|  |         <li><a href="">Home</a></li> | ||
|  |         <li><a href="">Blog</a></li> | ||
|  |         <li><a href="">Training</a></li> | ||
|  |       </ul> | ||
|  |     </nav> | ||
|  |   </header> | ||
|  |   <form> | ||
|  |     <label for="search">Search:</label> | ||
|  | 
 | ||
|  | 
 | ||
|  |     <input type="search" name="search" id="search"> | ||
|  |     <input type="submit" name="submit" value="Submit" id="submit"> | ||
|  | 
 | ||
|  | 
 | ||
|  |   </form> | ||
|  |   <h2>Inspirational Quotes</h2> | ||
|  |   <blockquote> | ||
|  |     <p>“There's no Theory of Evolution, just a list of creatures I've allowed to live.”<br> | ||
|  |     - Chuck Norris</p> | ||
|  |   </blockquote> | ||
|  |   <blockquote> | ||
|  |     <p>“Wise men say forgiveness is divine, but never pay full price for late pizza.”<br> | ||
|  |     - TMNT</p> | ||
|  |   </blockquote> | ||
|  |   <footer>© 2018 Camper Cat</footer> | ||
|  | </body> | ||
|  | <style> | ||
|  |   body { | ||
|  |     height: 100%; | ||
|  |     margin: 0 !important; | ||
|  |     padding: 8px; | ||
|  |   } | ||
|  |   .overlay { | ||
|  |     margin: -8px; | ||
|  |     position: absolute; | ||
|  |     width: 100%; | ||
|  |     height: 100%; | ||
|  |   } | ||
|  | </style> | ||
|  | ``` | ||
|  | 
 | ||
|  | # --solutions--
 | ||
|  | 
 | ||
|  | ```html | ||
|  | <body> | ||
|  |   <div tabindex="1" class="overlay"></div> | ||
|  |   <header> | ||
|  |     <h1>Even Deeper Thoughts with Master Camper Cat</h1> | ||
|  |     <nav> | ||
|  |       <ul> | ||
|  |         <li><a href="">Home</a></li> | ||
|  |         <li><a href="">Blog</a></li> | ||
|  |         <li><a href="">Training</a></li> | ||
|  |       </ul> | ||
|  |     </nav> | ||
|  |   </header> | ||
|  |   <form> | ||
|  |     <label for="search">Search:</label> | ||
|  | 
 | ||
|  | 
 | ||
|  |     <input tabindex="1" type="search" name="search" id="search"> | ||
|  |     <input tabindex="2" type="submit" name="submit" value="Submit" id="submit"> | ||
|  | 
 | ||
|  | 
 | ||
|  |   </form> | ||
|  |   <h2>Inspirational Quotes</h2> | ||
|  |   <blockquote> | ||
|  |     <p>“There's no Theory of Evolution, just a list of creatures I've allowed to live.”<br> | ||
|  |     - Chuck Norris</p> | ||
|  |   </blockquote> | ||
|  |   <blockquote> | ||
|  |     <p>“Wise men say forgiveness is divine, but never pay full price for late pizza.”<br> | ||
|  |     - TMNT</p> | ||
|  |   </blockquote> | ||
|  |   <footer>© 2018 Camper Cat</footer> | ||
|  | </body> | ||
|  | <style> | ||
|  |   body { | ||
|  |     height: 100%; | ||
|  |     margin: 0 !important; | ||
|  |     padding: 8px; | ||
|  |   } | ||
|  |   .overlay { | ||
|  |     margin: -8px; | ||
|  |     position: absolute; | ||
|  |     width: 100%; | ||
|  |     height: 100%; | ||
|  |   } | ||
|  | </style> | ||
|  | ``` |