Twitter Bootstrap modal: Slayt aşağı efekti nasıl kaldırılır


Yanıtlar:


359

Sadece fademodal div'den sınıfı çıkarın.

Özellikle şunu değiştirin:

<div class="modal fade hide">

için:

<div class="modal hide">

GÜNCELLEME: bootstrap3 için hidesınıfa gerek yoktur.


9
OP bu sorunun nasıl çözüleceğini sorsa da, bu cevapların bazıları sorunun alternatif oluşumu için doğrudur. Sanırım bu sadece kötü bir soru çünkü tek bir soruda 2 soru var ve hiç kimse her iki soruyu da tek cevapta cevaplamadı.
umassthrower

1
Önyükleme kaynaklarını değiştirmeniz gerekmez. Yalnızca html'nizi değiştirmeniz gerekir. Bu doğru cevap.
mpccolorado

31
@umassthrower doğru. Sadece nasıl geçiş olmayacağı cevaplanır. Solmaya nasıl başlayacağınız, ancak yukarıdan aşağıya doğru açılmadığı sorusu bu cevap kapsamında değildir.
Synesso

26
Bunun doğru cevap nasıl olduğunu anlamıyorum ... modal pop'u hiç solmadan yapar ve OP, SLAYT'ı kaldırmak istedi, ancak FADE'i değil ...
Shawn Taylor

2
Solmaya devam etmek ve slayt da kaldırmak için bekliyorum ve bu cevap yararlı değil. Bu, solukluk CSS'lerinde tamamen ayrı olduğundan, modal için slayt efektini işlemek için solma sınıflarını kullandı.
Leeish

36

Bootstrap tarafından kullanılan modeller, efektleri sağlamak için CSS3 kullanır ve bunlar modls container div'den uygun sınıfları ortadan kaldırarak kaldırılabilir:

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

Gördüğünüz gibi bu modal bir sınıfa sahiptir .fade, yani solmaya ayarlanmıştır ve .inyani içeri kayar. Yani kaldırmak istediğiniz efektle ilgili sınıfı kaldırın, ki bu durumda sadece .insınıftır.

Düzenleme: Sadece bazı testleri koştu ve öyle değil gibi görünüyor, .insınıf javascript tarafından eklenir, ancak o slideDown davranışını css ile şu şekilde değiştirebilirsiniz:

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

gösteri


2
Ayrıca zemine eklemeniz gerekir: modal.fade, .modal-backdrop.fadevb ...
David Hellsing

David'in bahsetmesinin nedeni, bileşen-animations.less dosyasını düzenlemek daha iyidir.
Peter Hanley

solma sınıfı isteğe bağlıdır, aşağıda Rose tarafından daha iyi (ve BS belgelerine göre tercih edilir) bir cevap var
umassthrower

@ umassthrower bu cevap oldukça eski, yazarken bu seçenek yoktu.
Andres Ilich

BS 2.0'ın bu cevaptan 3 ay önce yayınlandığı ve geçen yaz v2.0 kullanırken solgunluklarımdan kaldırıldığından yorumun doğru olduğundan emin değilim. Belki de bundan sonraya kadar belgeleri değiştirmediler. Dunno.
umassthrower

30

Eğer modalın içeri kaydırmak yerine solmasını istiyorsanız (neden .fadeyine de denir ?) CSS dosyanızdaki veya doğrudan bootstrap.cssbununla sınıfın üzerine yazabilirsiniz :

.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%;
}

Herhangi bir efekt istemiyorsanız, fadesınıfı kalıcı sınıflardan kaldırın .


1
En üstte:% 50 iletişim kutusu kapandığında sorun yaratıyor gibi görünüyor. Diyalog daha önce olduğu gibi açılıyor; ancak kapanmadan hemen önce, bir saniyeliğine ortaya çıkar ve sonra kapanır. Chrome'da en az. Bunu başka fark eden var mı?
mohitp

1
@lorem maymun - şerefe, solmayı istedi ama slayt değil. Herkes scss / pusula sürümünü istiyorsa ... .modal.fade {@include geçiş (opaklık .2s doğrusal, hiçbiri);}
Simon

1
@mohitp "top:% 50" yerine "top:% 25" kullanıyorum. Ayrıca .modal.fade.in {top:% 25; } Bana hile yapmış gibi görünüyor. Modalımda "in" sınıfına sahip olmadığımdan bunun neden işe yaradığından emin değilim.
Darren

2
@dkrape insınıf Bootstrap.js tarafından eklenmiştir
Dave Sag

Sorunun her iki bölümüne de cevap veren doğru cevap budur.
matt

26

Bu cevapların çoğunun bootstrap 2 için olduğuna inanıyorum. Bootstrap 3 için aynı sorunla karşılaştım ve düzeltmemi paylaşmak istedim. Bootstrap 2 için önceki yanıt gibi, bu hala bir donukluk solmaya yapacak, ancak DEĞİL slayt geçişi yapmak.

İş akışınıza bağlı olarak modals.less veya theme.css dosyalarını değiştirebilirsiniz. Eğer daha azıyla kaliteli bir zaman geçirmediyseniz, kesinlikle tavsiye ederim.

daha azı için aşağıdaki kodu bulun: MODALS.less

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

Sonra değiştirmek -25%için0%

Alternatif olarak, yalnızca css kullanıyorsanız aşağıdakileri bulabilirsiniz 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;
}

ve sonra değiştirmek -25%için 0%.


2
Bootstrap'ın stil sayfasını / Daha Az düzenlemek yerine bu stilleri özel bir stil sayfasında geçersiz kıldım.
Bassem

bu, FADE'i slaytsız elde etmek için SADECE basit CSS çözümüdür. Teşekkürler.
davideghz

18

.modal.fadeKendi LESS stil sayfamdaki varsayılan stilleri geçersiz kılarak bunu çözdüm:

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

Bu, solmaya / solmaya animasyonunu korur, ancak yukarı / aşağı slayt animasyonunu kaldırır.


teşekkür ederim. Sonunda% 50 yerine% 10 kullandım ve .3s'den .25s'e geçişi azalttım ki bu benim için biraz daha yumuşak görünüyor.
isapir

Bir kipin defalarca açılması ve kapatılması, zaman içinde sayfayı yukarı taşır.
Leeish

12

Ben slayt kaldırır ama solmaya bırakır en iyi çözüm aşağıdaki css bootstrap.css sonra çağrılan seçimlerinizi bir css dosyasında ekleyerek olduğunu

.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
Solmaya devam etmek, ancak slaytı kaldırmak için Bootstrap 3 için en iyi cevap budur
NickH

2
Bu çözüm Bootstrap 4 için de işe yarar. Teşekkürler!
önleme

11

Slayt efektini de beğenmedim. Bunu düzeltmek için tek yapmanız gereken, top.modal.fade ve modal.fade.in için özniteliği aynı yapmaktır. top 0.3s ease-outGeçişlerde de çıkartabilirsiniz , ancak onu bırakmak zarar vermez. Bu yaklaşımı seviyorum çünkü solma giriş / çıkış çalışır, sadece slaytı öldürür .

.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%;
}

Bir bootstrap 3 cevabı arıyorsanız, buraya bakın


1
Yukarıdaki LESS olmayan ilk iki örnek, ".modal.fade.in" bildirimini ihmal eder, bu da modalın kapanırken biraz atlamasını sağlar. Bu harika çalışıyor. İşte uygulamada: jsfiddle.net/dkrape/4EwFq
Darren

Bu çoğunlukla işe yarar, ancak göründüğümde Modal'ımın yaklaşık 32 piksel üzerinde parlak bir mavi yatay çizgi görüyorum (tüm Safari, Firefox ve Chrome'da).
Dave Sag

2

"top: -25%;" komutunu kaldırarak bootstrap.css dosyasının üzerine de yazabilirsiniz.

kaldırıldıktan sonra, mod slayt animasyonu olmadan basitçe girip çıkacaktır.


2

Sadece solma sınıfını kaldırın ve Modal'da daha fazla animasyonun gerçekleştirilmesini istiyorsanız, Modal'ınızda animate.css sınıflarını kullanın.


1

Bootstrap 3 ve Durandal JS 2 mod eklentisi ile çalışıyorum. Bu soru Google sonuçlarının üstündeydi ve yukarıdaki yanıtların hiçbiri benim için çalışmadığından, çözümümü gelecekteki ziyaretçiler için paylaşacağımı düşündüm.

Kendi önyükleme ile varsayılan Bootstrap'ın daha az kodunu geçersiz kılar:

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

Bu şekilde sadece solma efekti ve slideDown ile kaldım.


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

Bu, animasyonu gösterme ve gizlemeden kaldıracaktır. Angular-Bootstrap kullanıcı arayüzü ile benim için iyi çalışıyor.
SM Adnan

1

Soru açıktı: sadece slaytı kaldırın : Bootstrap v3'te nasıl değiştireceğiniz aşağıda açıklanmıştır

Modals.less içinde translate deyimi yazın:

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


0

Bunu güncellemek istedim. Çoğunuz bu sorunu tamamlamadınız. Bootstrap 3 kullanıyorum. Yukarıdaki düzeltmelerin hiçbiri işe yaramadı.

slayt efektini kaldırmak ama solmaya devam etmek için. Bootstrap css'e girdim ve (aşağıdaki seçicileri not ettim) - bu sorunu çözdü.

 .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

Aşağıdaki CSS benim için çalışıyor - Bootstrap 3'ü kullanma. Bu css'yi boostrap stillerinden sonra eklemeniz gerekir -

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

.modal.fade {
   transition: none; 
}

0

sadece 'fade' sınıfını modal sınıftan kaldır

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

gibi

class="modal bs-example-modal-lg"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.