用jquery淡出整个页面

Posted

技术标签:

【中文标题】用jquery淡出整个页面【英文标题】:Fading out a whole page with jquery 【发布时间】:2013-10-24 05:15:34 【问题描述】:

所以,当用户转到我网站的另一个部分时,我试图淡出页面。在阅读了一些关于堆栈溢出的内容后,我编写了以下代码。但它看起来很混乱/丑陋。是否有适当的方法来淡出网页,或者这一切都是 hacky?看来(目前)我的页面在有机会褪色之前就被丢弃了。

<link rel="stylesheet" href="http://www.catlard.com/styles/body.css" type="text/css"/>
<link rel="icon" href="http://www.catlard.com/caticon.ico" />
<link rel="shortcut icon" href="http://www.catlard.com/caticon.ico?v=2" />
<script src="http://code.jquery.com/jquery-latest.min.js" charset="utf-8"> </script>
<script type="text/javascript">
    $(document).ready( function()
        $("html").hide();
        $("html").delay(250).fadeIn();  
        $(window).unload(function () 
            $("html").fadeOut();
        );
    );
</script>

【问题讨论】:

浏览器会在动画完成之前转储页面(在大多数情况下)。 $(document).ready( function() $("html").hide(); 你想在任何人看到之前隐藏页面吗? $(document).ready 将在其他内容加载时发生,所以我猜现在你可能会看到页面加载一秒钟,然后闪烁消失,然后淡入?如果是这样,您可能想在加载之前使用display:none,而不是使用$("html").hide(); 嗯,我现在没有看到这种闪烁,但它会发生似乎是合理的。但更紧迫的问题:would not display:none 只会导致非 jquery 快乐的计算机看不到我的网站? 【参考方案1】:

document"html" 使用fadeOut() jQuery 函数:

$(document).fadeOut();

$("html").fadeOut();

在阅读了您的 cmets 后,我了解到您希望在单击链接时淡出页面。

不要使用$(window).unload,而是检测链接上的点击事件并手动设置位置以防止默认浏览器行为。

// delegate all clicks on "a" tag (links)
$(document).on("click", "a", function () 

    // get the href attribute
    var newUrl = $(this).attr("href");

    // veryfy if the new url exists or is a hash
    if (!newUrl || newUrl[0] === "#") 
        // set that hash
        location.hash = newUrl;
        return;
    

    // now, fadeout the html (whole page)
    $("html").fadeOut(function () 
        // when the animation is complete, set the new location
        location = newUrl;
    );

    // prevent the default browser behavior.
    return false;
);

【讨论】:

好的,所以,我试过把它放进去,但它在卸载之前就转储了页面。您可以按原样查看我的页面 - www.catlard.com - 例如,当您单击“教学”部分时,它不起作用。有什么办法可以让它工作吗?我已经更新了上面的代码以反映您的答案。 @CaTLard 我已经更新了我的答案。使用$(document).on("click", "a" handler) 而不是unload 你发布的代码很神奇,解决了我所有的问题。我会努力理解的!我认为有几件事我还不明白......其中大部分围绕着我不知道哈希是什么,或者位置对象是什么。我可能很容易弄清楚。但是你能解释一下为什么 return false 会阻止默认的浏览器行为吗?这只是 jQuery 中 .on() 函数的一部分吗?非常感谢! @CaTLard 好。请参阅代码中的 cmets,对于 return false; 部分,请参阅 this topic。例如,如果您从这段代码中删除return false;,浏览器将直接加载新页面(新链接),并且淡出效果将消失。这就是我们在这里使用它并从 js 端设置新位置的原因。 return false; 也用于通过 ajax 提交表单(无需重新加载页面)。在链接问题的答案中阅读更多信息。 :-) 如果您有任何问题,请尽管提出。

以上是关于用jquery淡出整个页面的主要内容,如果未能解决你的问题,请参考以下文章

jQuery实现简单的图片淡出淡出效果

在 css jQuery 中应用淡入淡出到粘性导航的过渡淡入淡出

背景图像不透明度淡出整个元素

在页面加载时,使用 jQuery 淡入淡出一个又一个 div

平滑图像淡出,改变src,用jquery淡入

淡入淡出效果 (jQuery)