text モーダルを表示したときに背景部分はスクロールできないようにする

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了text モーダルを表示したときに背景部分はスクロールできないようにする相关的知识,希望对你有一定的参考价值。

<div id="wrapper">
    <p class="open">
        <button>open modal</button>
    </p>
</div>
<section id="modal">
    <!--modal content -->
</section>
// include jQuery

var current_scrollY;

// OPEN MODAL
$( '.open button' ).on( 'click', function(){
  current_scrollY = $( window ).scrollTop(); 

  $( '#wrapper' ).css( {
    position: 'fixed',
    width: '100%',
    top: -1 * current_scrollY
  } );

  $( '#modal' ).show();

} );

// CLOSE
$( '#modal' ).on( 'click', function( e ){
  if ( e.target.tagName.toLowerCase() === 'section' ){
    $( '#wrapper' ).attr( { style: '' } );
    $( 'html, body' ).prop( { scrollTop: current_scrollY } );

    $( this ).hide();
  }
} );
wrapperをposition: fixed; に変えたとき、
何もしないと上端が0に戻ってしまうので、
現状のスクロール位置をスタイルのtopプロパティにあてることで
背景の位置を維持させます。

また、モーダルを閉じる際には、style指定をリセットすることでfixedを解除させます。
更に、スクロール位置が0に戻ってしまっているので、開くタイミングで保持しておいた値まで移動させましょう。

気をつけるべき点としては、背景要素とモーダル要素を兄弟関係に配置することです。
親子にしてしまうと、モーダルまでfixedされてしまうので。

以上是关于text モーダルを表示したときに背景部分はスクロールできないようにする的主要内容,如果未能解决你的问题,请参考以下文章

python pd.concatしたときに索引の情报が消えていないデータフレームと消えたデータフレームをconcするので生じるnp.nanが现れるスクリプト

markdown ネストしたリレーションで,亲を保存したときに子も保存されるようにする

テーブルコントロールTable Controls: スクロールを伴う場合の例

php 20180425モーダルを闭じてページ内リンク

markdown git stash popしてコンフリクトしたときに取り消したい

markdown 重なった要素をクリックしたときに両方の要素のクリックイベントが発火してしまう