質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

3回答

4774閲覧

remodal.jsでモーダル表示を切り替える際に一瞬背景が消えるのを阻止したい

smwb_man

総合スコア8

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2017/09/06 01:19

編集2017/09/06 08:49

▼remodal.js
http://vodkabears.github.io/remodal/

上記のremodal.jsを利用しております。
下記のような流れでモーダル表示された子ウィンドウ1から子ウィンドウ2へ
モーダル表示の内容を切り替えるという事を行っているのですが、
子ウィンドウ1から子ウィンドウ2に切り替わるタイミングと
子ウィンドウ2から子ウィンドウ1に戻るタイミングに
背景(.remodal-overlay)が一瞬消えてしまう為、
画面がチラつくような状態になってしまいます。

【画面フロー】
親ウィンドウ ⇔ 子ウィンドウ1(登録情報一覧:モーダル表示) ⇔ 子ウィンドウ2(情報編集画面:モーダル表示)

//※以下、呼び出し・再表示の処理のみ抜粋。 //登録情報一覧画面(regist_list)モーダル表示処理 $(".btn_listdisp").on('click',function (event) { event.preventDefault(); var popup = $('[data-remodal-id=regist_list]').remodal(); popup.open(); }); //情報編集画面(regist_edit)モーダル表示処理 $(document).on('click','.btn_editdisp',function (event) { event.preventDefault(); var popup2 = $('[data-remodal-id=regist_edit]').remodal(); popup2.open(); }); //一覧画面再表示処理 var listpop = $('[data-remodal-id=regist_list]').remodal(); $(document).on('closed', '.regist_edit', function () { listpop.open(); });

背景を残しつつ切り替えることが出来ればと思っているのですが、
remodal.js内を読んでも分かりづらく困っております。

もし、変更箇所などが分かりましたらご教示頂けますと幸いです。

【補足】
・子ウィンドウ1と子ウィンドウ2の中身に表示したい内容のサイズが異なる上、処理の都合上でも問題がある為、子ウィンドウの中身を書き換えるという手段が利用できません。
・「一覧画面再表示処理」の「closed」は以前「closing」で書いておりましたが、2つ目の子ウィンドウを表示した際にIEでフリーズしてしまう不具合があった為、「closed」に変更しております。
・子ウィンドウ2は子ウィンドウ1内のクラス名「btn_editdisp」というボタンをクリックした際に表示されます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

x_x

2017/09/06 08:38

子ウィンドウ2は子ウィンドウ1上の操作で呼ばれるモーダルウィンドウなのでしょうか?
smwb_man

2017/09/06 08:44

ご質問ありがとうございます。子ウィンドウ2は子ウィンドウ1内のクラス名「btn_editdisp」というボタンをクリックした際に表示される流れとなります。
guest

回答3

0

何かおかしいと思ったら、これ一個しか開けないんですね。
アニメ無効にする手。

CSS

1.remodal-overlay.remodal-is-opening, 2.remodal-overlay.remodal-is-closing { 3 -webkit-animation-duration: 0s; 4 animation-duration: 0s; 5}

投稿2017/09/06 09:39

x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

smwb_man

2017/09/07 00:26

このような記述でアニメーションを無効にできるんですね。 ご提案ありがとうございます。
guest

0

子ウィンドウを「閉じて開いて」するよりも、子ウィンドウの中身を書き換えるようなフローにすればよいのでは?

投稿2017/09/06 07:15

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

smwb_man

2017/09/06 07:37

ご回答ありがとうございます。 子ウィンドウの中身に表示したい内容のサイズが異なる為、難しいかと考えております…。 (一覧画面は幅が広いのですが、編集画面は幅が狭くなるようなイメージです。) また、処理の都合上で色々と問題がある為、出来れば子ウィンドウの切り替えで対応したいと考えております。申し訳ございません。
smwb_man

2017/09/06 08:01

ご確認ありがとうございます。 質問の参考ソース内の「closed」の処理は以前「closing」で行っていたのですが、2つ目の子ウィンドウを表示した際にIEでフリーズしてしまう不具合があった為、「closed」に変更したという経緯があります。 ただ、「closing」で書いたとしても背景は一瞬消えてしまう状態でした。
kei344

2017/09/06 08:08 編集

とりあえず後出しで情報を小出しにするのは回答者としてやりにくいです。試したことや背景を含めて質問分に書かれることをお勧めします。 1. 子ウィンドウ1を表示したタイミングで .remodal-overlay のCSSを上書きして透明にする 2. .remodal-overlay と同じ場所に自作 .remodal-overlay を作成し、背景としてそれを使うようにする 3. 子ウィンドウ2を消すタイミングで元に戻す これくらいしか思いつきません。 あとはサイズ変更を後からできるタイプのモーダルライブラリに切り替えるかですね。
smwb_man

2017/09/06 08:33

何度もお手数おかけして申し訳ございません。 背景を残して切り替えを行うことが目的だった為、overlay周りに手を入れる事しか考えておらず、子ウィンドウ内の情報やclosingの処理の流れは不要かと思っておりました。すみません。 また、追加でご提案を頂きまして、ありがとうございます。 ご提案頂いた内容でうまくいきそうなパターンを思いついたので少し試してみたいと思います。 お手数おかけしてしまい、申し訳ございませんでした。
guest

0

自己解決

kei344様、x_x様ご提案ありがとうございました。

最終的にkei344様にご提案頂いた内容からヒントを得て、
1.「remodal-overlay」のCSSより背景の設定を削除(透明化)
2.自作の「remodal-overlay2(背景あり)」を「remodal-overlay」と同じように作成
3.子ウィンドウ1の表示時に「remodal-overlay2」を表示する
4.子ウィンドウ2の表示時は「remodal-overlay2」について操作を行わない
5.子ウィンドウ1を閉じる際に「remodal-overlay2」を非表示にする
という内容で実現することが出来ました。

色々とアドバイスを頂き、ありがとうございました。

投稿2017/09/07 00:38

smwb_man

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問