Twitter Bootstrap modale: come rimuovere l'effetto Slide down


Risposte:


359

Basta prendere la fadeclasse dal div modale.

In particolare, modifica:

<div class="modal fade hide">

per:

<div class="modal hide">

AGGIORNAMENTO: per bootstrap3, la hideclasse non è necessaria.


9
Sebbene il PO abbia chiesto come farlo svanire in modo che alcune di quelle risposte siano corrette per la formazione alternativa della domanda. Immagino sia solo una brutta domanda perché in realtà sono 2 domande in una e nessuno ha risposto ad entrambe le domande in una risposta.
umassthrower

1
Non è necessario modificare le origini bootstrap. Devi solo modificare il tuo html. Questa è la risposta corretta
mpccolorado,

31
@umassthrower è corretto. Viene risposto solo come non effettuare alcuna transizione. La domanda su come sbiadire ma non cadere dall'alto non è coperta da questa risposta.
Synesso,

26
Non capisco come questa sia la risposta corretta ... fa esplodere il modale senza dissolvenza e OP ha chiesto di rimuovere SLIDE, ma non FADE ...
Shawn Taylor

2
Sto aspettando di mantenere la dissolvenza e rimuovere anche la diapositiva e questa risposta non è utile. È strano che il bootstrap abbia usato la loro classe di dissolvenza per gestire anche l'effetto diapositiva per il modale in quanto la dissolvenza è completamente separata nel loro CSS.
Leeish

36

Le modali utilizzate dal bootstrap usano CSS3 per fornire gli effetti e possono essere rimosse eliminando le classi appropriate dal div contenitore modali:

<div class="modal hide fade in" id="myModal">
   ....
</div>

Come puoi vedere, questo modale ha una classe di .fade, il che significa che è impostato per dissolversi e .in, nel senso che scivolerà dentro. Quindi basta rimuovere la classe relativa all'effetto che si desidera rimuovere, che nel tuo caso è solo la .inclasse.

Modifica: Ho appena eseguito alcuni test e sembra che non sia così, il .in classe viene aggiunta da JavaScript, anche se puoi modificare il comportamento di slideDown con CSS in questo modo:

.modal.fade {
    -webkit-transition: none;
    -moz-transition: none;
    -ms-transition: none;
    -o-transition: none;
    transition: none;
}

dimostrazione


2
Dovresti anche aggiungerlo allo sfondo: modal.fade, .modal-backdrop.fadeecc ...
David Hellsing,

è probabilmente meglio modificare il file component-animations.less, per il motivo che menziona David.
Peter Hanley,

la classe di dissolvenza è facoltativa, c'è una risposta migliore (e preferita per la documentazione BS) di Rose di seguito
umassthrower

@umassthrower questa risposta è piuttosto vecchia, al momento della stesura di questa scelta non esisteva.
Andres Ilich,

Non sono sicuro che il commento sia corretto poiché BS 2.0 è stato rilasciato 3 mesi prima di quella risposta e ho rimosso la dissolvenza dai miei modali quando ho usato la v2.0 l'estate scorsa. Forse non hanno modificato la documentazione fino a quel momento. Boh.
umassthrower

30

Se ti piace avere la dissolvenza modale anziché scivolare dentro (perché si chiama .fadecomunque?) Puoi sovrascrivere la classe nel tuo file CSS o direttamente bootstrap.csscon questo:

.modal.fade{
    -webkit-transition: opacity .2s linear, none;
    -moz-transition: opacity .2s linear, none;
    -ms-transition: opacity .2s linear, none;
    -o-transition: opacity .2s linear, none;
    transition: opacity .2s linear, none;
    top: 50%;
}

Se non desideri alcun effetto, rimuovi la fadeclasse dalle classi modali.


1
Il top: il 50% sembra causare problemi alla chiusura della finestra di dialogo. La finestra di dialogo sembra aprirsi nello stesso posto di prima; ma appena prima di chiudersi, per una frazione di secondo si sposta al centro e poi si chiude. Atleast in Chrome. Qualcun altro ha notato anche questo?
Mohitp,

1
@lorem monkey - evviva, voleva la dissolvenza ma non la diapositiva. Se qualcuno vuole la versione scss / compass ... .modal.fade {@include transizione (opacità .2s lineare, nessuna);}
Simon

1
@mohitp Invece di "top: 50%", sto usando "top: 25%". Ho anche aggiunto .modal.fade.in {top: 25%; } Sembra aver fatto il trucco per me. Non sono sicuro del motivo per cui funziona dal momento che non ho la classe "in" nel mio modale.
Darren,

2
@dkrape la inclasse è aggiunta da Bootstrap.js
Dave Sag

Questa è la risposta giusta, rispondendo ad entrambe le parti della domanda.
matt

26

Credo che la maggior parte di queste risposte riguardi bootstrap 2. Ho riscontrato lo stesso problema per bootstrap 3 e volevo condividere la mia correzione. Come la mia precedente risposta per bootstrap 2, questo farà comunque sbiadire l'opacità, ma NON farà la transizione delle diapositive.

È possibile modificare i file modals.less o theme.css, a seconda del flusso di lavoro. Se non hai trascorso del tempo di qualità con meno, lo consiglio vivamente.

per meno, trova il seguente codice in MODALS.less

&.fade .modal-dialog {
  .translate(0, -25%);
  .transition-transform(~"0.3s ease-out");
}
&.in .modal-dialog { .translate(0, 0)}

quindi modificare la -25%a0%

In alternativa, se stai usando solo il CSS, trova quanto segue in theme.css:

.modal.fade .modal-dialog {
  -webkit-transform: translate(0, -25%);
  -ms-transform: translate(0, -25%);
  transform: translate(0, -25%);
  -webkit-transition: -webkit-transform 0.3s ease-out;
  -moz-transition: -moz-transform 0.3s ease-out;
  -o-transition: -o-transform 0.3s ease-out;
  transition: transform 0.3s ease-out;
}

e quindi modificare il -25%a 0%.


2
Sostituirei questi stili in un foglio di stile personalizzato invece di modificare il foglio di stile / Meno di Bootstrap.
Bassem,

questa è l'UNICA semplice soluzione CSS per ottenere FADE senza diapositiva. grazie.
davideghz,

18

Ho risolto questo problema sovrascrivendo gli .modal.fadestili predefiniti nel mio foglio di stile MENO:

.modal {
  &.fade {
    .transition(e('opacity .3s linear'));
    top: 50%;
  }
  &.fade.in { top: 50%; }
}

Ciò mantiene l'animazione di dissolvenza in entrata / in uscita ma rimuove l'animazione di scorrimento verso l'alto / verso il basso.


grazie. Ho finito per usare il 10% invece del 50% e ho ridotto la transizione da .3s a .25s che mi sembra un po 'più agevole.
Isapir,

L'apertura e la chiusura di un modale più volte lo sposta verso l'alto nella pagina nel tempo.
Leeish

12

Ho trovato la soluzione migliore che rimuove la diapositiva ma lascia la dissolvenza è aggiungendo i seguenti css in un file css del tuo chosing che viene invocato dopo bootstrap.css

.modal.fade .modal-dialog 
{
    -moz-transition: none !important;
    -o-transition: none !important;
    -webkit-transition: none !important;
    transition: none !important;

    -moz-transform: none !important;
    -ms-transform: none !important;
    -o-transform: none !important;
    -webkit-transform: none !important;
    transform: none !important;
}

1
Questa è la risposta migliore per Bootstrap 3 al fine di mantenere la dissolvenza ma rimuovere la diapositiva verso il basso
NickH

2
Questa soluzione funziona anche con Bootstrap 4. Grazie!
approvazione

11

Neanche a me piaceva l'effetto slide. Per risolvere questo, tutto ciò che devi fare è rendere l' topattributo uguale per entrambi .modal.fade e modal.fade.in. Puoi togliere anche top 0.3s ease-outle transizioni, ma non fa male lasciarlo entrare. Mi piace questo approccio perché la dissolvenza in / out funziona, uccide solo la diapositiva .

.modal.fade {
  top: 20%;
  -webkit-transition: opacity 0.3s linear;
     -moz-transition: opacity 0.3s linear;
       -o-transition: opacity 0.3s linear;
          transition: opacity 0.3s linear;
}

.modal.fade.in {
  top: 20%;
}

Se stai cercando una risposta bootstrap 3, guarda qui


1
I primi due esempi non MENO sopra trascurano la dichiarazione ".modal.fade.in", che fa saltare un po 'il modale alla chiusura. Questo funziona alla grande. Eccolo in pratica: jsfiddle.net/dkrape/4EwFq
Darren,

Funziona principalmente, ma vedo apparire una linea orizzontale blu brillante (in tutti Safari, Firefox e Chrome) circa 32 px sopra il mio Modale quando appare.
Dave Sag,

2

puoi anche sovrascrivere bootstrap.css semplicemente rimuovendo "top: -25%;"

una volta rimosso, il modale si dissolverà semplicemente dentro e fuori senza l'animazione della diapositiva.


2

Basta rimuovere la classe di dissolvenza e se si desidera eseguire più animazioni sul Modale, utilizzare semplicemente le classi animate.css nel proprio Modale.


1

Sto lavorando con bootstrap 3 e il plugin modale Durandal JS 2. Questa domanda era in cima ai risultati di Google e poiché nessuna delle risposte precedenti funziona per me, ho pensato di condividere la mia soluzione per i futuri visitatori.

Sostituisco il codice Less di Bootstrap predefinito con questo nel mio less:

.modal {
  &.fade .modal-dialog {
    .translate(0, 0);
    .transition-transform(~"none");
  }
  &.in .modal-dialog { .translate(0, 0)}
}

In questo modo mi rimane solo l'effetto di dissolvenza e nessuna slideDown.


1
.modal.fade, .modal.fade .modal-dialog {
    -webkit-transition: none;
    -moz-transition: none;
    -ms-transition: none;
    -o-transition: none;
    transition: none;
}

Ciò rimuoverà l'animazione da mostrare e nascondere. Funziona bene anche per me con Angular-Bootstrap.
SM Adnan,

1

La domanda era chiara: rimuovere solo la diapositiva: ecco come cambiarla in Bootstrap v3

In modals.less commenta l'istruzione translate:

&.fade .modal-dialog {
  //   .translate(0, -25%);


0

Volevo aggiornare questo. Molti di voi non hanno completato questo problema. Sto usando Bootstrap 3. nessuna delle correzioni sopra ha funzionato.

per rimuovere l'effetto slide ma mantenere la dissolvenza. Sono entrato in bootstrap css e (ho notato i seguenti selettori) - questo ha risolto il problema.

 .modal.fade .modal-dialog{/*-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out*/}

 .modal.in .modal-dialog{/*-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)*/}

0

Il seguente CSS funziona per me - Uso di Bootstrap 3. Devi aggiungere questo CSS dopo gli stili boostrap -

.modal.fade .modal-dialog{
    -webkit-transition-property: transform; 
    -webkit-transition-duration:0 ; 
    transition-property: transform; 
    transition-duration:0 ; 
}

.modal.fade {
   transition: none; 
}

0

basta rimuovere la classe 'fade' dalla classe modale

class="modal fade bs-example-modal-lg"

come

class="modal bs-example-modal-lg"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.