2014-04-19 11 views
13

Gram z modularnym interfejsem ui. Zastanawiam się, w jaki sposób ją wyśrodkować? Znalazłem podobne pytanie: Twitter Bootstrap - Center Modal DialogCenter Angular modalny ui

, ale nie udało mi się sprawić, aby działało, ponieważ jestem raczej nowy w kanciastości. Tutaj jest uproszczoną wersją plunker dla modalnego okna dialogowego z kątowym stronie elementów interfejsu:

http://plnkr.co/edit/M35rpChHYThHLk17g9zU?p=preview

<script type="text/ng-template" id="myModalContent.html"> 
     <div class="modal-header"> 
      <h3>I'm a modal!</h3> 
     </div> 
     <div class="modal-body"> 
      test 
     </div> 
     <div class="modal-footer"> 
      <button class="btn btn-primary" ng-click="ok()">OK</button> 
      <button class="btn btn-warning" ng-click="cancel()">Cancel</button> 
     </div> 
    </script> 

    <button class="btn btn-default" ng-click="open()">Open me!</button> 

JS:

angular.module('plunker', ['ui.bootstrap']); 
var ModalDemoCtrl = function ($scope, $modal) { 

    $scope.open = function() { 

    var modalInstance = $modal.open({ 
     templateUrl: 'myModalContent.html', 
     controller: ModalInstanceCtrl 
    }); 

    }; 
}; 


var ModalInstanceCtrl = function ($scope, $modalInstance) { 

    $scope.ok = function() { 
    $modalInstance.close("ok"); 
    }; 

    $scope.cancel = function() { 
    $modalInstance.dismiss("cancel"); 
    }; 
}; 

Mój pomysł jest do podjęcia wymiary strony dynamicznie kiedy modal jest otwarty i zmienia jego rozmiar, i centruje go, ale nie jestem pewien, jak mogę to zrobić, ponieważ jestem dość nowy w angularjs. Każda pomoc z roboczym przykładem zostanie bardzo doceniona.

+0

http://stackoverflow.com/a/25160044/900284 –

Odpowiedz

27

Można określić klasę stylu dla modalnego okna za pomocą atrybutu windowClass podczas tworzenia modalInstance

var modalInstance = $modal.open({ 
     templateUrl: 'myModalContent.html', 
     controller: 'ModalInstanceCtrl', 
     windowClass: 'center-modal' 
    }); 

następnie w css można określić definicję .center blokami jak,

.center-modal { 
    position: fixed; 
    top: 10%; 
    left: 18.5%; 
    z-index: 1050; 
    width: 80%; 
    height: 80%; 
    margin-left: -10%; 
} 

lub określ wszystko w zależności od potrzeb

+6

Przykładowy plik css rzeczywiście przeniesie okno dialogowe modalne, ale przełamie zachowanie "kliknij, aby otworzyć okno dialogowe", zmieniając/przesuwając opakowanie modalne wokół okna dialogowego także. Kierowanie na dialog .modal, jak opisano w http://stackoverflow.com/a/21312755, pozwoli uniknąć tego problemu. – mygzi

+0

@ M22an: Czy istnieje sposób na dynamiczną zmianę "windowClass", gdy modalny jest otwarty? –

+0

@me_digvijay, może możesz spróbować użyć jQuery, jeśli chcesz zmienić style. – M22an

0

This approach działa z dowolnym rozmiarem modalnym.

.modal { 
    text-align: center; 
} 

@media screen and (min-width: 768px) { 
    .modal:before { 
    display: inline-block; 
    vertical-align: middle; 
    content: " "; 
    height: 100%; 
    } 
} 

.modal-dialog { 
    display: inline-block; 
    text-align: left; 
    vertical-align: middle; 
} 

Oryginalna odpowiedź ma przykład z Plunkerem.