开发过程中常常会遇到点击展示大图片的需求,只需要ng-if,popover-backdrop(弹出框) 就可以轻松实现。
html:

<ion-view>
  <ion-content>
    <div class="item item-input-inset">
      <img ng-src="{{faceImages.screenImageUrl}}" ng-click="showBigImage(faceImages.screenImageUrl)">
    </div>
  </ion-content>
</ion-view>

js:

angular.module("app").controller("faceImagesCtrl", ["$scope", "$ionicPopover",
  "$cordovaStatusbar",
  function ($scope, $ionicPopover, $cordovaStatusbar) {
    "use strict";
  
    $scope.bigImagesUrl = "";

    $ionicPopover.fromTemplateUrl(“templates/common/big_image.html”, {
      scope: $scope
    }).then(function (popover) {
      $scope.popover = popover;
    });

    $scope.showBigImage = function (url) {
      $scope.bigImagesUrl = url;
      $scope.popover.show();
      $cordovaStatusbar.hide();
    };

    $scope.hideBigImage = function () {
      $scope.bigImagesUrl = "";
      $scope.popover.hide();
      $cordovaStatusbar.show();
    };
  }]);

弹出框html:

<div ng-if="bigImagesUrl" class="popover-backdrop shade" ng-click="hideBigImage()">
  <img class="bigImage" ng-src="{{bigImagesUrl}}"/>
</div>

css样式:

.shade {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 10;
  width: 100%;
  height: 100%;
}

.bigImage {
  position: absolute;
  top: 20%;
  left: 50%;
  z-index: 10;
  display: block;
  transform: translateX(-50%);
  max-height: 100%;
  max-width: 100%;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.6);
}

也可以运用on-swipe增加左滑右滑切换图片的效果


嘉恩Gavin
98 声望5 粉丝

[链接]