Это проще всего сделать с помощью переходов css3, таких как:
li{
width: 572px;
height: 20px;
padding: 4px 14px 0px 14px;
background: url('../images/black_op30.png');
background: rgba(0,0,0,0.3);
border-bottom: 1px solid #2f2f2f;
-moz-transition: background 1s;
-webkit-transition: background 1s;
-o-transition: background 1s;
-ms-transition: background 1s;
transition: background 1s;
}
li:hover{
background: url('../images/white_op2.png') repeat;
background: rgba(255,255,255,0.02);
}
Обратите внимание, что происходит переход между версиями прозрачных цветов в rgba. Вы можете добиться того же с jQuery, но это намного сложнее и не будет анимироваться так же гладко. Кроме того, исчезновение между прозрачными цветами и rbga в IE невозможно, и с этой техникой IE будет работать нормально и просто не будет исчезать (это возвращается к вашим файлам .png, где rgba не поддерживается).
IE поддерживаемый метод, (приготовьтесь):
<li id="wrap">
<div id="content">
Content
</div>
<div id="fade-1"></div>
<div id="fade-2"></div>
</li>
CSS
#content, #fade-1, #fade-2{
width: 572px;
height: 20px;
padding: 4px 14px 0px 14px;
position: absolute;
}
#content{
z-index: 3;
}
#wrap{
position:relative;
width: 600px;
height: 24px;
}
#fade-1{
background: url('../images/black_op30.png');
background:transparent url(../images/black_op30.png);filter:progid:DXImageTransform.Microsoft.AlphaImageLoader»(src='../images/black_op30.png',sizingMethod='scale');
background: rgba(0,0,0,0.3);
border-bottom: 1px solid #2f2f2f;
z-index: 1;
}
#fade-2{
display:none;
background: url('../images/white_op2.png') repeat;
background:transparent url(../images/white_op2.png);filter:progid:DXImageTransform.Microsoft.AlphaImageLoader»(src='../images/white_op2.png',sizingMethod='scale');
background: rgba(255,255,255,0.02);
border-bottom: 1px solid #2f2f2f;
z-index: 2;
}
JS:
$('#wrap').hover(function(){
$('#fade-1').stop().fadeOut();
$('#fade-2').stop().fadeIn();
}, function(){
$('#fade-1').stop().fadeIn();
$('#fade-2').stop().fadeOut();
});
http://www.webmasterworld.com/forum83/7828.htm
http://api.jquery.com/hover/
http://api.jquery.com/stop/
http://api.jquery.com/fadeOut/
http://api.jquery.com/fadeIn/
Однако этот метод все равно будет давать худшие результаты, чем метод CSS3 во всех других браузерах, поэтому в идеале вы должны использовать оба и управлять HTML, CSS и JS с помощью оператора if для обнаружения IE. Кроме того, IE9 поддерживает rgba, но не переходы, поэтому для сценария с лучшим из всех миров у вас будет версия IE для ie6-8, версия с использованием цветового плагина jQuery:
http://www.bitstorm.org/jquery/color-animation/
для IE9 и простой CSS3 для всех остальных браузеров.
ИЛИ вы можете сказать: «Эй, кросс-фэйды не так важны для моего дизайна, это нормально, если пропустят те, кто не обновил свой браузер». Что я настоятельно рекомендую.