Pull to refresh

Как еще оживить HTML-страничку, или «Достойная замена использованию псевдоклассов :hover, :active» (шпаргалка для начинающих)

Добрый день всем!

Речь пойдет о достойном способе избежать (а старшие ребята подскажут, действительно ли он достоин жить) возможных глюков CSS в различных браузерах. Статья не претендует на ноу-хау, или на непреложную истину. В ней описан способ, который еще подлежит обсуждению, которого, собственно, я и жду в комментариях (Думаю, что лучше пусть это будет не расстрел тапками, а конструктивная беседа). Итак.

Стандартным решением для оживления какой-нибудь кнопки (использовано также в предыдущем моем хабратопике) является использование псевдоклассов.

Псевдокласс :hover


Служит для задания свойств ссылки (или другого объекта), которые она (он) получает при наведении на нее (него) указателя мыши. Делается это так:

HTML:
<a class="link" href="http://somesite.ru">Sometext</a>

CSS:
.link { 
    color: #333333; // цвет в "покое" - темно-серый
    ...
}


Чтобы заставить ссылку изменить цвет текста при наведении достаточно использовать :hover

CSS:
.link:hover {
       color: #0000ff; // цвет при наведении - синий
}


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

Псевдокласс :active


Псевдокласс :active определяет стиль для активной ссылки (ссылка при нажатии на нее). Описывается это следующим образом:

CSS:
.link.active {
       color: #ff0000; // цвет при нажатии - красный
}


Возможные проблемы реализации


Дело в том, что данные псевдоклассы, согласно спецификации, ориентированы на использование с ограниченным набором элементов, например:

:active применяется к ссылкам (источник)
:hover — вообще «не определился» с областью применения, а в стареньком ИЕ вообще работает с багами.

И что теперь делать, если хочется, чтобы на курсор реагировали не только ссылки?

Использование jQuery


Изменять свойства любого объекта HTML при наведении указателя/нажатии кнопки мыши можно с помощью следующей команды:

// аналог псевдокласса :hover
$(.link).live('mouseover', function() {     
    $(this).css({
        'color': '#0000ff', // меняем цвет
        '_property_': '_value_' // ... и любое другое свойство 
    })
});

// аналог псевдокласса :active
$(.link).live('mousedown', function() {
    $(this).css({
        'color': '#0000ff', // меняем цвет
        '_property_': '_value_' // ... и любое другое свойство 
    })
});


и так далее.

Кроме того, можно обрабатывать все множество событий: click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, keydown, keypress, keyup

Важно помнить:

1. CSS-свойства в jQuery пишутся так же, как и в CSS (color, background-color, display и т.д.)
2. Перед использованием, jQuery не мешало бы подключить:

<head>
...
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
...
</head>


Спасибо за внимание.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.