勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

モーダルウィンドウ表示時にウィンドウのスクロール位置をリセットする方法

  jQuery JavaScript

モーダルウィンドウ内で「縦にスクロール→ウィンドウを閉じる→改めてモーダルウィンドウを開く」とスクロール位置はそのままの状態でウィンドウが開く。これをウィンドウを開く度にスクロール位置を一番上に戻したい(リセットしたい)。以下にサンプルと対応方法をメモ。

 

サンプル

https://taitan916.info/sample/modal_scroll/

通常版のモーダルウィンドウだとスクロール位置はそのままになるが、改良版の方はウィンドウを開く度にスクロール位置がリセットされる筈。

 

対応方法

ソースコード

<button class="modal_btn" data-id="1">通常版</button>
<button class="modal_btn" data-id="2">改良版</button>

<div id="modal_1" class="modal js-modal">
    <div class="modal-container">
        <div class="modal-close js-modal-close">×</div>
        <div class="modal-content">
            <p>通常版</p>
            <p>通常版</p>
            <p>通常版</p>
            <p>通常版</p>
            <p>通常版</p>
            <p>通常版</p>
            <p>通常版</p>
        </div>
    </div>
</div>

<div id="modal_2" class="modal js-modal">
    <div class="modal-container">
        <div class="modal-close js-modal-close">×</div>
        <div class="modal-content">
            <p>改良版</p>
            <p>改良版</p>
            <p>改良版</p>
            <p>改良版</p>
            <p>改良版</p>
            <p>改良版</p>
            <p>改良版</p>
        </div>
    </div>
</div>

<script type="text/javascript" src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script>
$(function(){
    $(`.modal_btn`).on(`click`, function(){
        const data_id = $(this).data(`id`);
        $(`#modal_${data_id}`).addClass('is-active');

        //改良版の場合
        if( data_id == 2 ){

            //スクロール位置をリセットする
            $(`#modal_${data_id}`).find(`.modal-content`).scrollTop(0);
        }
    });
    $(`.modal-close`).on(`click`, function(){
        $(`.modal`).removeClass('is-active');
    });
})
</script>

解説等

以下でスクロール位置をリセットしている。

$(モーダルウィンドウ内のスクロールが発生する部分のセレクタ).scrollTop(0);

 

リファレンス

.scrollTop()

https://api.jquery.com/scrollTop/

 

その他

モーダルウィンドウ自体についてはこちらのページを参考にさせていただいた。

 - jQuery JavaScript

  関連記事

jquery.snipeの使い方

使い方によっては面白くなりそう。 ■jquery.snipe http://ra ...

表示範囲を自由に変更可能な折れ線グラフが表示できるJSライブラリ amCharts の使用方法

どこかのサイトを閲覧していた際に、恐らくはJavaScriptのライブラリで描写 ...

jQueryにて何らかの処理中にブラウザをロックする「Block UI」プラグインの利用方法

jQueryにて何らかの処理中、ユーザーによるクリックや入力等の動作を防ぎたかっ ...

jQueryの画像スライダー用プラグイン「slick」の使い方

jQueryの画像スライダー用プラグイン「slick」の使い方についてソースコー ...

ブラウザのSafariのみスクロール関連のイベントが発火しない場合の対応方法

jQueryで一定距離スクロールさせた場合に発火するイベントをプログラムしていた ...