Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在所有图像准备好显示后显示网站_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 在所有图像准备好显示后显示网站

Javascript 在所有图像准备好显示后显示网站,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我用这段代码来动画整个网站的不透明度 HTML <body> <script>document.body.className += ' fade-out';</script> ... </body> JS $(function(){ $('body').removeClass('fade-out'); }); CSS: body{ transition:1s all; } body.fade-out

我用这段代码来动画整个网站的不透明度

HTML
<body>
        <script>document.body.className += ' fade-out';</script>
...
</body>

JS
$(function(){
            $('body').removeClass('fade-out');
});

CSS:
body{
  transition:1s all;
}
body.fade-out {
    opacity: 0;
    transition: none;
}
HTML
document.body.className+=“淡出”;
...
JS
$(函数(){
$('body').removeClass('fade-out');
});
CSS:
身体{
过渡:1s全部;
}
衰减{
不透明度:0;
过渡:无;
}
以这支钢笔为例:

这会使网站不透明度动画化,但不会等待所有图像都准备好显示。整个网站正在改变不透明度,然后图像跳入。一点也不好。这仅在网站第一次加载时发生


我想在图像准备好显示时触发躯干不透明度动画。window.onload似乎不是正确的位置。您将如何做到这一点?

将您的jQuery代码包装在:

$(window).on("load", function() {
});
不要使用
$(document.ready()

未加载图像时,DOM也已准备就绪。一旦完成图像下载,将触发加载。 因此,在你的情况下:

$(window).on("load", function() {
  $('body').removeClass('fade-out');
});

这应该可以满足您的需要

将jQuery代码包装在其中:

$(window).on("load", function() {
});
不要使用
$(document.ready()

未加载图像时,DOM也已准备就绪。一旦完成图像下载,将触发加载。 因此,在你的情况下:

$(window).on("load", function() {
  $('body').removeClass('fade-out');
});

这应该满足您的要求

您可以创建一个函数来预加载图像。然后,一旦每个类都加载完毕,就可以删除该类

const images = ['https://pbs.twimg.com/media/C7gflT8XUAAhsHm.jpg'];

function loadImg(img) {
  return new Promise((resolve, reject) => {
    const imgEl = document.createElement('img');
    imgEl.addEventListener('load', () => {
      resolve();
    });
    imgEl.src = img;
  });
}

function loadAll(imageArr) {
  const promises = imageArr.map(img => loadImg(img));
  Promise.all(promises).then(() => {
    document.querySelector('body').classList.remove('fade-out');
  });
}

loadAll(images);

您可以创建一个函数来预加载图像。然后,一旦每个类都加载完毕,就可以删除该类

const images = ['https://pbs.twimg.com/media/C7gflT8XUAAhsHm.jpg'];

function loadImg(img) {
  return new Promise((resolve, reject) => {
    const imgEl = document.createElement('img');
    imgEl.addEventListener('load', () => {
      resolve();
    });
    imgEl.src = img;
  });
}

function loadAll(imageArr) {
  const promises = imageArr.map(img => loadImg(img));
  Promise.all(promises).then(() => {
    document.querySelector('body').classList.remove('fade-out');
  });
}

loadAll(images);

我认为setTimeout将是一个不错的选择:

$(function(){
            $('body').setTimeout(removeClass('fade-out'), 3000);
});

这将延迟淡出3秒

我认为设置超时将是一个不错的选择:

$(function(){
            $('body').setTimeout(removeClass('fade-out'), 3000);
});

这将使淡出延迟3秒

如果网速较慢,您会猜到它们的速度吗?图像可能不会在3秒后全部加载。您如何确定设置延迟?这叫做测试,直到你得到想要的结果result@OlegMarkoff问题是,不同的人会在不同的数量后加载。有些人的上网时间是5秒——但这并不意味着你希望每个人都等5秒,然后图像才会呈现出来。:)如果网速太慢,你会猜到它们的速度吗?图像可能不会在3秒钟后全部加载。你怎么知道设置延迟?这叫做测试,直到你得到想要的结果result@OlegMarkoff问题是,不同的人会在不同的数量后加载。有些人的上网时间是5秒——但这并不意味着你希望每个人都等5秒,然后图像才会呈现出来。:)