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

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

新規登録して質問してみよう
ただいま回答率
85.35%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

1回答

1322閲覧

モーダル の背景を固定化したい

MIYABITSUJIMOTO

総合スコア19

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/09/16 13:38

モーダル を実装しております。
モーダル 自体はきちんと動きます。
そこで、モーダル を開くボタンをおし、モーダル が出てきた際、bodyの部分はmodal_bgとしてグレーのレイヤーがかかるようにしています。
そこで、問題なのが、このモーダルが開いた際、bodyとグレーのレイヤーがスライドしてしまいます。
モーダル が開いた際、背景は固定されているようにしたいです。

自分で行ったこととしては、
そこで、調べつつ
height: 100vh;
overflow-y: hidden;
を追加したり、自分でJSを書いたりしましたが、うまくいきませんでした。
私としては、モーダルオープンを押した時に、cssにすでに記載しているmodal-openのクラスが付与され、背景が固定化し、モーダル閉じるを押すと、クラスが除去されるというように実装したつもりでした。
おそらくJSの書き方に問題があるのかもしれません。
何か悪い点など見当たればご教授頂きたいです。よろしくお願いいたします。
(文字数の都合上、モーダル のデザインのCSSは省略させて頂いております。)

html

1 <div class="work-photo"> 2 <div class="container"> 3 <h3 class="work-title">Photography</h3> 4 <div class="work-items"> 5 <div class="work-item"> 6 <p class="work-item-title"></p> 7 <a class="js-modal-open" href="" data-target="modal04"><img src="/img/work-1-icon.jpg" alt=""></a> 8 </div> 9 <div class="work-item"> 10 <p class="work-item-title"></p> 11 <a class="js-modal-open" href="" data-target="modal05"><img src="/img/work-2-icon.JPG" alt=""></a> 12 </div> 13 <div class="work-item"> 14 <p class="work-item-title"></p> 15 <a class="js-modal-open" href="" data-target="modal06"><img src="/img/work-3-icon.jpg" alt=""></a> 16 </div> 17 </div> 18 </div> 19 20 <div id="modal04" class="modal js-modal"> 21 <div class="modal__bg js-modal-close"></div> 22 <div class="modal__content"> 23 <img src="/img/work-1.jpg" alt="photo-1"> 24 <a href="" class="js-modal-close">close</a> 25 </div> 26 </div> 27 <div id="modal05" class="modal js-modal"> 28 <div class="modal__bg js-modal-close"></div> 29 <div class="modal__content"> 30 <img src="/img/work-2.jpg" alt="photo-2"> 31 </div> 32 <a href="" class="js-modal-close">close</a> 33 </div> 34 </div> 35 <div id="modal06" class="modal js-modal"> 36 <div class="modal__bg js-modal-close"></div> 37 <div class="modal__content"> 38 <img src="/img/work-3.jpg" alt="photo-3"> 39 </div> 40 <a href="" class="js-modal-close">close</a> 41 </div> 42 </div> 43 44 </div> 45 </div>

javascript

1 2jQuery(function(){ 3 jQuery('.js-modal-open').each(function(){ 4 jQuery(this).on('click',function(){ 5 var target = jQuery(this).data('target'); 6 var modal = document.getElementById(target); 7 jQuery(modal).fadeIn(); 8 return false; 9 }); 10 }); 11 jQuery('.js-modal-close').on('click',function(){ 12 jQuery('.js-modal').fadeOut(); 13 return false; 14 }); 15}); 16 17 18 19jQuery(function($){ 20 $('.js-modal-open').on('click', function () { 21 $body.toggleClass('modal-open'); 22 $('.js-modal-close').on('click', function () { 23 $body.removeClass('modal-open'); 24 }); 25 }); 26}); 27

css

1 2 3.modal{ 4 display: none; 5 height: 100vh; 6 position: fixed; 7 top: 0; 8 width: 100%; 9 z-index: 999; 10 11.modal__bg{ 12 background: rgba(0,0,0,0.8); 13 position: absolute; 14 width: 100%; 15 height: 100%; 16} 17.modal__content{ 18 background: #fff; 19 left: 50%; 20 padding: 50px 35px; 21 position: absolute; 22 top: 50%; 23 transform: translate(-50%,-50%); 24 width: 70%; 25 max-width: 500px; 26 height: 70%; 27 overflow-y: scroll; 28 z-index: 999; 29 img { 30 margin-bottom: 30px; 31 } 32 .work-item-text { 33 text-align: center; 34 width: 85%; 35 margin: 0 auto; 36 .fas { 37 font-size: 25px; 38 padding-right: 10px; 39 } 40 .work-place { 41 padding: 10px 0; 42 } 43 .work-camera { 44 padding-bottom: 30px; 45 } 46 .work-explain { 47 padding-bottom: 20px; 48 line-height: 25px; 49 } 50 } 51 .work-url { 52 padding-bottom: 30px; 53 } 54 55 56 .js-modal-close { 57 display: block; 58 text-align: center; 59 color: $text-color; 60 padding: 10px; 61 border: 1px $text-color solid; 62 width: 50%; 63 margin: 0 auto; 64 &:hover { 65 background-color: $text-color; 66 color: #fff; 67 } 68 } 69} 70} 71 72 73 74body .modal-open { 75 height: 100vh; 76 overflow-y: hidden; 77} 78

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

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

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

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

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

kuma_kuma_

2020/09/16 23:13

jQueryを使用されているようなので 指定で使っているCSSファイルとJSファイル名を教えてもらえませんか?
MIYABITSUJIMOTO

2020/09/16 23:44

コメントありがとうございます。 /css/style.css /js/script.js という感じでよろしいでしょうか?
kuma_kuma_

2020/09/17 00:03

できればjQueryのファイルを教えてほしかったんだけど...
hatena19

2020/09/17 00:42

CSSはSCSSですか。もしそうなら、タグにSCSSも追加してください。 あと、変数の宣言部分も追加してください。
guest

回答1

0

修正依頼にコメントしましたが、SCSSを使っているならタグにSCSSを追加してください。
また、SCSSコードの変数宣言の部分を追加しておいてください。

間違いがCSSとJSに一つずつありますのでそれを修正すれば想定の動作になるでしょう。

$body$('body') に修正

js

1jQuery(function($){ 2 $('.js-modal-open').on('click', function () { 3 $('body').toggleClass('modal-open'); 4 $('.js-modal-close').on('click', function () { 5 $('body').removeClass('modal-open'); 6 }); 7 }); 8});

body .modal-openbody.modal-open に修正

scss

1/* body .modal-open { */ 2body.modal-open { 3 height: 100vh; 4 overflow-y: hidden; 5}

.modal-openはbodyに設定されているので半角空白は削除してください。
半角空白があるとbodyの子要素という意味になります。

投稿2020/09/17 01:15

hatena19

総合スコア34075

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

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

MIYABITSUJIMOTO

2020/10/11 15:55

ご回答ありがとうございます お返事大変遅くなり申し訳ございません。 通知に気づかずいました。 先ほど試してみると、トップページから全くスクロールできなくなりました。逆にモーダル の時はきちんと背景がスクロールされるようになってしまいました。。。。。 逆ということですかね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問