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

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

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

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

jQuery

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

HTML

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

CSS

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

Q&A

解決済

1回答

3923閲覧

モーダルウィンドウをスクロール対応したい

science_mac

総合スコア29

JavaScript

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

jQuery

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

HTML

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

CSS

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

0グッド

1クリップ

投稿2018/04/27 08:31

編集2018/04/27 08:36

モーダルウィンドウを表示させた時に、枠内に表示が収まらない時はスクロールできるように対応したいです。

CSS

1#modal-content{ 2 width:50%; 3 margin:1.5em auto 0; 4 padding:10px 20px; 5 border:2px solid #aaa; 6 background:#fff; 7 z-index:2; 8 position:fixed; 9 display:none; 10 overflow: auto; 11} 12 13.button-link{ 14 margin-left : 60px; 15 text-align:center; 16 -moz-border-radius: 5px; 17 -webkit-border-radius: 5px; 18 border-radius: 5px; 19} 20 21.button-link:hover{ 22 cursor:pointer; 23 color:#f00; 24} 25 26#modal-overlay{ 27 z-index:1; 28 display:none; 29 position:fixed; 30 top:0; 31 left:0; 32 width:100%; 33 height:120%; 34 background-color:rgba(0,0,0,0.75); 35}

HTML

1<!-- ここからモーダルウィンドウ --> 2<div id="modal-content"> 3 <!-- モーダルウィンドウのコンテンツ開始 --> 4 <p>モーダルウィンドウのコンテンツをHTMLで自由に編集することができます。画像や、動画埋め込みなど、お好きなものを入れて下さい。</p> 5 <p>「閉じる」か「背景」をクリックするとモーダルウィンドウを終了します。</p> 6 <p><a id="modal-close" class="button-link">閉じる</a></p> 7 <!-- モーダルウィンドウのコンテンツ終了 --> 8</div> 9 10<p><a id="modal-open" class="button-link">クリックするとモーダルウィンドウを開きます。</a></p> 11<!-- ここまでモーダルウィンドウ -->

jQuery

1jQuery(function($){ 2 3//モーダルウィンドウを出現させるクリックイベント 4$("#modal-open").click( function(){ 5 6 //キーボード操作などにより、オーバーレイが多重起動するのを防止する 7 $( this ).blur() ; //ボタンからフォーカスを外す 8 if( $( "#modal-overlay" )[0] ) return false ; //新しくモーダルウィンドウを起動しない (防止策1) 9 //if($("#modal-overlay")[0]) $("#modal-overlay").remove() ; //現在のモーダルウィンドウを削除して新しく起動する (防止策2) 10 11 //オーバーレイを出現させる 12 $( "body" ).append( '<div id="modal-overlay"></div>' ) ; 13 $( "#modal-overlay" ).fadeIn( "slow" ) ; 14 15 //コンテンツをセンタリングする 16 centeringModalSyncer() ; 17 18 //コンテンツをフェードインする 19 $( "#modal-content" ).fadeIn( "slow" ) ; 20 21 //[#modal-overlay]、または[#modal-close]をクリックしたら… 22 $( "#modal-overlay,#modal-close" ).unbind().click( function(){ 23 24 //[#modal-content]と[#modal-overlay]をフェードアウトした後に… 25 $( "#modal-content,#modal-overlay" ).fadeOut( "slow" , function(){ 26 27 //[#modal-overlay]を削除する 28 $('#modal-overlay').remove() ; 29 30 } ) ; 31 32 } ) ; 33 34} ) ; 35 36//リサイズされたら、センタリングをする関数[centeringModalSyncer()]を実行する 37$( window ).resize( centeringModalSyncer ) ; 38 39 //センタリングを実行する関数 40 function centeringModalSyncer() { 41 42 //画面(ウィンドウ)の幅、高さを取得 43 var w = $( window ).width() ; 44 var h = $( window ).height() ; 45 46 // コンテンツ(#modal-content)の幅、高さを取得 47 // jQueryのバージョンによっては、引数[{margin:true}]を指定した時、不具合を起こします。 48// var cw = $( "#modal-content" ).outerWidth( {margin:true} ); 49// var ch = $( "#modal-content" ).outerHeight( {margin:true} ); 50 var cw = $( "#modal-content" ).outerWidth(); 51 var ch = $( "#modal-content" ).outerHeight(); 52 53 //センタリングを実行する 54 $( "#modal-content" ).css( {"left": ((w - cw)/2) + "px","top": ((h - ch)/2) + "px"} ) ; 55 56 } 57 58} ) ;

modal-contentにoverflow: auto;を指定すればうまくいくかなと思ったのですが、どうもうまくいかず...
どうか対応策を教えていただきたいです。

モーダルウィンドウ実装について参考にしたサイトは以下です。
https://syncer.jp/jquery-modal-window

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

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

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

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

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

guest

回答1

0

ベストアンサー

css

1#modal-content{ 2 max-height: 100vh; 3}

max-heightを追加すれば、スクロールされるような。

margin-topの分があるので、こっちですかね。

css

1#modal-content{ 2 max-height: calc(100vh - 1.5em); 3}

投稿2018/04/27 09:03

kszk311

総合スコア3404

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

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

science_mac

2018/04/27 09:08

な、なるほど 表示する高さの領域を指定していなかったので、そもそも表示しきれてないという判定になっていなかったんですね... ありがとうございます!無事スクロールを実装できました。 とても間抜けな質問になってしまい、申し訳ありませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問