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

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

新規登録して質問してみよう
ただいま回答率
85.48%
ポップアップ

一般的に、ポップアップは、ウィンドウやアプリケーションに上に浮かぶUIエレメントを指します。

モーダルダイアログ

モーダルダイアログとは、ユーザーに重要な情報を表示するときに用いられる視覚的なダイアログのことを指します。これらのダイアログは他のすべてのコンテンツの上に表示され、ユーザーの入力を受けるまでアプリケーションフローは停止されます。

JavaScript

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

Q&A

解決済

2回答

12332閲覧

作成したモーダルと背景をその場で固定したい(JavaScript)

eggplant_bc

総合スコア20

ポップアップ

一般的に、ポップアップは、ウィンドウやアプリケーションに上に浮かぶUIエレメントを指します。

モーダルダイアログ

モーダルダイアログとは、ユーザーに重要な情報を表示するときに用いられる視覚的なダイアログのことを指します。これらのダイアログは他のすべてのコンテンツの上に表示され、ユーザーの入力を受けるまでアプリケーションフローは停止されます。

JavaScript

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

0グッド

0クリップ

投稿2018/03/14 05:20

JavaScript初心者で、勉強のためにモーダルを作成しています。
モーダル自体はちゃんと動いていて、モーダルを表示した時の背景が暗くなるような表示も出来ています。
ただ現在、モーダルそのものも、背景も、どちらもスクロール出来てしまう状態です。
モーダルへ繋がるボタンをクリックしたその場でモーダルと背景を固定したいのですが、どのようなJSを書けば出来ますでしょうか?
暗い背景のdivとモーダルのdivは、現在body直下にあります。
まだjQueryを勉強していないので、出来ればJavaScriptの書き方で教えていただけるとありがたいです。

<div id="full"></div> <div id="modalInfo" style="display: none;">      モーダルの内容をここに書いています。 </div>

fullのidがついたdivが背景用で、モーダルが表示されてる間はover_rayというclassがつく処理を書いています。
ふたつともbodyの直下にあります。

よろしくお願いいたします。

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

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

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

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

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

kei344

2018/03/16 01:16

まだ質問が「受付中」になっていますが、「ベストアンサー」を選び「解決済」にされてはいかがでしょうか。
eggplant_bc

2018/03/16 02:06

失礼しました!忘れてました。ご指摘ありがとうございます。
guest

回答2

0

似たような実装になっているBootstrapを参考にすればいいかと思います。
ダイアログを開いたときにbodyが「overflow: hidden;」になっています。
なお、ネイティブやjQuery UIのDialogにはそのような挙動はないようです。
https://getbootstrap.com/docs/4.0/components/modal/#live-demo

投稿2018/03/14 05:54

x_x

総合スコア13749

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

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

eggplant_bc

2018/03/15 21:40

x_xさん、ご回答いただきありがとうございました! JSの動きを読めなくて、教えていただいてやっとbodyにoverflow: hidden;が付いていることに気がつきました…。 時間かかりましたが、モーダルを中央に固定することができました。 ありがとうございました!
guest

0

ベストアンサー

スクロールというのが、どこがどういう風にスクロールしてしまうかにもよるので、
答えようがないのですが・・・、
ページのスクロールができてしまい、モーダルがずれてしまう、という解釈でお話しします。
position: fixedで固定にすればいいと思います。
(前提ばかりですみませんが、モーダル背景の大きさは、縦横100%の大きさにしている前提です。)

javascript

1var back = document.getElementById("full"), 2 modal = document.getElementById("modalInfo"); 3back.style.position = "fixed"; 4back.modal.position = "fixed"; 5 6// jQuery使ってるなら下記 7$("#full").css("position", "fixed"); 8$("#modalInfo").css("position", "fixed");

戻す時は、

javascript

1back.style.position = ""; 2back.modal.position = ""; 3 4// jQuery使ってるなら下記 5$("#full").css("position", ""); 6$("#modalInfo").css("position", "");

です。
もし、これで質問者さんの意図にそぐわなかったら、
現在適用させている、JavaScriptも記載をしてください。

投稿2018/03/14 05:40

miyabi_takatsuk

総合スコア9528

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

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

eggplant_bc

2018/03/15 21:36

miyabi_takatsukさん、ご回答いただきありがとうございました! 分かりやすくコードも書いていただき、ありがとうございます。 おっしゃる通り、まさにページがスクロールできてしまいモーダルもずれてしまう状態でした。 おかげで解決しました。 本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問