jquery,隐藏内容直到加载

use*_*818 16 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;
    }

});?
Run Code Online (Sandbox Code Playgroud)

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

所以我需要的是一种方法来隐藏内容,直到它完全加载,只有在它之后让它消失

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

Ste*_*fan 44

默认情况下使用CSS隐藏元素,然后在您喜欢时显示它.

CSS

body {
  display: none;
}
Run Code Online (Sandbox Code Playgroud)

jQuery的

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

当load和所有子元素已完全加载时,load事件将发送到元素.

请参阅load事件.

您也可以考虑用单个类替换"fadeX"类,例如"淡入淡出"

  • css的问题是它必须首先检索styleshiit.所以你必须使用<style>或style ="".否则,在加载styleshiit之前,页面仍将显示,并可能导致错误的闪烁. (4认同)

小智 13

我实际上不会使用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>
Run Code Online (Sandbox Code Playgroud)


And*_*ong 12

为什么不使用... CSS的所有初始CSS?

<head>
<!-- some stuff of yours -->
<style>body{display:none}</style>
</head>
<body>
</body>
Run Code Online (Sandbox Code Playgroud)

然后你的js只需要担心打电话fadeIn().这种方式当浏览器呈现<body>标记时,它已经知道要隐藏它,所以在你fadeIn()调用它之前它根本不会显示.

  • 有时jQuery会让人忽视基本的常识.+1将它带回来. (8认同)