【问题标题】:AngularJS: How to preload images at first page start in angularjsAngularJS:如何在 angularjs 的第一页开始预加载图像
【发布时间】:2018-02-20 12:43:02
【问题描述】:

我有一个带有图像 url 的 json 对象,我用ng-repeat 显示这些图像。我的问题是第一次加载页面时图像闪烁。我想显示预加载器(css​​ 微调器)并预加载所有图像,然后应用 ng-repeat。

->Plnkr

【问题讨论】:

标签: angularjs angularjs-ng-repeat


【解决方案1】:

在使用 angular-easy-image-preloader 时很容易做到,就像在这个 demo plnkr 中一样。

查看

<div class="gallery" ng-controller="galleryController">
  <img ng-if="loaded" class="appear" ng-repeat="picture in pictures" ng-src="{{picture}}" alt="">
  <div ng-if="!loaded">
    <div id="preloader-overlay">
        <div id="preloader"></div>
    </div>
  </div>
</div>

AngularJS 控制器

 /* Gallery Controller */
  app.controller('galleryController', function(
      $scope,
      $timeout,
      preloader
    ) {

    $scope.loaded = false;
    $scope.pictures = [
        "http://www.d3d.sk/images/MK2_Granade_full.png",
        "http://www.d3d.sk/images/aberry-logo.jpg",
        "http://www.d3d.sk/images/logo-aberry.png",
        "http://www.d3d.sk/images/Crystal_balls.jpg",
        "http://www.d3d.sk/images/Purple_sun.jpg",
        "http://www.d3d.sk/images/planets.jpg",
        "http://www.d3d.sk/images/d3d.jpg",
        "http://www.d3d.sk/images/bpg-logo.png",
        "http://www.d3d.sk/images/Logo - Bukona.jpg",
        "http://www.d3d.sk/images/sky_up_fire.jpg",
        "http://www.d3d.sk/images/plexus.jpg",
        "http://www.d3d.sk/images/dch.jpg",
        "http://www.d3d.sk/images/Dimonsium-front-a.jpg",
        "http://www.d3d.sk/images/DWTS-3.jpg",
        "http://www.d3d.sk/images/Dwts-redesign-1.png",
        "http://www.d3d.sk/images/diplom.jpg",
        "http://www.d3d.sk/images/Genessis.jpg",
        "http://www.d3d.sk/images/Genessis - logo-final.jpg",
        "http://www.d3d.sk/images/Genessis - logo.jpg",
        "http://www.d3d.sk/images/Goholor.jpg",
        "http://www.d3d.sk/images/iron.jpg",
        "http://www.d3d.sk/images/bg_body3.jpg",
        "http://www.d3d.sk/images/bg_body4.jpg",
        "http://www.d3d.sk/images/lampa-2.png",
        "http://www.d3d.sk/images/MaxEnergy-design.jpg",
        "http://www.d3d.sk/images/North-first-2.jpg",
        "http://www.d3d.sk/images/North Side Dres - ver 1c.jpg",
        "http://www.d3d.sk/images/oznamko-16.jpg",
        "http://www.d3d.sk/images/oznamko-17.jpg",
        "http://www.d3d.sk/images/Verzia4e.jpg",
        "http://www.d3d.sk/images/Svk-dres.jpg",
        "http://www.d3d.sk/images/Rool-up04bc.jpg",
        "http://www.d3d.sk/images/Senica-letak-maly.jpg",
        "http://www.d3d.sk/images/Merkur - dizajn - 4.jpg",
        "http://www.d3d.sk/images/Trades-world-2.jpg",
        "http://www.d3d.sk/images/web-1.jpg",
        "http://www.d3d.sk/images/web-3.jpg",
        "http://www.d3d.sk/images/web-5.jpg",
        "http://www.d3d.sk/images/web-7.jpg",
        "http://www.d3d.sk/images/web-8.jpg",
        "http://www.d3d.sk/images/web-10.jpg",
        "http://www.d3d.sk/images/web-11.jpg",
        "http://www.d3d.sk/images/vizitka.jpg"
      ];

    preloader.preloadImages($scope.pictures).then(function() {
         $scope.loaded = true;
    },function() {
        console.log('failed');
        // Loading failed on at least one image.
    });
  });

【讨论】:

  • 谢谢它的帮助,但是有没有机会保留我在图像上的 css 动画?图像应该淡入并放大。样式:.appear.ng-enter .appear.ng-enter.ng-enter-active
  • @DuFuS 一次全部还是一张一张?
  • All at onece : like here : d3d.sk (但您必须在首次加载后使用 f5 刷新以消除闪烁和看到动画)
  • @DuFuS 工作正常。只需将ng-if 移动到图像元素本身中,就像在这个演示中一样plnkr.co/edit/3xqUPo?p=preview 你可能会接受这个答案吗?一旦 Angular 1.6.4 的错误得到修复,我将更新这个答案。
  • 非常感谢。它也适用于 angularjs 1.6.4。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-10
  • 2013-07-07
  • 2016-01-06
  • 1970-01-01
相关资源
最近更新 更多