gpt4 book ai didi

javascript - 隐藏元素直到页面完全加载

转载 作者:行者123 更新时间:2023-11-28 17:49:00 24 4
gpt4 key购买 nike

我想要一个普通的 JS 代码,它隐藏所有页面元素(加载微调器除外),直到页面完全加载,然后删除或隐藏加载微调器元素。我的代码在页面加载后隐藏微调器方面做得很好,但我无法完成其他部分。它看起来像这样:

function hideloader() {
document.getElementById("loading").style.display="none";
}
<html>
<head>
<title>My Title</title>
<link href="main.css" rel="stylesheet" type="text/css"/>
<script src="script.js"></script>
</head>
<body onload="hideloader()">
<div id="loading">
<!--All loading spinner design goes here-->
Loading...
</div>
<header>
<!--Header stuff-->
<h1>My Title</h1>
</header>
<p>
<!--Main content-->
My content
</p>
<footer>
<!--footer stuff-->
Footer stuff
</footer>
</body>
</html>
预先感谢您!

最佳答案

一般来说,最好不要这样做,而是设计页面,以便渐进式加载在等待页面其余部分的同时向用户提供一些内容。

但这样做非常简单:只需将主要内容放在一个元素(例如 div)中,该元素上有一个类(例如 hidden),当你想显示它时删除该类:

CSS:

.hidden {
display: none;
}

准备好展示 JavaScript 时:

document.getElementById("content").classList.remove("hidden");

(classList 受所有现代浏览器支持;如果您需要支持旧浏览器,可以对其进行填充,或者,要删除所有类,只需执行 .className = "".)

<小时/>

另一种方法是在加载时向 body 添加一个类,然后在加载期间添加要在加载期间显示/隐藏的各种元素上的类,CSS 如下所示:

body:not(loaded) .hide-for-load {
display: none;
}
body.loaded .hide-after-load {
display: none;
}

然后 .hide-for-load 元素将隐藏,直到您添加类,而 .hide-after-load 元素将在您添加类时隐藏。

从您的页面派生的实时示例:

setTimeout(function() {
document.body.classList.add("loaded");
}, 1000);
body:not(.loaded) .hide-for-load {
display: none;
}
body.loaded .hide-after-load {
display: none;
}
<div id="loading" class="hide-after-load">
Loading<!--All loading spinner design goes here-->
</div>
<header class="hide-for-load">
<!--Header stuff-->
<h1>My Title</h1>
</header>
<p class="hide-for-load">
<!--Main content-->
My content
</p>
<footer class="hide-for-load">
<!--footer stuff-->
Footer stuff
</footer>

关于javascript - 隐藏元素直到页面完全加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46024220/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com