Twitterブートストラップモーダル:スライドダウン効果を削除する方法


167

Twitterブートストラップモーダルウィンドウのアニメーションをスライドダウン効果からフェードインに変更する方法、またはスライドなしで表示する方法はありますか?私はここのドキュメントを読みました:

http://getbootstrap.com/javascript/#modals

ただし、モーダルボディのスライド効果を変更するためのオプションについては触れられていません。

回答:


359

取り出すだけ fadeモーダルdivからクラスです。

具体的には、次のように変更します。

<div class="modal fade hide">

に:

<div class="modal hide">

更新: bootstrap3の場合、hideクラスは必要ありません。


9
OPはそれをフェードインする方法を尋ねたので、それらの回答のいくつかは質問の別の構成に対して正しいです。それは本当に1つの質問で2つの質問であり、誰も1つの回答で両方の質問に答えたことがないので、それは単に悪い質問だと思います。
umassthrower 2013

1
ブートストラップソースを変更する必要はありません。HTMLを変更するだけです。これが正解です。
mpccolorado 2013

31
@umassthrowerは正しいです。どのように移行しないかだけが答えられます。上からドロップダウンしないでフェードする方法の問題は、この回答ではカバーされていません。
Synesso 2013

26
これが正解かわかりません...モーダルがフェードなしでポップインし、OPはスライドを削除するように要求しましたが、フェードは削除しません...
Shawn Taylor

2
フェードを維持してスライドも削除するのを待っています。この回答は役に立ちません。フェードはCSSで完全に別個であるため、フェードクラスを使用してモーダルのスライド効果も処理するのは奇妙なブートストラップです。
リーシュ

36

ブートストラップで使用されるモーダルはCSS3を使用してエフェクトを提供し、モーダルコンテナーdivから適切なクラスを削除することで削除できます。

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

ご覧のとおり、このモーダルにはのクラスがあります。つまり、.fadeフェードインとに設定さ.inれています。つまり、スライドインします。そのため、削除するエフェクトに関連するクラスを削除します.in。この場合、クラスは単なるクラスです。

編集:いくつかのテストを実行しただけで、そうではないようです。.inクラスはJavaScriptによって追加されますが、sssDownの動作を次のようにcssで変更できます。

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

デモ


2
また、それを背景に追加する必要があります:modal.fade, .modal-backdrop.fadeetc ...
David Hellsing

Davidが言及した理由により、おそらくcomponent-animations.lessファイルを編集する方が良いでしょう。
Peter Hanley

フェードクラスはオプションであり、以下のRoseによるより良い(そしてBSのドキュメントごとに推奨される)回答があります
umassthrower

@umassthrowerこの回答はかなり古いものです。執筆時点では、その選択は存在しませんでした。
Andres Ilich 2013

回答が3か月前にBS 2.0がリリースされたため、コメントが正しいかわかりません。昨年の夏にv2.0を使用したときに、モーダルからフェードを削除しました。おそらく彼らはその後までドキュメントを変更しませんでした。ダンノ。
umassthrower 2013

30

スライドインではなくモーダルフェードインが必要な場合(.fadeとにかく呼び出されるのはなぜですか)、CSSファイル内のクラスを上書きするか、次のように直接入力しますbootstrap.css

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

効果が必要ない場合fadeは、モーダルクラスからクラスを削除してください。


1
トップ:50%は時にダイアログが閉じトラブルを引き起こしているようです。ダイアログは以前と同じ場所で開いているようです。しかし、閉じる直前に、一瞬、中央に移動してから閉じます。Chromeで少なくとも。他の誰かもこれに気づきましたか?
mohitp 2013年

1
@lorem monkey-乾杯、フェードが欲しかったがスライドは欲しかった。scss / compassバージョンが必要な場合... .modal.fade {@include transition(opacity .2s linear、none);}
Simon

1
@mohitp「top:50%」の代わりに、「top:25%」を使用しています。.modal.fade.in {top:25%;も追加しました。}私のためにトリックをしたようです。モーダルに「in」クラスがないため、これが機能する理由は不明です。
ダレン

2
@dkrape inクラスはBootstrap.jsによって追加されます
Dave Sag

これは正解です。質問の両方の部分に答えます。
マット2014年

26

これらの回答のほとんどはブートストラップ2に関するものだと思います。ブートストラップ3についても同じ問題が発生し、修正を共有したいと思いました。ブートストラップ2に対する私の以前の回答と同様に、これは依然として不透明度のフェードを行いますが、スライドの遷移は行いません

ワークフローに応じて、modals.lessファイルまたはtheme.cssファイルを変更できます。少ない時間で質の高い時間を過ごしたことがない場合は、ぜひお勧めします。

少ない場合は、次のコードを見つけてください MODALS.less

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

その後、変更-25%0%

または、cssのみを使用している場合は、次の場所を探します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;
}

をに変更-25%0%ます。


2
Bootstrapのスタイルシート/レスを編集する代わりに、カスタムスタイルシートでこれらのスタイルをオーバーライドします。
Bassem 14年

これは、スライドなしでFADEを取得するための唯一のシンプルなCSSソリューションです。どうも。
davideghz 2017

18

.modal.fadeは自分のLESSスタイルシートのデフォルトスタイルを上書きすることでこれを解決しました:

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

これにより、フェードイン/フェードアウトアニメーションは保持されますが、スライドアップ/スライドダウンアニメーションは削除されます。


ありがとうございました。私は50%ではなく10%を使用することになり、.3sから.25sへの移行を減らしました。
isapir 2013

モーダルを複数回開いたり閉じたりすると、時間の経過とともにモーダルがページの上に移動します。
リーシュ、2014年

12

スライド削除するがフェードを残す最良の解決策は、bootstrap.cssの後に呼び出される、選択したcssファイルに次の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
これは、フェードを維持しながらスライドを削除するためのBootstrap 3の最良の答えです
NickH

2
このソリューションは、Bootstrap 4でも正常に機能します。ありがとう!
18年

11

スライド効果も気に入らなかった。これを修正するには、top属性を.modal.fadeとmodal.fade.inの両方で同じにするだけです。top 0.3s ease-outトランジションでを削除することもできますが、そのままにしておいても問題ありません。フェードイン/アウトが機能し、スライドが強制終了されるだけなので、このアプローチが好きです。

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

ブートストラップ3の答えを探している場合は、こちらをご覧ください


1
上記の2つの非LESSの例では、「。modal.fade.in」宣言を無視しています。これにより、モーダルは閉じるときに少しジャンプします。これは素晴らしい作品です。ここにそれが実際にあります:jsfiddle.net/dkrape/4EwFq
Darren

これはほとんど機能しますが、モーダルが表示されると、32ピクセルほど上に明るい青色の水平線が表示されます(Safari、Firefox、Chromeのすべてで)。
デイブサグ2013

2

「top:-25%;」を削除するだけで、bootstrap.cssを上書きすることもできます。

削除すると、モーダルはスライドアニメーションなしで単純にフェードインおよびフェードアウトします。


2

フェードクラスを削除するだけで、モーダルでより多くのアニメーションを実行したい場合は、モーダルでanimate.cssクラスを使用します。


1

私はブートストラップ3とDurandal JS 2モーダルプラグインを使用しています。この質問はGoogleの結果の上にありました。上記の回答のどれも私にとってうまくいかなかったので、将来の訪問者のために私の解決策を共有したいと思いました。

私は自分のlessでデフォルトのBootstrapのLessコードをこれでオーバーライドします:

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

そうすれば、フェード効果だけが残り、slideDownはなくなります。


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

これにより、アニメーションの表示と非表示が解除されます。Angular-Bootstrap uiでも動作します。
SMアドナン2015年

1

質問は明確でした。スライドのみを削除します。Bootstrapv3でスライドを変更する方法は次のとおりです

modals.lessで、translateステートメントをコメント化します。

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


0

これを更新したかった。あなたのほとんどはこの問題を完了していません。私はBootstrap 3を使用しています。上記の修正はどれも機能しませんでした。

スライドエフェクトは削除しますが、フェードインは維持します。ブートストラップcssに入り、(次のセレクターに注目)-これで問題は解決しました。

 .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

次のCSSは私のために動作します-Bootstrap 3を使用します。ブーストラップスタイルの後にこのCSSを追加する必要があります-

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

.modal.fade {
   transition: none; 
}

0

モーダルクラスから「フェード」クラスを削除するだけです

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

なので

class="modal bs-example-modal-lg"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.