Jquery:悬停时的透明叠加层

时间:2009-12-18 15:29:11

标签: jquery css overlays

基本上我有4个图像,div设置如下:

   <div id="selector">
    <div id="1"><div class="folio_container pk"><div class="overlay"></div></div></div>
    <div id="2"><div class="folio_container ybn"><div class="overlay"></div></div></div>
    <div id="3"><div class="folio_container u"><div class="overlay"></div></div></div>
    <div id="4"><div class="folio_container more"><div class="overlay"></div></div></div>
    <div class="clearfloat"></div>
    </div>

和css:

  .folio_container{margin:10px 80px 10px 15px; float:left; position:relative; cursor:pointer; -moz-border-radius: 8px; -webkit-border-radius: 8px; background-position:top left; background-repeat:no-repeat; width:80px; height: 80px;}
.pk{ background-image:url(../images/pk_icon.png) !important;}
.ybn{ background-image:url(../images/ybn_icon.png) !important;}
.u{ background-image:url(../images/u_icon.png) !important;}
.more{ background-image:url(../images/more_icon.png); margin:10px 0px 10px 15px !important;}

.overlay{ background-image:url(../images/overlay.png); background-position:top left; -moz-border-radius: 8px; -webkit-border-radius: 8px; background-repeat:no-repeat; width:80px; height:80px; position:absolute; top:0px; left:0px; display:none;}

我怎样才能让我的Jquery在每个单独的悬停时覆盖淡化,我总是对这个想法感到困惑,因为div类是相同的,它不会同时触发它们时间?

到目前为止,以下是jquery:

$('.overlay').css('display', 'block');
$('.overlay').css('opacity', 0.0);
$('folio_container', this).hover(function() {
    $(this).children('.overlay', this).stop().animate({opacity:1.0},500);
},
function() {
    $(this).children('.overlay', this).stop().animate({opacity:0.0},500);
});

2 个答案:

答案 0 :(得分:1)

在幕后,jQuery迭代你的选择器匹配的每个div,并将overout函数绑定到每个单独的元素。

顺便说一句,我建议使用两个可选参数调用stop,clearQueue(在函数之间切换时删除任何挂起的动画)和gotoEnd(完成当前动画)设置为true - 这是通常是人们想要的行为! (例如,参见this question。)

答案 1 :(得分:0)

我得到了答案,我从未意识到Jquery足够聪明,只能将动作分别应用于具有相同类的触发器的单独元素!完美:

无论如何,继续jquery!

    $('.overlay').css('display', 'block');
$('.overlay').css('opacity', 0.0);
$('.folio_container').hover(function() {
    $('.overlay', this).stop().animate({opacity:1.0},500);
},
function() {
    $('.overlay', this).stop().animate({opacity:0.0},500);
});