質問編集履歴

3

コード追加

2020/09/13 03:06

投稿

h_ryoooh
h_ryoooh

スコア13

test CHANGED
File without changes
test CHANGED
@@ -1,7 +1,3 @@
1
- お世話になります。
2
-
3
-
4
-
5
1
  モーダルウィンドウについての質問です。
6
2
 
7
3
 
@@ -20,4 +16,216 @@
20
16
 
21
17
 
22
18
 
19
+ ```ここに言語を入力
20
+
21
+ ーモーダルを開く方のhtml-
22
+
23
+ <div class="select-box-item mr pc">
24
+
25
+ <img src="image/tokyo-kenkyo.jpg" alt="">
26
+
27
+ <h3 class="story-place">Tokyo Kenkyo<span>カフェ</span></h3>
28
+
29
+ <p class="select-thin">3フロアから成るおしゃれカフェで、<br>
30
+
31
+ 日替わりでほっこり味わう和&洋モーニング</p>
32
+
33
+ <a class="modal-syncer button-link readmore" data-target="modal-content-01">READ MORE<span class="arrow"></span></a>
34
+
35
+ </div>
36
+
37
+ <div class="select-box-item mr tab">
38
+
39
+ <img src="image/tokyo-kenkyo.jpg" alt="">
40
+
41
+ <h3 class="story-place">Tokyo Kenkyo<span>カフェ</span></h3>
42
+
43
+ <p class="select-thin">3フロアから成るおしゃれカフェで、<br>
44
+
45
+ 日替わりでほっこり味わう和&洋モーニング</p>
46
+
47
+ <a class="modal-syncer button-link readmore" data-target="modal-content-01-sp">READ MORE<span class="arrow"></span></a>
48
+
49
+ </div>
50
+
51
+
52
+
53
+ ―開いたモーダルの中身のhtml-
54
+
55
+ <div id="modal-content-01" class="modal-content pc">
56
+
57
+ <div class="modal-content-inner">
58
+
59
+ <img src="image/pc_run&walk_Tokyo.jpg" alt="">
60
+
61
+ <div class="button-link-x">
62
+
63
+ <a id="modal-close" class="button-link button-link-x"><i class="fas fa-times-circle"></i></a>
64
+
65
+ </div>
66
+
67
+ </div>
68
+
69
+ </div>
70
+
71
+ <div id="modal-content-01-sp" class="modal-content tab">
72
+
73
+ <div class="modal-content-inner">
74
+
75
+ <img src="image/sp_run&walk_Tokyo.jpg" alt="">
76
+
77
+ <div class="button-link-x">
78
+
79
+ <a id="modal-close" class="button-link button-link-x"><i class="fas fa-times-circle"></i></a>
80
+
81
+ </div>
82
+
83
+ </div>
84
+
85
+ </div>
86
+
87
+
88
+
89
+ ーjs-
90
+
91
+ //モーダルウィンドウ
92
+
93
+ $(function(){
94
+
95
+ //グローバル変数
96
+
97
+ var nowModalSyncer = null ; //現在開かれているモーダルコンテンツ
98
+
99
+ var modalClassSyncer = "modal-syncer" ; //モーダルを開くリンクに付けるクラス名
100
+
101
+ //モーダルのリンクを取得する
102
+
103
+ var modals = document.getElementsByClassName( modalClassSyncer ) ;
104
+
105
+ //モーダルウィンドウを出現させるクリックイベント
106
+
107
+ for(var i=0,l=modals.length; l>i; i++){
108
+
109
+ //全てのリンクにタッチイベントを設定する
110
+
111
+ modals[i].onclick = function(){
112
+
113
+ //ボタンからフォーカスを外す
114
+
115
+ this.blur() ;
116
+
117
+ //ターゲットとなるコンテンツを確認
118
+
119
+ var target = this.getAttribute( "data-target" ) ;
120
+
121
+ //ターゲットが存在しなければ終了
122
+
123
+ if( typeof( target )=="undefined" || !target || target==null ){
124
+
125
+ return false ;
126
+
127
+ }
128
+
129
+ //コンテンツとなる要素を取得
130
+
131
+ nowModalSyncer = document.getElementById( target ) ;
132
+
133
+ //ターゲットが存在しなければ終了
134
+
135
+ if( nowModalSyncer == null ){
136
+
137
+ return false ;
138
+
139
+ }
140
+
141
+ //キーボード操作などにより、オーバーレイが多重起動するのを防止する
142
+
143
+ if( $( "#modal-overlay" )[0] ) return false ; //新しくモーダルウィンドウを起動しない
144
+
145
+ //if($("#modal-overlay")[0]) $("#modal-overlay").remove() ; //現在のモーダルウィンドウを削除して新しく起動する
146
+
147
+ //オーバーレイを出現させる
148
+
149
+ $( "body" ).append( '<div id="modal-overlay"></div>' ) ;
150
+
151
+ $( "#modal-overlay" ).fadeIn( "fast" ) ;
152
+
153
+ //コンテンツをセンタリングする
154
+
155
+ centeringModalSyncer() ;
156
+
157
+ //コンテンツをフェードインする
158
+
159
+ $( nowModalSyncer ).fadeIn( "slow" ) ;
160
+
161
+ //[#modal-overlay]、または[#modal-close]をクリックしたら…
162
+
163
+ $( "#modal-overlay,#modal-close" ).unbind().click( function() {
164
+
165
+ //[#modal-content]と[#modal-overlay]をフェードアウトした後に…
166
+
167
+ $( "#" + target + ",#modal-overlay" ).fadeOut( "slow" , function() {
168
+
169
+ //[#modal-overlay]を削除する
170
+
171
+ $( '#modal-overlay' ).remove() ;
172
+
173
+ } ) ;
174
+
175
+ //現在のコンテンツ情報を削除
176
+
177
+ nowModalSyncer = null ;
178
+
179
+ } ) ;
180
+
181
+ }
182
+
183
+ }
184
+
185
+
186
+
187
+ //リサイズされたら、センタリングをする関数[centeringModalSyncer()]を実行する
188
+
189
+ $( window ).resize( centeringModalSyncer ) ;
190
+
191
+ //センタリングを実行する関数
192
+
193
+ function centeringModalSyncer() {
194
+
195
+ //モーダルウィンドウが開いてなければ終了
196
+
197
+ if( nowModalSyncer == null ) return false ;
198
+
199
+ //画面(ウィンドウ)の幅、高さを取得
200
+
201
+ var w = $( window ).width() ;
202
+
203
+ var h = $( window ).height() ;
204
+
205
+ //コンテンツ(#modal-content)の幅、高さを取得
206
+
207
+ // jQueryのバージョンによっては、引数[{margin:true}]を指定した時、不具合を起こします。
208
+
209
+ // var cw = $( nowModalSyncer ).outerWidth( {margin:true} ) ;
210
+
211
+ // var ch = $( nowModalSyncer ).outerHeight( {margin:true} ) ;
212
+
213
+ var cw = $( nowModalSyncer ).outerWidth() ;
214
+
215
+ var ch = $( nowModalSyncer ).outerHeight() ;
216
+
217
+ //センタリングを実行する
218
+
219
+ $( nowModalSyncer ).css( {"left": ((w - cw)/2) + "px","top": ((h - ch)/2) + "px"} ) ;
220
+
221
+ }
222
+
223
+ } ) ;
224
+
225
+ ```
226
+
227
+ サーバーにアップして、PCとSPのモーダル画像を違う画像したく思います。PCですと普通に閉じるボタンを押すと消えるのですが、SPでも閉じるのですがその直後に自動的にモーダルが再度表示されてしまいます。
228
+
229
+
230
+
23
231
  ご教授お願い申し上げます。

2

参考リンクの追加

2020/09/13 03:06

投稿

h_ryoooh
h_ryoooh

スコア13

test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
 
16
16
 
17
- https://syncer.jp/jquery-modal-window
17
+ [https://syncer.jp/jquery-modal-window](https://syncer.jp/jquery-modal-window)
18
18
 
19
19
  のサイトを参考に作りました。
20
20
 

1

作成する上で参考にしたサイト

2020/09/13 02:18

投稿

h_ryoooh
h_ryoooh

スコア13

test CHANGED
File without changes
test CHANGED
@@ -14,4 +14,10 @@
14
14
 
15
15
 
16
16
 
17
+ https://syncer.jp/jquery-modal-window
18
+
19
+ のサイトを参考に作りました。
20
+
21
+
22
+
17
23
  ご教授お願い申し上げます。