jquery暗淡效果的问题

时间:2009-11-25 14:36:23

标签: jquery

当点击一个小图片并显示一个更大的图像时,我正试图获得暗淡的效果,

 <div id="main_content">
    <div id="press_page">    
       <div id="press_images">
            <img id="s1" class="small" src="images/press/small/press1.jpg" />
            <img id="s2" class="small" src="images/press/small/press2.jpg" />


            <img id="b1" class="big" src="images/press/big/press1.jpg" />

        </div>
      </div>
  </div>




 $(function() {

           $('#s1').click(function() {
                $('#main_wrapper').animate({opacity:0.1},1000);
                $('img.big').animate({opacity:1},1000).css('display','block');
            });

});

问题是大图片出现然后页面变暗,包括大图片,但我需要让页面变暗,然后大图片出现不透明度1,而其他一切都是黑暗的,

任何帮助将不胜感激。

感谢

4 个答案:

答案 0 :(得分:0)

将大图的动画放在调光器的动画功能的回调中,因此在调光发生后就会发生。

$('#main_wrapper').animate({opacity:0.1}, 1000, function () {
  $('img.big').animate({opacity:1},1000).css('display','block');
});

答案 1 :(得分:0)

我认为更好的方法是创建叠加层。类似的东西:

#overlay {
    position: absolute;
    display: none;
    z-index:100;
    top: 0px;
    left: 0px;
    height:100%;
    width:100%;
    background: #000;
}

将它从不透明度0设置为0.8或其他东西,然后在其上方显示大图。

img.big {
    position: absolute;
    z-index: 101;
    top:50%;
    left:50%;
    margin-top: - (height of image / 2)
    margin-left: - (width of image / 2)
}

关于如何将其与一些jQuery交互联系起来,有很多good tutorials

答案 2 :(得分:0)

AFAIK,你不能让父DOM元素具有某种不透明度而不使其子元素也具有不透明度。

您的代码目前将父div的opactiy设置为10%,然后将图像不透明度设置为10%的100% - 即。和其他图像一样。

我认为一个简单的解决方案是在课堂上进行选择。 div中的其他图像有一个名为“small”的类,所以为什么不简单地写:

$(document).ready(function(){

       $('#s1').click(function() {

                    $('.small').animate({opacity:0.1},1000);

            });

    });

答案 3 :(得分:0)

Opacity是为数不多的CSS属性之一,它不会以您期望的方式传播。

最简单的解决方案是仅调整小图像,或移动到其父容器之外的大图像。