in angular 5 如何在子组件加载所有图像之前制作启动画面?
in angular 5 how to make splash screen till the child component load all images?
我使用 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>
page.component.ts
ngOnInit() {
function splash() {
console.log('tttttttttttttttttttttttttttttttttttttttttt');
document.getElementById('splash').style.display = 'none';
document.getElementById('window').classList.add('window-animation');
}
window.onload = splash;
}
不要在 ngOnInit
上隐藏启动画面。而是这样做:
记录您在控制器中显示的图像数量。
totalImages = 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');
}
}
在 属性 上设置一个带有 *ngIf 的 div,只有在加载图像时才会变为真。
<div class="splash" *ngIf="!loaded"></div>
<img [src]="img" (load)='loaded=true'>
我使用 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>
page.component.ts
ngOnInit() {
function splash() {
console.log('tttttttttttttttttttttttttttttttttttttttttt');
document.getElementById('splash').style.display = 'none';
document.getElementById('window').classList.add('window-animation');
}
window.onload = splash;
}
不要在 ngOnInit
上隐藏启动画面。而是这样做:
记录您在控制器中显示的图像数量。
totalImages = 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');
}
}
在 属性 上设置一个带有 *ngIf 的 div,只有在加载图像时才会变为真。
<div class="splash" *ngIf="!loaded"></div>
<img [src]="img" (load)='loaded=true'>