#css #onclick #href #visited
#css #onclick #href #посещенный
Вопрос:
У меня есть список элементов, и я хочу изменить стиль элемента при нажатии на элемент списка (и этот конкретный стиль должен оставаться неизменным до тех пор, пока пользователь не нажмет другой элемент списка).
Я пытался использовать «активный» стиль, но безуспешно.
Мой код:
#product_types
{
background-color: #B0B0B0;
position: relative; /*overflow: hidden;*/
}
#product_types a:active
{
background-color:yellow;
}
но элемент становится «желтым» всего на миллисекунду, пока я на самом деле нажимаю на него…
Ответ №1:
Используйте псевдокласс :focus
#product_types a:focus
{
background-color:yellow;
}
Смотрите этот пример -> http://jsfiddle.net/7RASJ /
Псевдокласс focus работает с такими элементами, как поля формы, ссылки и т.д.
Комментарии:
1. Смотрите ссылку на пример, которую я разместил выше. Кроме того, какой элемент вы стилизуете?
2. @dana: Вы используете Chrome или Safari, не так ли?
3. это идеально, но совсем не работает в Chrome… есть какие-нибудь подсказки, почему?
4. Вероятно, потому, что это работает только с элементами, которые обычно могут получать фокус, такими как INPUT или A. Это не будет работать, например, с обычным DIV. (Я думаю, что можно разрешить любому HTML получать фокус, однако, предоставив его
tabindex="-1"
. Или это былоtabindex="0"
?)
Ответ №2:
Причина, по которой это не работает в других браузерах, связана со спецификацией css focus. В нем говорится:
Псевдокласс :focus применяется, пока элемент находится в фокусе (принимает события клавиатуры или другие формы ввода текста).
Похоже, это отлично работает с полями ввода текста или при фокусировке с помощью клавиши tab. Чтобы сделать вышеуказанное совместимым с другими браузерами, добавьте атрибут tabindex к каждому элементу, и это, похоже, решит проблему.
HTML:
<ul>
<li id = 'product_types'><a href='#' tabindex="1">First</a></li>
<li id = 'product_types'><a href='#' tabindex="2">Second</a></li>
</ul>
CSS:
#product_types {
background-color: #B0B0B0;
position: relative;
}
#product_types a:focus {
background-color:yellow;
}