Содержание

Элементы DOM – React

React реализует независимую от браузера систему DOM для повышения производительности и кроссбраузерной совместимости. Это позволило избавиться от некоторых шероховатостей в браузерных реализациях DOM.

В React все свойства и атрибуты DOM (включая обработчики событий) должны быть в стиле camelCase. Например, HTML-атрибут tabindex соответствует атрибуту tabIndex в React. Исключение составляют атрибуты aria-* и data-*, которые следует писать в нижнем регистре. В частности, вы можете оставить aria-label как aria-label.

Различия в атрибутах

Есть ряд атрибутов, которые по-разному работают в React и HTML:

checked

Атрибут checked поддерживается компонентами <input> типа checkbox или radio. Он нужен для того, чтобы узнать выбран ли компонент. Это полезно для создания управляемых компонентов. defaultChecked — это неуправляемый эквивалент, который определяет, выбран ли компонент на момент первого монтирования.

className

Чтобы указать класс CSS, используйте атрибут className. Это относится ко всем обычным элементам DOM и SVG, таким как <div>, <a> и т. д.

Если вы используете React с веб-компонентами (что встречается редко), используйте вместо этого атрибут class.

dangerouslySetInnerHTML

Свойству innerHTML в DOM браузера соответствует dangerouslySetInnerHTML в React. Как правило, вставка HTML из кода рискованна, так как можно случайно подвергнуть ваших пользователей атаке межсайтового скриптинга. Таким образом, вы можете вставить HTML непосредственно из React используя dangerouslySetInnerHTML и передать объект с ключом __html, чтобы напомнить себе, что это небезопасно. Например:

function createMarkup() {
  return {__html: 'Первый &middot; Второй'};
}
function MyComponent() {
  return <div dangerouslySetInnerHTML={createMarkup()} />;
}

htmlFor

Поскольку for является зарезервированным словом JavaScript, для определения HTML-атрибута for в элементах React вместо него используйте htmlFor.

onChange

Событие onChange ведёт себя ожидаемо: событие срабатывает при изменении поля формы. Мы намеренно не используем существующее поведение браузера, потому что имя onChange плохо передаёт, что происходит на самом деле. Вместо этого, React-реализация onChange опирается на браузерное событие для обработки ввода в реальном времени.

selected

Если вы хотите отметить некоторый пункт списка <option> выделенным, задайте его значение в атрибуте value тега <select>. Изучите «Тег select» для получения подробных инструкций.

style

Примечание

Некоторые примеры в документации используют для удобства

style, но использование атрибута style для оформления элементов не рекомендуется. В большинстве случаев для ссылки на классы, определённые во внешнем CSS, следует использовать className. Атрибут style в React чаще всего используется при добавлении динамически вычисляемых стилей во время рендера. Смотрите FAQ: Стилизация и CSS.

Атрибут style принимает JavaScript-объект со свойствами в camelCase вместо CSS-строк. Такой подход повышает эффективность и защищает от XSS. Например:

const divStyle = {
  color: 'blue',
  backgroundImage: 'url(' + imgUrl + ')',
};
function HelloWorldComponent() {
  return <div style={divStyle}>Привет, мир!</div>;
}

Обратите внимание, что браузерные префиксы не добавляются к стилям автоматически. Для поддержки старых браузеров необходимо добавить соответствующие свойства стиля:

const divStyle = {
  WebkitTransition: 'all', // обратите внимание на заглавную букву W
  msTransition: 'all' // 'ms' — единственный префикс в нижнем регистре
};
function ComponentWithTransition() {
  return <div style={divStyle}>Это будет работать в разных браузерах</div>;
}

Ключи стилей записываются в camelCase для обеспечения доступа к аналогичным свойствам DOM из JS (например, node.style. backgroundImage). Префиксы браузера кроме ms должны начинаться с заглавной буквы. Вот почему WebkitTransition начинается с заглавной «W».

React автоматически добавит суффикс «px» к свойствам стилей с числовым значением. Если вы хотите использовать единицы измерения, отличные от «px», укажите значение в виде строки с желаемой единицей измерения. Например:

// Результат: '10px'
<div style={{ height: 10 }}>
  Привет, мир!
</div>
// Результат: '10%'
<div style={{ height: '10%' }}>
  Привет, мир!
</div>

Однако не все свойства стилей преобразуются в пиксельные строки. Некоторые из них остаются без единиц (например, zoom, order, flex). Полный список свойств без единиц измерения можно увидеть здесь.

suppressContentEditableWarning

Обычно, когда элемент с потомками помечен как contentEditable, появляется предупреждение, что он не будет работать. Данный атрибут скрывает это предупреждение. Поэтому используйте его, только если вы создаёте похожую на Draft.js библиотеку, которая управляет contentEditable вручную.

suppressHydrationWarning

Если вы используете рендеринг React на стороне сервера и клиент с сервером рендерят разный контент, то как правило, об этом выдаётся предупреждение. Однако в редких случаях очень сложно или невозможно гарантировать точное совпадение. Например, ожидается, что временные метки будут различаться на сервере и на клиенте.

Если для suppressHydrationWarning установлено значение true, React не будет предупреждать вас о несоответствиях в атрибутах и содержимом этого элемента. Он работает только на один уровень глубины и предназначен для использования в качестве запасного решения. Не злоупотребляйте этим. Вы можете прочитать больше о гидратации на странице ReactDOM.hydrateRoot().

value

Атрибут value поддерживается компонентами <input>, <select> и <textarea>. Он устанавливает значение компонента. Это полезно для создания управляемых компонентов. defaultValue — это неуправляемый эквивалент, который устанавливает значение компонента во время первого монтирования.

Поддержка всех HTML-атрибутов

Начиная с React 16, полностью поддерживаются любые стандартные или пользовательские атрибуты DOM.

React всегда предоставлял JavaScript-ориентированный API для DOM. Поскольку компоненты React часто принимают как пользовательские, так и связанные с DOM пропсы, React использует стиль

camelCase так же, как DOM API:

<div tabIndex={-1} />      // То же, что и node.tabIndex DOM API
<div className="Button" /> // То же, что и node.className DOM API
<input readOnly={true} />  // То же, что и node.readOnly DOM API

Эти пропсы работают аналогично соответствующим атрибутам HTML, за исключением особых случаев, описанных выше.

Некоторые из атрибутов DOM, поддерживаемые React:

accept acceptCharset accessKey action allowFullScreen alt async autoComplete
autoFocus autoPlay capture cellPadding cellSpacing challenge charSet checked
cite classID className colSpan cols content contentEditable contextMenu controls
controlsList coords crossOrigin data dateTime default defer dir disabled
download draggable encType form formAction formEncType formMethod formNoValidate
formTarget frameBorder headers height hidden high href hrefLang htmlFor
httpEquiv icon id inputMode integrity is keyParams keyType kind label lang list
loop low manifest marginHeight marginWidth max maxLength media mediaGroup method
min minLength multiple muted name noValidate nonce open optimum pattern
placeholder poster preload profile radioGroup readOnly rel required reversed
role rowSpan rows sandbox scope scoped scrolling seamless selected shape size
sizes span spellCheck src srcDoc srcLang srcSet start step style summary
tabIndex target title type useMap value width wmode wrap

Кроме того, полностью поддерживаются все SVG-атрибуты:

accentHeight accumulate additive alignmentBaseline allowReorder alphabetic
amplitude arabicForm ascent attributeName attributeType autoReverse azimuth
baseFrequency baseProfile baselineShift bbox begin bias by calcMode capHeight
clip clipPath clipPathUnits clipRule colorInterpolation
colorInterpolationFilters colorProfile colorRendering contentScriptType
contentStyleType cursor cx cy d decelerate descent diffuseConstant direction
display divisor dominantBaseline dur dx dy edgeMode elevation enableBackground
end exponent externalResourcesRequired fill fillOpacity fillRule filter
filterRes filterUnits floodColor floodOpacity focusable fontFamily fontSize
fontSizeAdjust fontStretch fontStyle fontVariant fontWeight format from fx fy
g1 g2 glyphName glyphOrientationHorizontal glyphOrientationVertical glyphRef
gradientTransform gradientUnits hanging horizAdvX horizOriginX ideographic
imageRendering in in2 intercept k k1 k2 k3 k4 kernelMatrix kernelUnitLength
kerning keyPoints keySplines keyTimes lengthAdjust letterSpacing lightingColor
limitingConeAngle local markerEnd markerHeight markerMid markerStart
markerUnits markerWidth mask maskContentUnits maskUnits mathematical mode
numOctaves offset opacity operator order orient orientation origin overflow
overlinePosition overlineThickness paintOrder panose1 pathLength
patternContentUnits patternTransform patternUnits pointerEvents points
pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits
r radius refX refY renderingIntent repeatCount repeatDur requiredExtensions
requiredFeatures restart result rotate rx ry scale seed shapeRendering slope
spacing specularConstant specularExponent speed spreadMethod startOffset
stdDeviation stemh stemv stitchTiles stopColor stopOpacity
strikethroughPosition strikethroughThickness string stroke strokeDasharray
strokeDashoffset strokeLinecap strokeLinejoin strokeMiterlimit strokeOpacity
strokeWidth surfaceScale systemLanguage tableValues targetX targetY textAnchor
textDecoration textLength textRendering to transform u1 u2 underlinePosition
underlineThickness unicode unicodeBidi unicodeRange unitsPerEm vAlphabetic
vHanging vIdeographic vMathematical values vectorEffect version vertAdvY
vertOriginX vertOriginY viewBox viewTarget visibility widths wordSpacing
writingMode x x1 x2 xChannelSelector xHeight xlinkActuate xlinkArcrole
xlinkHref xlinkRole xlinkShow xlinkTitle xlinkType xmlns xmlnsXlink xmlBase
xmlLang xmlSpace y y1 y2 yChannelSelector z zoomAndPan

Вы также можете использовать пользовательские атрибуты, если они написаны в нижнем регистре.

Что такое tabindex в html

Ниже приведен пример кода, над которым я работаю. При навигации по кнопке ENTER форма submit вызывает действие “Cancel”, хотя индекс вкладки находится после кнопки “Next”.

Изменение порядка кнопок “submit” в разметке HTML поможет предотвратить вызов кнопки “Cancel” по умолчанию. Но мне нужно держать кнопку “Cancel” в левой части кнопки & “Next” в правой.

2 ответа

Использовать свойство tabindex, кажется, работают только для вспомогательные методы HTML приложения как Textboxfor и не EditorFor Например; <%: Html.TextBoxFor(model => Model.MyItem, new )%> Создает значение tabindex. Однако, если вы используете; <%.

Для чего используется атрибут tabindex в HTML?

Клавиша enter запускает элемент firstnext type=»submit» в форме, независимо от tabindex. Есть два способа обойти это:

Используйте JS для нажатия определенной кнопки при нажатии клавиши enter:

Это, однако, становится неприятным, когда у вас есть <textarea> в форме, для которой вы, конечно, хотите сохранить его поведение по умолчанию с помощью клавиши enter.

Сначала поместите кнопки в один и тот же элемент контейнера со следующей кнопкой и используйте CSS, чтобы поменять их местами.

Я думаю, это потому, что он видит кнопку «Отмена» и кнопку «Далее» как одно и то же. Они оба относятся к типу Submit. Поэтому, когда вы нажимаете enter, он находит первую кнопку отправки. Я бы изменил тип отмены на, возможно, сброс? Затем используйте javascript/jQuery для перенаправления при нажатии кнопки отмена.

Может быть, есть лучший способ.

Похожие вопросы:

У меня довольно странная проблема с сортировкой в JavaScript. Я забрел в этот чудесный и ужасно запутанный мир сортировки и подумал, не могли бы вы, ребята, мне помочь: В принципе, я пытаюсь.

У меня есть около 50-60 компонентов, и некоторые поля доступны только для чтения. Теперь я хочу установить индекс вкладки только для полей, которые являются read/write. Теперь проблема для меня.

У меня есть страница html, где я не могу поставить DOCTYPE (мне это запрещено). Кроме того, мне нужно заставить его работать на IE 8! Тогда есть вещь с меткой checkbox +. Например, это: <input.

Использовать свойство tabindex, кажется, работают только для вспомогательные методы HTML приложения как Textboxfor и не EditorFor Например; <%: Html.TextBoxFor(model => Model.MyItem, new

Для чего используется атрибут tabindex в HTML?

Я застрял здесь с проблемой tabindex. Как вы можете видеть на макете HTML, у меня есть четыре кнопки, а именно Add, Subtract, Save и Close . Когда пользователь нажимает клавишу Tab, поток правильно.

У меня есть сгенерированная форма PHP, которая используется в качестве интерфейса выставления счетов. Пользователи прокладывают себе путь через форму, нажимая tab . Мне нужно вращать клавишу tab.

У меня возникла проблема с табордером в моей форме при использовании select2. У меня есть форма ввода, которую я хочу, чтобы пользователь мог просматривать по порядку. Я смог упорядочить поля ввода.

Я создаю форму HTML с помощью Bootstrap, и у меня есть проблема с индексами полей ввода. Поля отображаются рядом на рабочем столе (2 поля в одной строке). Теперь, когда вкладка нажата, курсор.

В некоторых ссылках социальных сетей добавляют такой тег tabindex=»0″.
Пример:
<a href=»http://masterelit.com.ua/keramika/braas» target=»_blank» ot-anchor zg» tabindex=»0″>BRAAS керамическая черепица — купить BRAAS по доступной цене в Киеве</a>

Подскажите что дает ссылке и какие параметры ещё могут быть?

RPI.su — самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected] . Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.

Атрибут tabindex определяет последовательность выбора HTML элементов при нажатии на кнопку Tab.

В HTML5 атрибут tabindex можно использовать с любым HTML элементом (все элементы с этим атрибутом будут проходить валидацию. Тем не менее, это не всегда имеет смысл!).

В HTML 4.01 атрибут tabindex может использоваться только с элементами <a>, <area>, <button>, <input>, <object>, <select>, <textarea>.

Ниже в таблице представлены глобальные атрибуты HTML тегов с кратким описанием и примерами использования.

Определяет горячую клавишу для активации элемента или перевода фокуса на элемент.

Значение: символ клавиши на клавиатуре.

Определяет одно или больше имен класса элемента. Используется для связи HTML элемента с таблицами стилей CSS.

Значение: одно или более имен классов.

Определяет возможность редактирования контента элемента пользователем.

Значение: true | false.

Определяет контекстное меню для элемента. Контекстное меню появляется при нажатии на правую кнопку мыши.

Значение: id контекстного меню <menu> .

Используется для хранения пользовательских данных.

Значение: пользовательское. Можно использовать атрибут с любым именем, начинающимся на «data-«, например, data-count, data-value, data-result, data-chtoto.

Определяет направление текста внутри элемента (слева направо или справа налево).

Значение: ltr — слева на право | rtl — справа на лево.

Определяет, можно ли перетаскивать элемент.

Значение: true | false | auto.

Значение: Отсутствует.

Определяет идентификатор элемента.

Значение: Название идентификатора.

Указывает на язык содержимого элемента.

Значение: Language Code (код языка).

Определяет, нужно ли браузеру проверять грамматику содержимого элемента.

Значение: true | false.

Определяет CSS стили элемента (стили также могут быть определены другими способами).

tabindex фокус для вызова подменю с помощью CSS [javascript, navigation, html, css, tabindex]


Я создаю вертикальную навигацию, которая размещается в левой части страницы. и навигация вызывает подменю при наведении. но проблема здесь в том, что я хочу создать эту навигацию, которая может быть

отвечать TAB.

Ситуация, с которой я столкнулся, заключается в том, что когда я навожу указатель мыши на панель навигации, подменю становится легче. Но я хочу использовать Tab, чтобы сосредоточиться на главном меню, тогда подменю также уменьшится. Но это не работает.

Можно ли это сделать с помощью HTML и CSS???

Пример: https://www.whitehouse.gov/

А вот мой HTML-код:

                <nav> 
                <ul>   
                <li >
                <a href="#" tabindex="1" >Home & Kitchen</a>
                <ul> 
                <li><a href="#" tabindex="2">item</a></li>
                <li><a href="#" tabindex="3">item</a></li> 
                <li><a href="#" tabindex="4">item</a></li> 
                <li><a href="#" tabindex="5">item</a></li> 
                <li><a href="#">item</a></li> 
                <li><a href="#">item</a></li> 
                </ul>
                </li> 
                <li tabindex="2">
                <a href="#" >Electronics</a> 
                <ul> 
                <li><a href="#">item</a></li> 
                <li><a href="#">item</a></li>
                <li><a href="#">item</a></li>
                <li><a href="#">item</a></li>
                <li><a href="#">item</a></li> 
                </ul>
                </li> 
                <li tabindex="3">
                <a href="#" >Clothing</a>
                <ul> 
                <li><a href="#">item</a></li>
                <li><a href="#">item</a></li>
                <li><a href="#">item</a></li>
                <li><a href="#">item</a></li> 
                </ul>
                </li> 
                <li>
                <a href="#">Cars & Motorbikes</a> 
                <ul> 
                <li><a href="#">item</a></li> 
                <li><a href="#">item</a></li> 
                <li><a href="#">item</a></li> 
                <li><a href="#">item</a></li> 
                </ul> 
                </li> 
                <li>
                <a href="#">Books</a> 
                <ul> 
                <li><a href="#">item</a></li>
                <li><a href="#">item</a></li>
                <li><a href="#">item</a></li>
                <li><a href="#">item</a></li>
                </ul> 
                </li>
                <li>
                <a href="#">Support</a> 
                <ul> 
                <li>
                <a href="#">Contact Us</a>
                </li> 
                <li><a href="#">Forum</a>
                </li> 
                <li><a href="#">Deliveries</a></li>
                <li><a href="#">T&C</a></li> 
                </ul>
                </li> 
        </ul> 
    </nav>

А вот мой CSS-код:

p, ul, li, div, nav { padding:0; margin:0; }
 #menu { 
 overflow: auto; 
 position:fixed; 
 left:0%;top:20%; 
z-index:2; }
. parent-menu { 
background-color: #0c8fff; 
min-width:200px; 
float:left; }
#menu ul { 
list-style-type:none; 
} 
#menu ul li a {
 padding:10px 15px; 
 display:block; 
 color:#fff; 
 text-decoration:none; 
 } 
#menu ul li a:hover { 
background-color:#007ee9; 
    }
#menu ul li:hover  > ul { 
left: 200px; 
-webkit-transition: left 200ms ease-in;
-moz-transition: left 200ms ease-in;
-ms-transition: left 200ms ease-in;
transition: left 200ms ease-in; 
} 
#menu ul li:focus  > ul { 
left: 200px; 
-webkit-transition: left 200ms ease-in;
-moz-transition: left 200ms ease-in;
-ms-transition: left 200ms ease-in;
    transition: left 200ms ease-in; 
} 
#menu ul li > ul { 
position: fixed; 
background-color: #333; 
top: 20%; left: -200px; 
min-width: 200px; 
z-index: -1; 
height: 100%; 
-webkit-transition: left 200ms ease-in; 
-moz-transition: left 200ms ease-in; 
-ms-transition: left 200ms ease-in; 
transition: left 200ms ease-in; 
}
#menu ul li > ul li a:hover { 
background-color:#2e2e2e; 
}

Вот где я нахожу сложным. Hover здесь работает нормально. но когда дело доходит до фокусировки, это не работает.

#menu ul li:hover  > ul { 
left: 200px; 
-webkit-transition: left 200ms ease-in;
-moz-transition: left 200ms ease-in;
-ms-transition: left 200ms ease-in;
transition: left 200ms ease-in; 
} 
#menu ul li:focus  > ul { 
left: 200px; 
-webkit-transition: left 200ms ease-in;
-moz-transition: left 200ms ease-in;
-ms-transition: left 200ms ease-in;
    transition: left 200ms ease-in; 
} 

Надеюсь, вы, ребята, понимаете, о чем я говорю 🙂


javascript navigation html css tabindex

person Johnathan Li    schedule 19.01.2016    source источник



Ответы (1)

arrow_upward
0
arrow_downward

Вы можете использовать без tabindex следующим образом:

#menu ul li a:focus + ul {
 left: 200px; 
 -webkit-transition: left 200ms ease-in;
 -moz-transition: left 200ms ease-in;
 -ms-transition: left 200ms ease-in;
 transition: left 200ms ease-in; 
}

проверьте эту скрипку https://jsfiddle. net/toz7n3ym/1/)

ИЛИ удалите href из a, причина, по которой вы используете href, фокусируется на ‹ a > не на ‹ li > проверьте эту скрипку https://jsfiddle.net/toz7n3ym/

person Umer bin Siddique    schedule 21.01.2016

HTML — tabindex — Глобальный атрибут tabindex указывает,что его элемент может быть сфокусирован,и где

tabindex глобальный атрибут указывает на то, что его элемент может быть сфокусирован, и где она участвует в последовательной навигации с помощью клавиатуры ( как правило , сTabключ,отсюда и название).

Try it

Он принимает в качестве значения целое число с различными результатами в зависимости от значения целого числа:

  • Значение отрицательного (обычно tabindex="-1" ) означает , что элемент не доступен через последовательные навигации с помощью клавиатуры, но может быть сосредоточен с JavaScript или визуально щелчком мыши. Чаще всего полезно создавать доступные виджеты с помощью JavaScript.

    Примечание. Отрицательное значение полезно, когда у вас есть закадровый контент, который появляется при определенном событии. Пользователь не сможет сосредоточиться любой элемент с отрицательным tabindex с помощью клавиатуры, но сценарий может сделать это путем вызова focus() метод .

  • tabindex="0" означает, что элемент должен быть доступен для фокусировки при последовательной навигации с клавиатуры после любых положительных значений tabindex и его порядок определяется исходным порядком документа.
  • Положительное значение означает , что элемент должен быть фокусируемым в последовательной навигации с помощью клавиатуры, с его порядком определяется значением числа. То есть tabindex="4" фокусируется перед tabindex="5" и tabindex="0" , но после tabindex="3" . Если несколько элементов имеют одно и то же положительное значение tabindex , их порядок относительно друг друга соответствует их положению в источнике документа. Максимальное значение для tabindex — 32767. Если не указано, используется значение по умолчанию 0.

    Предупреждение. Избегайте использования значений tabindex больше 0. Это затрудняет навигацию и управление содержимым страницы для людей, которые полагаются на вспомогательные технологии. Вместо этого напишите документ с элементами в логической последовательности.

Если вы установите атрибут tabindex для <div> , то его дочернее содержимое нельзя будет прокручивать с помощью клавиш со стрелками, если вы также не установите tabindex для содержимого. Ознакомьтесь с этой скрипкой, чтобы понять эффекты прокрутки tabindex .

Accessibility concerns

Избегайте использования атрибута tabindex в сочетании с неинтерактивным содержимым, чтобы сделать что-то, предназначенное для интерактивной фокусировки, с помощью ввода с клавиатуры. Примером этого может быть использование элемента <div> для описания кнопки вместо элемента <button> .

Интерактивные компоненты, созданные с использованием неинтерактивных элементов, не перечислены в дереве специальных возможностей . Это не позволяет вспомогательным технологиям переходить к этим компонентам и манипулировать ими. Содержимое должно быть семантически описано с использованием вместо этого интерактивных элементов ( <a> , <button> , <details> , <input> , <select> , <textarea> и т. Д.). Эти элементы имеют встроенные роли и состояния, которые сообщают о состоянии доступности, которой в противном случае пришлось бы управлять с помощью ARIA .

  • Используя атрибут tabindex | Группа Пасиэльо

Specifications

Specification
Стандарт HTML
# attr-tabindex

Browser compatibility

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet
tabindex

Yes

12

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

See also

  • Все глобальные атрибуты
  • HTMLElement. tabIndex , который отражает этот атрибут
  • Проблемы доступности с tabindex: см. Adrian Roselli «Не используйте Tabindex больше 0 ».

© 2005–2021 Авторы MDN.
Лицензия Creative Commons Attribution-ShareAlike License v2.5 или более поздняя.
https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex

Практическое руководство. Использование атрибута tabindex

tabindex — это глобальный атрибут, который позволяет элементу HTML получать фокус. Ему нужно значение ноль или отрицательное число, чтобы работать доступным способом.

Когда значение tabindex установлено равным нулю или положительному числу, к элементу можно перейти с помощью клавиши Tab на клавиатуре. Когда для него установлено отрицательное число, его элемент может быть программно сфокусирован с помощью JavaScript.

Распространенные ошибки

К сожалению, атрибут tabindex часто неправильно понимают и, следовательно, используют неправильно. Ниже приведены некоторые распространенные примеры использования tabindex , которые отрицательно влияют на доступность: . помещает элемент tabindex первым в порядке табуляции клавиатуры. Это может сбить с толку любого, кто полагается на 9 клавиш клавиатуры.0009 Клавиша Tab для навигации.

Установка порядка табуляции вручную

Вам не нужно вручную устанавливать порядок табуляции для каждой страницы или представления на веб-сайте или в веб-приложении. Мало того, что эта дополнительная, ненужная работа, которую трудно поддерживать, она может отклоняться от чьего-то ожидаемого или желаемого способа навигации. Это приводит к раздражающему, запутанному и потенциально недоступному опыту.

Вместо этого используйте соответствующие интерактивные элементы ( a для ссылок, кнопки кнопки и т.д.) и расположите их в порядке чтения документа. Интерактивные элементы поставляются с уже встроенным поведением браузера, что позволяет переходить к ним с помощью Tab без необходимости объявления tabindex .

Создание фокуса на неинтерактивных элементах

Существует миф, что применение tabindex="0" к неинтерактивным элементам (абзацам, заголовкам, спискам и т. д.) помогает «улучшить» доступность, предоставляя путь для человека кто использует программу чтения с экрана, чтобы сосредоточиться на всем содержимом веб-страницы или веб-приложения. К сожалению, эта благонамеренная идея на самом деле не создает хороших вспомогательных технологий.

Точно так же, как вам не нужно добавлять объявление атрибута tabindex к собственным интерактивным элементам, вам также не нужно добавлять атрибут tabindex к неинтерактивным элементам, чтобы они могли работать со вспомогательными технологиями. .

Причина этого в том, что вспомогательные технологии, такие как программы чтения с экрана, имеют другие, ожидаемые способы навигации и использования этого контента. Из-за этого добавление атрибута tabindex к неинтерактивным элементам создает несколько проблем. Это:

  • Добавляет путаницы в отношении того, что является интерактивным, а что нет, особенно если вы не видите экран.
  • Требуется дополнительная работа для людей, использующих клавиатуру для навигации (и, в частности, для людей, использующих , а не клавиатуру, использующих вспомогательные технологии), особенно для тех, у кого есть проблемы с контролем моторики.
  • Нельзя объявлять имя и роль элемента, что создает дополнительную путаницу в отношении того, что это за элемент, как он должен работать и правильно ли он закодирован.

tabindex , объявленный для неинтерактивного элемента, вложенного в интерактивный элемент

Вам не нужно объявлять tabindex для дочернего элемента, при условии, что его родительский элемент является интерактивным элементом. Примером этого может быть элемент span , вложенный в кнопку :

Наличие атрибута tabindex в этом примере кода повлияет на порядок интерактивных элементов нелогичным образом. Это создает раздражающий и потенциально запутанный опыт для людей, использующих клавиатуру или вспомогательные технологии.

Допустимое использование

tabindex

Ниже приведены некоторые из наиболее распространенных случаев, когда вам необходимо использовать tabindex . В этих сценариях он обеспечивает доступ к содержимому.

Интерактивные виджеты и диаграммы JavaScript

Объявления tabindex="-1" иногда можно найти в интерактивных виджетах и ​​компонентах, которые внутренне управляют фокусом, таких как поля со списком или деревья, поскольку это позволяет JavaScript сфокусироваться на элементе через метод focus() .

Прокручиваемые контейнеры переполнения

tabindex="0" следует применять к любому неинтерактивному элементу, к которому применено свойство CSS overflow . Это позволит людям, использующим клавиатуру, перемещаться и прокручивать переполненный контент.

Вам также потребуется предоставить:

  1. Ярлык, кратко описывающий содержимое неинтерактивного элемента. Этикетка может быть предоставлена:
    1. id / aria-labeled by ассоциация, если она имеет видимый заголовок, или
    2. aria-label , если нет.
  2. Способ семантического указания содержимого. Это может быть предоставлено:
    1. Соответствующий элемент раздела или
    2. Роль ориентира, если контент достаточно важен, и людям нужен быстрый и простой способ вернуться к нему.
    3. Роль группы также можно использовать, если нет необходимости в быстром доступе.
 
aria-labeledby="terms-of-service"
role="group"
tabindex="0"
style="overflow: auto; height: 15rem;">

Условия of Service



Удовлетворяет критерию 4.1.2 WCAG: имя, роль, значение. Он позволяет людям прокручивать страницу с помощью клавиатуры, а также указывает, почему они должны прокручивать страницу и какой контент они могут ожидать найти внутри.

Когда нет применимого элемента HTML

Интерактивные элементы управления, не имеющие соответствующего HTML-элемента, требуют объявления tabindex="0" . Примером этого может быть поле со списком, виджет, который «представляет список параметров и позволяет пользователю выбрать один или несколько из них».

Надеемся, что это дает достаточно информации для ответственного и доступного обращения с tabindex .

Спасибо Саре Хигли и Патрику Лауке за их отзывы.

Дальнейшее чтение

  • Доступность клавиатуры WebAIM
  • Основы веб-сайтов: использование tabindex Google Developers
  • Использование атрибута tabindex The TPGi
  • Не используйте Tabindex больше 0 Adrian Roselli
  • Tabindex: позитивный настрой редко окупается Краткая заметка об улучшении удобства использования прокручиваемых областей TPGi
  • Разница между навигацией с помощью клавиатуры и программы чтения с экрана Леони Уотсон

h5: создание логического порядка вкладок с помощью ссылок, элементов управления формы и объектов

h5: Создание логического порядка табуляции с помощью ссылок, элементов управления формы и объектов | Методы для WCAG 2. 0

Методы для WCAG 2.0

Перейти к содержимому (нажмите Enter)

  • Содержание
  • Введение
  • 9
  • 6: Предыдущий
  • 6 Техника h3
  • Следующая: Technique h34

На этой странице:

  • Важная информация о методах
  • Применимость
  • Описание
  • Примеры
  • Ресурсы
  • Связанные методы
  • Тесты

. они относятся к нормативным критериям успеха WCAG 2.0. В разделе «Применимость» объясняется область применения метода, и наличие методов для конкретной технологии не означает, что эту технологию можно использовать во всех ситуациях для создания контента, соответствующего WCAG 2.0.

Применимость

HTML и XHTML

Этот метод относится к:

  • Критерий успеха 2.4.3 (Порядок фокусировки)
    • Как встретить 2. 4.3 (Порядок фокуса)
    • Понимание Критерия успеха 2.4.3 (Порядок фокусировки)

Описание

Целью этого метода является обеспечение логического порядка вкладок, когда вкладка по умолчанию порядка не хватает. Часто достаточно G59: размещение интерактивных элементов в порядке, соответствующем последовательностям и отношениям внутри контента, и этот метод не является необходимым. Это может быть очень легко чтобы ввести ошибки удобства использования при явной установке порядка табуляции.

В некоторых случаях автор может захотеть указать порядок табуляции, следующий за отношениями в содержимое без следования порядку интерактивных элементов в коде. В В этих случаях можно указать альтернативный порядок, используя tabindex . атрибут интерактивного элемента. tabindex получает значение между 0 и 32767.

Когда интерактивные элементы перемещаются с помощью клавиши табуляции, элементы отображаются сосредоточиться в порядке возрастания значения их атрибут tabindex . Элементы, у которых значение tabindex больше нуля, получат фокус перед элементами без tabindex или tabindex со значением 0. После все элементы с tabindex выше 0 получили фокус, остальные интерактивные элементы получают фокус в том порядке, в котором они появляются в Интернете страница.

Примеры

Пример 1

Форма генеалогического поиска ищет записи о браке. Форма поиска включает в себя несколько полей ввода для невесты и жениха. Форма размечается с использованием данных таблица, включающая поля жениха в первом столбце и поля невеста во второй колонке. Порядок в содержании построчный, но автор считает более логичным перемещаться по форме столбец за столбцом. Таким образом, все критерии жениха можно заполнить, прежде чем переходить к критериям невесты. tabindex атрибуты полей ввода используются для указания вкладки порядок, который перемещается столбец за столбцом.

Пример кода:

 

Пример 2

Веб-страница содержит поле поиска в правом верхнем углу. Поле дано tabindex=»1″, чтобы он стоял первым в порядке табуляции, даже если он не первым в порядке содержания.

Пример 3

Значения Tabindex не обязательно должны быть последовательными и не должны начинаться с какой-либо особое значение. Значения не обязательно должны быть уникальными. Элементы, имеющие одинаковые tabindex значения перемещаются в том порядке, в котором они появляются в поток символов.

В разделах контента, где порядок табуляции соответствует порядку контента, можно менее подвержен ошибкам, чтобы дать всем элементам одно и то же значение tabindex, а не указывать разные номера для каждого элемента. Затем легко переставить эти элементы или добавлять новые элементы и поддерживать логический порядок табуляции.

Пример кода:

 Первая ссылка в списке
Вторая ссылка в списке
Добавленная длинная ссылка
  после создания исходного списка
Третья ссылка в списке
  . ..
Двадцатая ссылка в списке 

Ресурсы

Ресурсы предназначены только для информационных целей, одобрение не подразумевается.

  • Табуляция навигация в спецификации HTML 4.01

  • G59: размещение интерактивных элементов в порядке, соответствующем последовательностям и отношениям в содержимом не сохраняет смысл и работоспособность
  • F85: Невыполнение критерия успеха 2.4.3 из-за использования диалоговых окон или меню, которые не находятся рядом с их элементом управления триггером в порядке последовательной навигации

Тесты

Процедура

  1. Проверить, используется ли tabindex

  2. tabindex атрибуты следуют отношениям в содержании.

Ожидаемые результаты

  • Проверка #2 верна.

Если это достаточная методика для критерия успеха, то неудача этой процедуры тестирования не обязательно означает, что критерий успеха не был удовлетворен каким-либо другим способом, а означает только то, что эта методика не была успешно реализована и не может быть использована требовать соответствия.

Использование атрибута tabindex — TPGi

Леони Уотсон | 4 августа 2014 г. | Разработка

Атрибут HTML tabindex используется для управления фокусом клавиатуры. При разумном использовании он может эффективно управлять фокусом в веб-виджетах. Однако при неразумном использовании атрибут tabindex может разрушить удобство использования веб-контента для пользователей клавиатуры.

Атрибут tabindex указывает, что элемент может быть сфокусирован, и определяет, как этот фокус обрабатывается. Он принимает целое число (целое число) в качестве значения, и результирующее взаимодействие с клавиатурой зависит от того, является ли целое число положительным, отрицательным или равным 0.

Чтобы понять, почему атрибут tabindex так сильно влияет на удобство использования, необходимо кое-что знать о том, как работает взаимодействие с клавиатурой. Пользователь клавиатуры обычно перемещается по веб-содержимому с помощью клавиши табуляции, переходя от одного фокусируемого элемента к другому в последовательном порядке.

Некоторые интерактивные элементы HTML, такие как ссылки и элементы управления формы, по умолчанию могут быть сфокусированы. Когда они включены в веб-страницу, их последовательный порядок определяется исходным порядком HTML.


<тип ввода="текст">

<тип ввода="пароль">

 

Пользователь с клавиатурой сначала переходит к полю имени пользователя, затем к полю пароля и, наконец, к кнопке входа в систему. Все три элемента получают фокус по умолчанию, и доступ к ним осуществляется в том порядке, в котором они появляются в исходном коде. Другими словами, нет необходимости явно устанавливать tabindex , потому что все это легко обрабатывается в браузере.

tabindex=0

Когда для tabindex установлено значение 0 , элемент вставляется в порядок вкладок в зависимости от его местоположения в исходном коде. Если элемент фокусируется по умолчанию, нет необходимости использовать tabindex вообще, но если вы переназначаете элемент, такой как или

, то tabindex=0 является естественным способом чтобы включить его в порядок табуляции.

Здесь стоит упомянуть, что проще использовать фокусируемый HTML-элемент везде, где это возможно. Например, когда вы решите использовать

Добавить комментарий

Ваш адрес email не будет опубликован.

Поиск записей о браке
Критерии поиска Жених Невеста
Имя
Фамилия
Место рождения