У меня есть кнопки, которые являются элементами div, и я хочу сделать их так, чтобы пользователь мог нажимать клавишу табуляции на своей клавиатуре и перемещаться между ними. Я пробовал обернуть их текст в теги привязки, но, похоже, это не сработало.
у кого-нибудь есть решение?
href
атрибут, он должен работать. Это может быть или не быть подходящим использованием разметки, если активируемый элемент действительно что-то не делает.Ответы:
Добавьте
tabindex
атрибуты к своимdiv
элементам.Пример:
<div tabindex="1">First</div> <div tabindex="2">Second</div>
Согласно комментарию Стивеакса, если вы не хотите, чтобы порядок табуляции отличался от того, где находится элемент на странице, установите
tabindex
значение0
:<div tabindex="0">First</div> <div tabindex="0">Second</div>
источник
tabindex=0
чтобы не испортить естественный порядок табуляции.для тех, кто заинтересован, в дополнение к принятому ответу вы можете добавить следующий jquery, чтобы изменить стиль div при переходе к нему, а также обработать Enter и Space, чтобы вызвать щелчок (тогда ваш обработчик щелчка сделает все остальное)
Я уверен, что кто-то превратил это в плагин jq $ (). MakeTabStop
источник
Добавьте
tabindex="0"
атрибут в каждый div, который вы хотите использовать с вкладками. Затем используйте псевдоклассы CSS: hover и: focus, например, чтобы указать пользователю приложения, что div находится в фокусе и доступен для нажатия, например. Используйте JavaScript для обработки щелчка.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>
источник
Сделайте элементы доступными для вкладок и щелчков нажатием клавиши с помощью jquery
Предположения
Образец HTML:
... <div onclick="clicked(this)">Button 1</div> <div onclick="clicked(this)">Button 2</div> <div onclick="clicked(this)">Button 3</div> ...
Код JQuery: это код, который будет запускаться после загрузки страницы. Он должен работать на вашей HTML-странице.
$(()=>{ // make divs with an onclick attribute tabbable/clickable $('div[onclick]') .attr('tabindex', '0') // Add tab indexes .keypress((evt)=>{ var key = evt.key; evt.preventDefault(); // Ensure all default keypress // actions are not used if (key === ' ' || key === 'Enter') { // Only send click events for Space // or Enter keys evt.currentTarget.click(); // Run the click event for element } }); });
Вы можете найти рабочий пример здесь .
источник