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秒,然后图像才会呈现出来。:)