jquery,隐藏内容直到加载

时间:2012-03-16 08:28:54

标签: jquery

我目前正在使用此脚本淡化页面转换:

$(document).ready(function() {

    $(window).bind("unload", function() {});
    $("body").css("display", "none");

    $("body").hide();

    $("body").fadeIn(2000);

    $('a.fade1, a.fade2, a.fade3, a.fade4').click(function(event) {
        event.preventDefault();
        linkLocation = this.href;
        $("body").fadeOut(700, redirectPage);
    });

    function redirectPage() {
        window.location = linkLocation;
    }

});​

当内容在缓存中变为现实时,这就像一个魅力,但是当图像需要加载时,它会暂时出现然后被隐藏和淡入

所以我需要的是一种隐藏内容直到它完全加载的方式,只有在它之后才能让它褪色

希望有人可以帮助我,提前谢谢

5 个答案:

答案 0 :(得分:43)

默认使用CSS隐藏元素,然后在您喜欢的时候显示它。

<强> CSS

body {
  display: none;
}

<强>的jQuery

$(window).load(function() {
  // When the page has loaded
  $("body").fadeIn(2000);
});
  

当load元素和所有子元素都有时,load事件被发送到元素   已完全装满。

请参阅load event

你也可以考虑用一个类替换你的“fadeX”类,比如“fade”

答案 1 :(得分:12)

为什么不使用... CSS?

来放置所有初始css
<head>
<!-- some stuff of yours -->
<style>body{display:none}</style>
</head>
<body>
</body>

然后你的js只需要担心调用fadeIn()。这种方式,当浏览器呈现<body>标记时,它已经知道要隐藏它,因此在调用fadeIn()之前它将不会显示。

答案 2 :(得分:10)

我实际上不会使用CSS开始,这就是原因。如果由于某种原因JS无法在页面上加载,它也将无法实际显示您的页面内容。我将所有内容保存在脚本中并写入DOM,因此如果失败,则不会发生任何事情。

<script>
document.write('<style>body { visibility: hidden; } </style>');
</script>

<script type="text/javascript">
jQuery(document).ready(function(){
    delay();
});

function delay() {
    var secs = 1000;
    setTimeout('initFadeIn()', secs);
}

function initFadeIn() {
    jQuery("body").css("visibility","visible");
    jQuery("body").css("display","none");
    jQuery("body").fadeIn(1200);
}
</script>

答案 3 :(得分:3)

每张图片的CSS:visibility:hidden;

jQuery.ready:visibility:visible; (或使用淡化或任何你喜欢的)。 为什么visibility而不是'显示'?当项目开始加载时,display会在页面上产生很多“跳跃”和“故障”。

此外,您可以尝试使用jQuery's load method代替ready

答案 4 :(得分:3)

因为是2021年,所以想提示一下,现在需要这样写代码,以免出错:

css

body {
  display: none;
}

JQuery

$(window).on('load', function(){
  // When the page has loaded
  $("body").fadeIn(2000);
});