ブートストラップ3モーダル垂直位置中心 20 Finikの卓越した答えで展開するこの修正は、非モバイルデバイスにのみ適用されます。 私はIE8、Chrome、Firefox 22でテストしました。 非常に長いまたは短いコンテンツで動作します。 モーダルの正確な高さがわからないときは、どのようにモダリティを垂直に中央に配置できますか?• モーダルを中心にしてオーバーフローさせることは可能ですか?モーダルが画面の高さを超えた場合にのみ、モーダルボディでautoを使用しますか? 私はこれを使ってみました:. find '. modal-dialog' ; modal. dialog. css "margin-top", Math. height - dialog. modal'. on 'show. modal:visible'. resizeイベントと show. find ". on 'show. modal', '. modal:visible'. 必要な場合は、カスタムクラス(. modalではなく. modal. modal-vcenter)を設定して、機能をいくつかのモーダルに限定することができます。 clone. css 'display', 'block'. find '. modal-content'. find '. modal-content'. on 'show. on 'resize', centerModals ; また、このCSS修正をモーダルの水平間隔に追加します。 modal-open. important; padding-right: 0px! find '. modal-dialog'. find '. modal-dialog'. on 'shown. ブートストラップはすでにあなたのために水平に配置されていますので、これを混乱させる必要はありません。 私の解決策は、jQueryを使用してのみ上端マージンを設定するだけです。 on 'loaded. find '. modal-dialog'. modalイベントを使用しましたが、shown. modalイベントを使用すると高さの計算が正しく行われません。 もちろん、レスポンシブにする必要がある場合は、ウィンドウのサイズを変更するイベントを追加できます。 モバイルプラントフォームでは少し違って見えるかもしれませんが、ここに私のコードがあります。 modal. fade. modal. modal. fade. modal. Dynamicalyはダイアログの高さで計算します。 (次のステップでは、ウィンドウのサイズ変更時にダイアログの高さを再計算することができます)。 modal'. find '. is '. fade'? removeClass 'fade'. addClass 'invisible'. data 'height', d. css 'display', ''. removeClass 'invisible'. modal'. on 'show. find '. css 'margin-top', Math. round 0. jsのopen関数を変更しました。 this. realize ; this. find ". modal-dialog". find ". getModal. centerModal. centerModal. 私は次のCSSを使用しています:. これを正しい答えとして選択すると、複数のモーダルの場合にブラウザを無意味にする余分な重いjavascriptがないためです。 簡単な方法。 私のために働く。 Thks rensdenobel :. clone. css 'display', 'block'. find '. modal-content'. find '. modal-content'. on 'show. on 'resize', centerModals ;.
次の削除ボタンクリック時の確認メッセージ• 詳細ボタンクリック時に詳細画面をモーダルウィンドウで開くとき• 画像のポップアップ表示をしたいとき 削除確認画面のモーダルウィンドウ: Bootstrapだけで簡単にモーダルウィンドウを開くことができるので、使い方を覚えておくのがおすすめです! Bootstrapでモーダルウィンドウを使う方法 次に、Bootstrapでモーダルウィンドウを使う方法を解説します。 モーダルウィンドウの基本的な作り方 まず、モーダルウィンドウの基本的な作り方について解説します。 言葉だとわかりづらいので、サンプルコードを用意しました。 続けて、クリック後に表示する画面の内容を以下のコードで書いています。 削除確認画面 データを削除しますか? 閉じる 削除 「」とかくことで、クリックしたときに表示するモーダルを指定しています。 「modal-header」で画面名やタイトルを書くヘッダー部分• 「modal-body」で詳細な内容を書くボディ部分• 「modal-footer」でボタンなど置くフッター部分 書き方をすべて覚えようとすると難しく感じるかもしれませんが、上記サンプルコードをモーダルウィンドウを使う型として使い、「id名で指定したモーダルが開けること」「上記3つのdivをかきかえれば表示内容を変えられること」を覚えて変更できるようにしておけばOKです! 背景を目立たせなくする方法 次に、背景を目立たせなくする方法について解説します。 クリックするボタンやリンクにbackdropオプションを追加することで、モーダルウィンドウ表示時の 背景の明るさ・背景クリック時の動きを変更することができます。 true :背景を目立たなくし、背景クリックでモーダルを閉じる• false:背景をそのままにし、背景クリックしてもモーダルは閉じない• static:背景を目立たなくし、背景クリックしてもモーダルは閉じない 先ほどのサンプルに、falseを指定しする場合は以下を変更します。 ボタンで開く ボタンで開く クリック後の画面: このように、背景の明るさや・背景クリック時の動きを変更することができるので、おぼえておくのがおすすめです! モーダルウィンドウをさらに使いこなすためのフォームとは? ここまでのサンプルでは、削除確認メッセージをメインに解説してきましたが、更におすすめな使い方として、モーダルウィンドウを詳細データの入力画面として利用する方法があります。 たとえば、次のような一覧画面の詳細ボタンをクリックしてから、詳細データを入力するようなケースです。 削除機能・詳細画面の表示・画像のポップアップ表示などが簡単に作れるので、覚えておくと便利です!使い方も簡単なので、ぜひ使ってみてくださいね!.
次のPureCSS ModalWindow 仕組みは後で解説するとして、とりあえず作ったサンプルを5つ紹介します。 一応、画面外をクリックしてウィンドウを閉じる機能にも対応していますし、ピュアCSSのモーダルウィンドウにしては珍しい 閉じる際のアニメーションも実現できました。 通常パターン See the Pen by Kuzlog on. 上から See the Pen by Kuzlog on. 拡大 See the Pen by Kuzlog on. ふんわり See the Pen by Kuzlog on. 解説 先程紹介した「通常パターン」のソースがこちらです。 一通り目を通せば分かr…分からないですねこれ。 肝となるのは「:checked」 :checkedというのはCSS3の擬似クラスで、一般的にはチェックされている要素(radioとかcheckbox)のスタイルを変化させる際に使用されます。 なんでscale 0 で隠してんの? このコードでは、モーダルウィンドウ及び背面のオーバーレイ部分を transform: scale 0 ;で隠しています。 普通に考えて、要素を隠すときは display:none;を使いますよね。 ただ、今回はクリックでスタイルを変更するという仕組みのため、 displayを使って要素の表示・非表示を切り替えると、どうしても ウィンドウを閉じるときのアニメーションが作れなかったんです…そりゃ一瞬で非表示になりますからね。 実際、他の人が作ったPureCSSモーダルウィンドウを見てみると、 閉じるときのアニメーションまで実装されているものはほとんどありません。 そんなのやだ!絶対やだ!!って事で、結局 scale 0 で強引に隠すことにしました。 これならモーダルウィンドウを閉じた際の徐々に背景が明るくなっていくようなエフェクトが簡単に掛けられます。 こんな隠し方をしていいのか分からない上に、全部作った後で「あれ?これ animation使えば display:none;でもいけたんじゃね?」って事に気付いたのは秘密。 注意点 実用する人はいないと思いますが、無理やり作ったのでいくつか注意点があります。 モーダルウィンドウ内のコンテンツが多すぎるとスクロールが発生してしまい、最初に表示された領域以下の場所では画面外クリックが効かなくなります• 動作確認はChrome・Firefox・Edge・Android(Chrome)でしか行っていません• モバイルに対応させるならメディアクエリを使ってwidthを調整したほうがいいです• 実際jQueryとか使ったほうが楽に良いもの作れます 色々と試行錯誤したんですが、スクロール時の画面外クリック対応は最後の最後まで作れませんでした…なんとかならねえのかなこれ。 誰か助けてください。 最後に 使う使わないは別として、CSSだけでもここまで作れる!という楽しさが伝われば嬉しいです。
次の