.fadeIn()和.fadeOut()的用法

时间:2014-05-20 20:57:15

标签: javascript jquery

我有以下javascript代码:

$(window).scroll(function () {
    if ($(window).scrollTop() > 250) { 
        $('#logoheader').css("opacity", 1);
    }
    else{
        $('#logoheader').css("opacity", 0);
    }
});

这使我可以在滚过横幅后显示徽标。然而,这是一个冷硬的外观。我想让这一点更顺利,因此我尝试使用.fadeIn().fadeOut()但是我无法使其工作。有没有快速简便的方法来做到这一点?注意,由于兼容性问题,我无法使用CSS动画。

8 个答案:

答案 0 :(得分:3)

JS:

$(window).scroll(function () {
    if ($(window).scrollTop() > 250) { 
        $('#logoheader').fadeIn('slow');
    }
    else{
        $('#logoheader').fadeOut('slow');
    }
});

CSS(添加CSS仅用于显示功能,display:none;是您实际需要的唯一功能):

#logoheader {
    display:none;
    height:100px;
    background:#000;
    color:#fff;
}

JSFiddle

答案 1 :(得分:0)

如果您想要更顺畅的内容,请尝试使用:.fadeIn('slow').fadeIn('medium')

它也适用于.fadeOut()

答案 2 :(得分:0)

您可以在jquery

中设置show方法的持续时间
$('#logoheader').show('slow');

有关详细信息:http://api.jquery.com/show/

答案 3 :(得分:0)

fadeIn()/ fadeOut()设置要在outfading之后显示的元素:none。如果你不想淡入一个没有显示的元素,那么函数就会失败。解决方法是在fadeIn()之前使用.hide()元素,但更多的方法是在CSS中设置display:none

解决方法:

$(window).scroll(function () {
    $('#logoheader').hide(); //same as display:none in css
    if ($(window).scrollTop() > 250) { 
        $('#logoheader').fadeIn();
    }
    else{
        $('#logoheader').fadeOut();
    }
});

答案 4 :(得分:0)

$(window).scroll(function () {
    if ($(window).scrollTop() > 250) { 
        $('#logoheader').fadeIn();
    }
    else{
        $('#logoheader').fadeOut();
    }
});

如上所述,问题出在您的CSS中,您必须将#logoheader设置为display: none而不是opacity: 0

答案 5 :(得分:0)

这项工作很好http://jsfiddle.net/xtatanx/E9ZLm/1/可能你忘记删除不透明度:0;在你的CSS中。

$(window).scroll(function () {
    if ($(window).scrollTop() > 250) { 
        $('#logoheader').fadeIn();
    }
    else{
        $('#logoheader').fadeOut();;
    }
});

CSS

.fixedheight{
    height:800px;
    width:100%;
    background:blue;
    position:relative;
}
#logoheader{
    position:absolute;
    top:250px;
    left:0;
    background:red;
    width:100%;
    height:100px;
    **display:none;**
}

请注意display:none;

答案 6 :(得分:0)

改进了@ APAD1解决方案:

var $target = $('#logoheader'); // declare it only one time

// it's a good idea check if the $target is already visible before force to show
// something that is already shown (and vice versa)

$(window).scroll(function () {
    if ( $(window).scrollTop() >= 250 && !$target.is(':visible') ) { 
        $target.fadeIn('slow');
    }
    else if( $(window).scrollTop() < 250 && $target.is(':visible') ){
        $target.fadeOut('slow');
    }
});

check jsFiddle

答案 7 :(得分:0)

您可以使用相同的代码,只使用CSS转换

#logoheader{
   transition:opacity 1s ease;
   -moz-transition:opacity 1s ease; 
   -webkit-transition:opacity 1s ease; 
   -o-transition:opacity 1s ease; 
   -ms-transition:opacity 1s ease; 
}

多数民众赞成......

http://jsfiddle.net/vjSHL/