Примечание: я создал и протестировал свое решение через Firebug, чтобы работать по предоставленной вами ссылке. Если вы выполните эти шаги по порядку, у вас должно быть все это работает
Вы не сможете анимировать от transparent
до цвета, за исключением Safari и Firefox 3.5 и других браузеров, которые поддерживают цвета фона RGBA. Если вы ищете кросс-браузерную поддержку, я бы напал на проблему следующим образом:
1. Установите для ваших эффектов наведения по умолчанию область действия, отличную от класса js, поэтому эффекты :hover
будут работать как запасной вариант. Отличный способ сделать это следующим образом:
<html class="no-js">
<head>
.... meta, title, link tags ...
<script type="text/javascript">document.documentElement.className = "js";</script>
.... other scripts ...
</head>
Это изменит no-js
на js
еще до того, как страница отобразится.
2. Используйте jQuery для добавления фиктивных элементов рядом с вашими тегами a
(js
для добавления фиктивного элемента на шаге 3)
Вот CSS для использования:
.js .iconrow { background: none !important } /* Hide current hover effect */
.iconfader {
position: absolute;
display: block;
left: 0;
top: 0;
width: 100%;
height: 100%;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
background-color: #ccc;
z-index: 5;
}
.iconrow { position: relative } /* Spans are absolute, need the parent to be relative */
.iconrow a { position: relative; z-index: 10} /* Needs to sit on top */
3. Появление и уменьшение нового фиктивного элемента на mouseenter
и mouseleave
$('.iconrow').each(function(){
var $span = $("<span class='iconfader'></span>").css('opacity',0.0).appendTo(this);
$(this).hover(function(){
$span.stop().animate({opacity: 0.8}, 200);
}, function(){
$span.stop().animate({opacity: 0.0}, 200);
});
});
Наконец, будьте осторожны, если вы решите использовать фоновое изображение вместо сплошного цвета. IE7 и IE8 не могут изменять непрозрачность 24-битных файлов PNG. Это полностью портит прозрачность.