在图像加载时显示加载图标

新手上路,请多包涵

我想在 div 中显示一个背景图像/加载微调器 --- 它将在其中加载一个图像,图像将在完全加载后显示,执行如下操作:

    <div style="background-image:url('imageThatWillAppearBeforeLoad')"></div>

演示(在 jQuery 中)

我怎样才能使用 Angular2/Ionic2 获得相同的结果?

原文由 Folky.H 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 637
2 个回答

创建一个组件,该组件在加载请求的图像之前显示占位符图像,并隐藏请求的图像。加载图像后,隐藏占位符并显示图像。

 @Component({
  selector: 'image-loader',
  template: `<img *ngIf="!loaded" src="url-to-your-placeholder"/>
    <img [hidden]="!loaded" (load)="loaded = true" [src]="src"/>`
})
export class ImageLoader {
  @Input() src;
}

看到它在 Plunker 中工作。

更新

现在我更好地理解了需求,这里有一个带有背景图像的解决方案。有点乱,我更喜欢原版的……

 @Directive({
  selector: '[imageLoader]'
})
export class ImageLoader {
  @Input() imageLoader;

  constructor(private el:ElementRef) {
    this.el = el.nativeElement;
    this.el.style.backgroundImage = "url(http://smallenvelop.com/demo/image-loading/spinner.gif)";
  }

  ngOnInit() {
    let image = new Image();
    image.addEventListener('load', () => {
      this.el.style.backgroundImage = `url(${this.imageLoader})`;
    });
    image.src = this.imageLoader;
  }
}

更新了 plunker

原文由 Yaron Schwimmer 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是我的 一篇帖子 的副本

我终于用 CSS 解决了这个问题!当图像在 ionic 2 中加载时,ion-img 标签没有任何类。然而,当图像最终加载时,ion-img 标签获得类“img-loaded”。

这是我的解决方案:

   <ion-img [src]="img.src"></ion-img>
  <ion-spinner></ion-spinner>

还有我的 CSS:

 .img-loaded + ion-spinner {
  display:none;
}

原文由 glemiere 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题