如何让我的加载屏幕停止并进入我的主页?

How do I make my loading screen stop and go into my main page?

如何让我的加载屏幕停止,然后进入主页或我的网站?

同时在此处更新代码:

// begin snippet: js hide: false console: true babel: false

//语言:lang-css

.navbar__link {
  position: static;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  padding: 15px;
  margin: 20px 0;
  border-radius: 10px;
  background: #ffffff;
  color: #000000;
  border-bottom: 1px solid #ffffff;
  display: flex;
  text-align: center;
  display: inline-block;
  padding: 20px;
}


}
// you don't need to add class to a tag, it can be selected by following way
.navbar>a {
  text-decoration: none;
  padding: 15px;
}
.header {
  display: flex;
  // make the header take all space of body
  width: 100%;
}
.navbar {
  display: flex;
  // make navbar take all space that remains after the logo
  flex: 1;
  justify-content: center;
  // make the navbar move left side else it will not be in complete middlle
  transform: translate(-100px);
}
* {
  margin: 0;
  padding: 0;
}
.loading-screen {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  background-color: #f5f5f5;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
}
.logo {
  width: 48px;
  height: 48px;
}
.loading-bar {
  width: 130px;
  height: 2px;
  background: #ffffff;
  margin-top: 22px;
  position: relative;
  overflow: hidden;
}
.loading-bar::before {
  content: '';
  width: 68px;
  height: 2px;
  background: #000000;
  position: absolute;
  left: -34px;
  animation: blackbar 1.5s infinite ease;
}
@keyframes blackbar {
  50% {
    left: 96px;
  }
}
<header>
  <div style="float: left; padding-right: 10px;">
    <a href="/"><img width='200' height='50' src='Icons/logo home.png' /></a>
  </div>
  <div class="navbar" style="justify-content: center;">
    <a href="discovery.html" class="navbar__link">
      <span class="material-icons">whatshot</span>
    </a>
    <a href="profile.html" class="navbar__link">
      <span class="material-icons">person_outline</span>
    </a>
  </div>

  <!-- Loading Screen -->

  <div class="loading-screen">
    <div class="loading-animation">
      <?xml version="1.0" encoding="UTF-8" standalone="no"?>
      <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
      <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="90px" height="90px" viewBox="0 0 90 90" enable-background="new 0 0 90 90" xml:space="preserve">  <image id="image0" width="90" height="90" x="0" y="0"
              xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaAQAAAAAQ03yvAAAABGdBTUEAALGPC/xhBQAAACBjSFJN
          AAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAAAmJLR0QAAd2KE6QAAAAJcEhZ
          cwAACxMAAAsTAQCanBgAAAAHdElNRQfkBwsBJxoCRYkNAAAAmElEQVQ4y2P4jwAHGEY5w5zzhx2J
          8xPO3n+A4TMq5/CP2vYPFfZMzCCO5XOb4vPf54Bkfv6veT/n9/3/d0CcP3Y15+f+ng/h/OdjOCAL
          5NyzB3GO1Z//+3v+D3l+EOcZmPP4/mME5/n9zyDOc/vnf3/ffz4fxPl+3u753d/nn8/9PP8Awwf5
          Az9kf38oiOE/PBjCbZRDNw4Awv38T7O+5eEAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjAtMDctMTFU
          MDE6Mzk6MjYrMDM6MDDkTb6MAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIwLTA3LTExVDAxOjM5OjI2
          KzAzOjAwlRAGMAAAAABJRU5ErkJggg==" />
          </svg>
      <div class="loading-bar"></div>
    </div>
  </div>

</header>

JS:

function handlePageLoaded(){
  document.getElementsByClassName("loading-screen")[0].style.display = "none";
}

更新将在下面进行:

更新 1:None 他们工作 :(.

遗憾的是,所有 3 个答案均无效,由于某些奇怪的原因,它不会重定向到该页面。但我们会继续努力:D!

更新 2:仍然无效。我尝试了 JS 并尝试将 class 更改为 id 但它坏了所以我把它放回 class :(.

你们也可以更改代码。

更新 4:我尝试了所有方法,但遗憾的是它们无法正常工作,但我认为这与代码有关,因为它不会加载到站点中,它只是卡在加载中。

更新5:想看代码的请更新codepen。还是不行:(.

[已修复]

要检查您的页面是否已完全加载,请使用 document.readyState === "complete"window.onload

document.readyState 具有三个可能的值 loadinginteractivecomplete.

loading: 正在加载文档。

interactive: 文档已完成加载,但图像、样式表和框架仍在加载中。

complete: 文档已完全加载,包括。

js:

// check if page is loaded 
if(document.readyState === "complete") {
  // make loading screen go away
  document.getElementById('loading').style.display = none
}

这不会重定向,但您应该尽量避免重定向,因为它会使页面速度更快,并给网站带来更好的整体感觉和体验(再加上重定向会破坏加载屏幕的目的)。

别忘了给 loading-screen 添加一个 id 属性 div 这样你就可以在 js 中定位元素了。

您可以处理使用 window.onload 加载的页面。 我们可以在这里分配一个函数,在加载页面时隐藏您的加载器。

window.onload = () => {
    const loader = document.querySelector('.loading-screen');
    loader.style.display = 'none';
}

或者如果您需要重定向到另一个页面,您可以这样做

window.onload = () => {
    window.location.replace("somethingAmazing.html")
}

如果您希望它有延迟(假设页面加载速度很快,但您希望动画需要 3 秒,并且希望它在移动到内容之前播放完整),让我们试试这个:

window.onload = setTimeout(() => {
    window.location.replace("somethingAmazing.html")
}, 3000)

您可以将 3000 更改为您希望它等待的毫秒数

您可以执行以下操作:

1.In 你的 <body /> 标记:

<body onload="handlePageLoaded()">
 ...
</body>

2.In 你的 javascript 文件:

function handlePageLoaded(){
  document.getElementsByClassName("loading-screen")[0].style.display = "none";
}

函数 handlePagaLoaded 将在正文页面完全加载后调用。

在这种情况下,我建议您使用 id 而不是 class 作为加载屏幕。

在这种情况下,函数将是:

function handlePageLoaded(){
      document.getElementById("loading-screen").style.display = "none";
    }

您也可以使用 document.getElementById("loading-screen").style.visibility= "hidden";,因为您的“加载屏幕”position 已修复。

希望对您有所帮助!