colorboxで枠内をスクロールできるページを作成しました。
colorboxをそのまま使用する、枠内外の背景部分もスクロールできてしまいます。
そうすると、枠自体もスクロールされて見えなくなることがあるので、背景がスクロールできないようにしてほしいとクライアントから要望がでました。
下記記事を参考にしてjsで制御することにしました。
モーダルを表示したときに背景部分はスクロールできないようにする
C04-07 : ColorBox
HTML
まずはhtmlで背景部分をid=”wrapper”で囲みます。
<div id="wrapper"> <h1>Colorbox Demonstration</h1> <h2>Other Content Types</h2> <p><a class='iframe' href="http://wikipedia.com">Outside Webpage (Iframe)</a></p> </div>
jQuery
jQueryでiframe呼び出し時はスクロールしないように制御します。
onOpen:function()・・・カラーボックスが開き始める前に実行。
onClosed:function()・・・カラーボックスが閉じられてから実行。
<script>
$(document).ready(function(){
var current_scrollY;
$(".iframe").colorbox({
iframe:true, width:"1000px", height:"80%",
onOpen:function(){ current_scrollY = $( window ).scrollTop();
$( '#wrapper' ).css( {
position: 'fixed',
width: '100%',
top: -1 * current_scrollY
} ); },
onClosed:function(){ $( '#wrapper' ).attr( { style: '' } );$( 'html, body' ).prop( { scrollTop: current_scrollY } ); }
});
});
</script>
背景固定するようにしたら、iphoneで真ん中に表示されなくなりました。
スマホには使わない方がいいかもしれません。

