#jquery #html #css #tabindex
#jquery #HTML #css #tabindex
Вопрос:
В настоящее время я пытаюсь сделать некоторый показ / скрытие контента более доступным на большом сайте (более 30 000 страниц), и я столкнулся со странной ошибкой при добавлении tabindex, когда при нажатии на элемент управления, чтобы открыть скрытый контент, появляется пунктирная граница.
Настройка с помощью тега p, который вы нажимаете, чтобы исчезнуть в div, который показывает скрытое содержимое. Я вообще не могу изменить HTML-код из-за того, что на сайте их тысячи, так что это то, с чем мне приходится работать. На данный момент, чтобы добавить tabindex, я делаю это динамически с помощью jQuery, добавляя постоянно увеличивающийся индекс табуляции к каждому тегу p.
Однако моим первым способом избавиться от этой странной границы было попробовать CSS:
#content div.showHide p.showHideTitle:focus,
#content div.showHide p.showHideTitle::focus,
#content div.showHide p.showHideTitle::-moz-focus-border {
outline: 0px !important; border: 0px !important;
}
Это работает в Chrome и Safari, но в IE8 и Firefox 3.6 я все еще получаю границу, когда нажимаю на тег p. Есть предложения, как от этого избавиться?
Комментарии:
1. Я не понимаю. Как скрыть контур, чтобы пользователи, использующие клавиатуру, не знали, где находится фокус, помогают в обеспечении доступности?
Ответ №1:
что насчет:
#content div.showHide p.showHideTitle {
outline: none !important;
}
Вы устанавливаете стиль контура для псевдокласса :focus
, но это может быть «слишком поздно».
Здесь простой jsFiddle
Ответ №2:
У меня есть лучшее решение этой проблемы, гибрид javascript / css.
$('[tabindex]').focus(function()
{
$(this).css('outline', 'none');
});
$('[tabindex]').keyup(function (event)
{
if(event.keyCode == 9)
{
$(this).css('outline', '');
}
});
Таким образом, это все еще работает, если вы переходите к табуляции, но не если вы нажимаете.
Комментарии:
1. 1 Это замечательно. Как раз то, что мне было нужно. Все еще хочу
[tabindex]
выделять при табуляции, но переключатели действительно раздражают, когда при щелчке мышью получается этот раздражающий контур. Это войдет в мои хитрости!
Ответ №3:
Хотя это и не самый эффективный CSS-селектор, вы можете удалить это из всех элементов DOM с атрибутами tabindex следующим CSS:
[tabindex] {
outline: none !important;
}
Ответ №4:
Вы пробовали устанавливать css
с помощью своего скрипта? Что-то вроде
$("#content div.showHide p.showHideTitle").focus(function () {
$(this).css('border','0');
});
Ответ №5:
Но пользователь должен видеть контур при наведении фокуса при нажатии клавиши tab.
Ответ №6:
<div class="className" tabIndex="1" style={{outline: 0}}>
<p> Try this... I hope this works!</p>
<div>
Комментарии:
1. Было бы оценено письменное объяснение того, почему это может сработать там, где другие ответы оказались неудачными.