javascript - 在 Angular 5 中如何制作闪屏直到子组件加载所有图像?

标签 javascript jquery angular user-experience

我使用 Angular 5 来显示包含大量高分辨率图像的页面,但加载时间太长。 我想做的是制作一个闪屏,一个覆盖全屏的div,在所有图像加载完成后它将消失。 在 Angular 5 中如何以及在哪里实现它?

window.onload = someFunction; // is not working well

page.component.html:

<div id="page" class="page">
<div id="splash"></div>
<div id="home-page">
    <div class="container  d-none d-lg-block">
        <img src="assets/images/home/line_with_bird.png" alt="">
        <div class="row">
            <div class="col-3 ad-paper">
                <img src="assets/images/home/paper.png" class="" alt="">
            </div>
            <div class="col-2">
                <img id="arrow-word" src="assets/images/arrow_word.png" alt="">
                <img id="ladder" src="assets/images/ladderLong.png" alt="">
            </div>
            <div class="col-6 offset-1 c2">
                <div id="window"></div>
                <div class="smicos">
                    <app-socialmedia style="width: 641px;"></app-socialmedia>
                </div>
            </div>
        </div>
    </div>
</div>

页面.组件.ts

ngOnInit() {
    function splash() {
        console.log('tttttttttttttttttttttttttttttttttttttttttt');
        document.getElementById('splash').style.display = 'none';
        document.getElementById('window').classList.add('window-animation');
    }

    window.onload = splash;
}

最佳答案

不要在 ngOnInit 上隐藏启动屏幕。相反,这样做:

记录您在 Controller 中显示的图像数量。

总图片数 = 20;

在每个图像上保留一个加载处理程序;

<img (load)='checkAllLoaded()'>

checkAllLoaded函数中,检查是否所有图像都已加载:

checkAllLoaded() {
  this.totalImages = this.totalImages - 1;
  if(this.totalImages === 0) {
     document.getElementById('splash').style.display = 'none';
     document.getElementById('window').classList.add('window-animation');
  }
}

关于javascript - 在 Angular 5 中如何制作闪屏直到子组件加载所有图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49836007/

相关文章:

javascript - 用于检索文本的条件正则表达式

javascript - NodeJS fs.readdir - 将回调内部作为对象返回?

javascript - 使用javascript增加html十六进制字符代码

jquery - jqGrid 4.8.2 columnChooser完成后网格宽度发生变化

css - Angular 动态 css #

angular - 路由器导航使用 CreateUrlTree

angular - Angular 7 中的 SCSS 加载顺序

javascript - FCM 服务工作线程 setBackgroundMessageHandler

jQuery:事件冒泡以及 "click"、 "live.click"、 "stopPropagation"和 "return false"如何协同工作

javascript - 我的 jQuery 点击事件只工作一次