2012-04-28 14 views
10

Uso il plug-in modale di avvio. Ma la finestra di dialogo modale non è mostrata al centro. Perché? errore mio?Il plug-in modale di Bootstrap 2 non viene visualizzato dal centro

http://dl.dropbox.com/u/573972/stackoverflow/bootstrap/modal.html

<!DOCTYPE html> 
<head> 
    <meta charset="utf-8"> 
    <title>test</title> 
    <meta name="description" content=""> 
    <meta name="author" content=""> 
    <!-- Mobile Specific--> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <!-- CSS--> 
    <link rel="stylesheet" href="bootstrap.min.css"> 
    <script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/1.7/jquery.min.js'></script> 
</head> 
<body> 
    <div id="login" class="modal"> 
    <div class="modal-header"> 
     <h3>Login to Room fuga</h3> 
    </div> 
    <div class="modal-body"> 
     hogehoge 
    </div> 
    </div> 
    <script src="bootstrap.min.js"> 
    </script> 
    <script> 
$('#login').modal(); 
</script> 
</body> 
</html> 

risposta

18

Ho trovato questo workarround per risolvere questo problema:

$('#YourModal').modal().css(
      { 
       'margin-top': function() { 
        return -($(this).height()/2); 
       } 
      }) 

Fonte: https://github.com/twitter/bootstrap/issues/374

+3

Questa soluzione non funziona: http://jsfiddle.net/sonic1980/szFtE/ – Peter

+0

Grazie, Salvato il giorno –

+0

Ho rimosso il meno prima ($ this) per aggiungere un margine superiore positivo invece di un margine negativo, e che centrato il mio dialogo verticalmente in bootstrap 3. L'uso della soluzione sembrava spostare la finestra di dialogo all'esterno dell'area visibile. – angularsen

9

se la finestra di dialogo modale bootstrap di Twitter non è centrata orizzontalmente, è possibile risolvere questo problema tramite css.

basta dare alla finestra di dialogo modale un margine sinistro negativo che è la metà della larghezza come per es. così:

.modalDialogBlabla { 
    margin: 0 0 0 -250px; 
    width: 500px; 
    } 
+2

soluzione Molto pulito e molto bello! E sebbene non risponda alla domanda (centratura verticale), funziona come un fascino per l'orizzontale. –

+0

sì grazie per questo! – the0ther

+0

fantastico. Ottimo risparmio di tempo se non si utilizzano i valori predefiniti. Grazie, nerdess! – Hcabnettek

8

catturare l'evento show del .modal e quindi calcolare la nuova posizione:

$('body').on('show', '.modal', function(){ 
    $(this).css({'margin-top':($(window).height()-$(this).height())/2,'top':'0'}); 
});​ 

DEMO: http://jsfiddle.net/sonic1980/b2EHU/

2

in base alla risposta del p4810 sopra, ma trattare con cui l'utente è anche sullo schermo. Funziona con posizionamento assoluto.

$('#YourModal').modal().css(
      { 
       'margin-top': function() { 
        return window.pageYOffset-($(this).height()/2); 
       } 
      }); 
+0

Non funziona su IE9, c'è qualcosa che IE non capisce a riguardo? – Notflip

Problemi correlati