Нет, вы не можете напрямую запускать JavaScript из CSS.
То, что вы можете сделать, - это использовать селекторы CSS, чтобы найти элементы, которые вы хотите просмотреть таким образом, а затем отслеживать события мыши. Стандартными событиями являются mouseover
и mouseout
, но с ними может быть немного сложно работать, потому что они всплывают (например, вы получаете mouseout
всякий раз, когда мышь покидает какой-либо элемент-потомок). Однако, с соответствующей логикой, с ними не так уж плохо работать, и на самом деле, если у вас их много, вы, вероятно, захотите использовать mouseover
и mouseout
, а не альтернативу ниже, потому что вы можете установить их на родительский контейнер, а затем определите, какой дочерний элемент задействован, что в некоторых случаях может быть проще (а в других - сложнее).
IE предоставляет mouseenter
и mouseleave
, с которыми гораздо проще работать, потому что они не всплывают, но (конечно) специфичны для IE. Это настолько удобно, что фреймворки начинают поддерживать их даже в браузерах, которые этого не делают; Например, Прототип и jQuery предоставляют их, и я не был бы слишком удивлен, если бы некоторые другие фреймворки так же поступали. jQuery также предоставляет удобную функцию hover
, которая будет очень близка к тому, что вы хотите:
// jQuery
$(".first-nav li a").hover(
function(event) {
// The mouse has entered the element, can reference the element via 'this'
},
function (event) {
// The mouse has left the element, can reference the element via 'this'
}
);
... что на самом деле просто ярлык для настройки обработчиков mouseenter
и mouseleave
, но все же, удивительно лаконично.
В Prototype это очень похоже:
// Prototype
$$(".first-nav li a")
.invoke("observe", "mouseenter", function(event) {
// The mouse has entered the element, can reference the element via 'this'
})
.invoke("observe", "mouseleave", function(event) {
// The mouse has left the element, can reference the element via 'this'
});
(OT: в обоих случаях я использовал выражения анонимных встроенных функций просто для того, чтобы не создавать впечатление, что вы должны использовать именованные функции. Однако я всегда рекомендую использовать именованные функции в рабочем коде.)