То есть кнопка, которая может быть вкладками к, доступной для чтения с экрана, а также не предполагает семантическую ссылку на другой документ
Да, и, как ни странно, это называется именно так: <button>
. Или <input type="button">
, если вам нужен только текстовый контент. Затем вы можете добавить к нему нагрузку CSS, чтобы остановить его, как если бы вы предпочитали кнопку формы по умолчанию.
Одной из проблем является IE, которая добавляет дополнительные пару пикселей неустранимого дополнения к виджетам кнопок и перемещает содержимое кнопки вниз и вправо на один пиксель при нажатии. Часто это не имеет значения.Если вам не нужно нулевое дополнение, вы также можете компенсировать добавлением дополнений во все браузеры, кроме IE.
Другой семантически звуковой способ заключается в использовании <input type="image">
, хотя это явно требует, чтобы контент был изображением. Опираясь на текст alt вместо этого, не работает из-за того, что IE создает изображения сломанных изображений.
Хотя кнопки семантически являются наиболее подходящим элементом, если вы не хотите эту проблему с дизайном, вы можете продолжать использовать пробел или другой бессмысленный элемент (например, SO), но, по крайней мере, улучшить доступность клавиатуры, это значение tabindex
. Затем он будет сфокусирован как ссылка, но, к сожалению, вам потребуется дополнительный скриптинг, если вы хотите сделать его активируемым с клавиатуры (уловить хотя бы код нажатия 13 и 32). Вы также можете наметить такой элемент как кнопку с ARIA для обеспечения доступности, хотя, честно говоря, я не уверен, что это действительно полезно для сегодняшнего набора инструментов.
Иногда, когда действие связано с другим элементом на странице, например с предлагаемой кнопкой «открыть/скрыть», мне представляется законным использовать внутреннюю ссылку на этот элемент. (С JS назначенный onclick
хотя, не какой-либо из этого встраиваемого JS или ужасающих javascript:
псевдо-URL.)
.hidden { display: none; }
<a href="#foo" class="toggler">open/hide</a>
<div id="foo"> blah </div>
for (var i= document.links.length; i-->0;)
if (document.links[i].className==='toggler')
document.links[i].onclick= toggle;
function toggle() {
var el= document.getElementById(this.hash.substring(1));
el.className= el.className==='hidden'? 'hidden' : '';
}
или аналогичные идиомы в вашей библиотеке выбора. Это сделает что-то полезное в браузерах, отличных от JavaScript; вы также можете добавить правило для проверки хэша текущего местоположения, так что если кто-то откроет вашу шоу-ссылку на новой вкладке, в документе будет показан этот элемент.
Я нахожусь в одной лодке, и я начал использовать тег BUTTON в качестве своего более четкого в своем намерении, чем SPAN. Я с нетерпением жду ответа здесь. – donohoe
@michael - Я тоже использую кнопку, но семантически корректно, чтобы она отображалась вне элемента формы? Я не думаю, что знаю ... – alex
Да, все элементы ввода могут появляться без какой-либо формы владельца (хотя это не имеет смысла для радиоприемников). – bobince