JavaScript はモーダルボックスのドラッグ効果を実現します

JavaScript はモーダルボックスのドラッグ効果を実現します

これはモーダル ボックスのドラッグのケースです。ここで実装する関数は次のとおりです。

1. ポップアップ レイヤーをクリックすると、モーダル ボックスがポップアップ表示され、灰色の半透明のマスキング レイヤーが表示されます。

2. 閉じるボタンをクリックして、モーダル ボックスと灰色の半透明マスク レイヤーを同時に閉じます。

3. マウスをモーダル ボックスの一番上の行に置き、マウスを押したままモーダル ボックスをドラッグしてページ上を移動します。

4. マウスを放してモーダル ボックスのドラッグを停止します。

実装のアイデアは次のとおりです。

ポップアップ レイヤーをクリックすると、モーダル ボックスとブロッキング レイヤーが表示されます。display:block;

閉じるボタンをクリックすると、モーダル ボックスとカバー レイヤーが非表示になります (display:none;)。

ページ上でドラッグする原理: マウスを押して移動し、マウスを放します。

トリガー イベントは、マウスが押されたときの mousedown、マウスが移動されたときの mousemove、マウスが放されたときの mouseup です。

ドラッグ処理: マウスが移動すると、最新の値を取得してモーダル ボックスの左と上の値に割り当て、モーダル ボックスがマウスに追従できるようにします。

マウス クリックによってトリガーされるイベント ソースは、一番上の行、つまり <div id="title" class="login-title">Login Member です。

マウスの座標からボックス内のマウスの座標を引いた値が、モーダル ボックスの実際の位置になります。

マウスが押された状態で、ボックス内のマウスの座標を取得します。

マウスを移動し、モーダル ボックスの座標を、マウス座標からボックス座標を引いた値に設定します。移動イベントがプレス イベントに書き込まれることに注意してください。

マウスを放すとドラッグが停止し、マウス移動イベントが解放されます。

実装コードは次のとおりです。

<!DOCTYPE html>
<html>

<head lang="ja">
    <メタ文字セット="UTF-8">
    <タイトル></タイトル>
    <スタイル>
        .ログインヘッダー{
            幅: 100%;
            テキスト配置: 中央;
            高さ: 30px;
            フォントサイズ: 24px;
            行の高さ: 30px;
        }
        
        ウル、
        李、
        オール、
        dl、
        dt、
        dd、
        div、
        p、
        スパン、
        h1,
        h2,
        h3,
        h4,
        h5,
        h6,
        {
            パディング: 0px;
            マージン: 0px;
        }
        
        。ログイン {
            表示: なし;
            幅: 512ピクセル;
            高さ: 280px;
            位置: 固定;
            境界線: #ebebeb 実線 1px;
            左: 50%;
            上位: 50%;
            背景: #ffffff;
            ボックスシャドウ: 0px 0px 20px #ddd;
            zインデックス: 9999;
            変換: translate(-50%, -50%);
        }
        
        .ログインタイトル{
            幅: 100%;
            マージン: 10px 0px 0px 0px;
            テキスト配置: 中央;
            行の高さ: 40px;
            高さ: 40px;
            フォントサイズ: 18px;
            位置: 相対的;
            カーソル: 移動;
        }
        
        .ログイン入力コンテンツ{
            上マージン: 20px;
        }
        
        .ログインボタン{
            幅: 50%;
            マージン: 30px 自動 0px 自動;
            行の高さ: 40px;
            フォントサイズ: 14px;
            境界線: #ebebeb 1px 実線;
            テキスト配置: 中央;
        }
        
        .ログイン-bg {
            表示: なし;
            幅: 100%;
            高さ: 100%;
            位置: 固定;
            上: 0px;
            左: 0px;
            背景: rgba(0, 0, 0, .3);
        }
        
        {
            テキスト装飾: なし;
            色: #000000;
        }
        
        .ログインボタン a {
            表示: ブロック;
        }
        
        .ログイン入力 入力.リスト入力 {
            フロート: 左;
            行の高さ: 35px;
            高さ: 35px;
            幅: 350ピクセル;
            境界線: #ebebeb 1px 実線;
            テキストインデント: 5px;
        }
        
        .ログイン入力{
            オーバーフロー: 非表示;
            マージン: 0px 0px 20px 0px;
        }
        
        .ログイン入力ラベル{
            フロート: 左;
            幅: 90ピクセル;
            右パディング: 10px;
            テキスト配置: 右;
            行の高さ: 35px;
            高さ: 35px;
            フォントサイズ: 14px;
        }
        
        .ログインタイトルスパン{
            位置: 絶対;
            フォントサイズ: 12px;
            右: -20px;
            上: -30px;
            背景: #ffffff;
            境界線: #ebebeb 実線 1px;
            幅: 40px;
            高さ: 40px;
            境界線の半径: 20px;
        }
    </スタイル>
</head>

<本文>
    <div class="login-header"><a id="link" href="javascript:;" rel="external nofollow" >クリックするとログイン ボックスが表示されます</a></div>
    <div id="ログイン" class="ログイン">
        <div id="title" class="login-title">メンバーログイン<span><a id="closeBtn" href="javascript:void(0);" rel="external nofollow" rel="external nofollow" class="close-login">閉じる</a></span>
        </div>
        <div class="ログイン入力コンテンツ">
            <div class="ログイン入力">
                <label>ユーザー名:</label>
                <input type="text" placeholder="ユーザー名を入力してください" name="info[ユーザー名]" id="ユーザー名" class="list-input">
            </div>
            <div class="ログイン入力">
                <label>ログインパスワード:</label>
                <input type="password" placeholder="ログインパスワードを入力してください" name="info[password]" id="password" class="list-input">
            </div>
        </div>
        <div id="loginBtn" class="login-button"><a href="javascript:void(0);" rel="external nofollow" rel="external nofollow" id="login-button-submit">メンバーログイン</a></div>
    </div>
    <!-- カバー層 -->
    <div id="bg" class="login-bg"></div>
    <スクリプト>
        // 1. 要素を取得する var login = document.querySelector('.login');
        var マスク = document.querySelector('.login-bg');
        var link = document.querySelector('#link');
        var closeBtn = document.querySelector('#closeBtn');
        var title = document.querySelector('#title');
        // 2. ポップアップリンクリンクをクリックしてマスクとログインを表示します。link.addEventListener('click', function() {
                mask.style.display = 'ブロック';
                login.style.display = 'ブロック';
            })
            // 3. closeBtn をクリックしてマスクを非表示にしてログインします 
        closeBtn.addEventListener('click', 関数() {
                マスクスタイル表示 = 'なし';
                login.style.display = 'なし';
            })
            // 4. ドラッグを開始する // (1) マウスを押してボックス内のマウスの座標を取得する title.addEventListener('mousedown', function(e) {
            var x = e.pageX - login.offsetLeft;
            var y = e.pageY - login.offsetTop;
            // (2) マウスが移動すると、ページ上のマウスの座標からボックス内のマウスの座標を引いた値がモーダルボックスの左と上の値になります document.addEventListener('mousemove', move)

            関数move(e) {
                login.style.left = e.pageX - x + 'px';
                login.style.top = e.pageY - y + 'px';
            }
            // (3) マウスがポップアップしたら、マウス移動イベントを削除します document.addEventListener('mouseup', function() {
                document.removeEventListener('mousemove', 移動);
            })
        })
    </スクリプト>
</本文>

</html>

効果は次のとおりです。

JavaScript を使用してモーダル ドラッグ効果を実装する方法についての記事はこれで終わりです。JavaScript モーダル ドラッグの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JavaScript はドラッグ可能なモーダルボックスを実装します
  • JavaScript でモバイル モーダル ボックスの効果を実現
  • Bootstrap はネストされたモーダル ボックスのサンプル コードを実装します。
  • Bootstrapはモーダルボックス効果を実現する
  • ドラッグ効果を実現するためのブートストラップモーダルボックス
  • Bootstrapモーダルボックスを水平および垂直に中央に配置し、ドラッグ機能を追加しました

<<:  30 種類の無料の高品質英語リボンフォント

>>:  MYSQL 演算子の概要

推薦する

React スキャフォールディングの構築方法を学ぶ

1. フロントエンドエンジニアリングの複雑さいくつかの小さなデモ プログラムを開発するだけであれば、...

CSSを使用して複数の画像を中央に水平に表示する方法

まず実装手順について説明します。最終結果 2. コードの実装HTML部分 <div class...

React Native スキャフォールディングの基本的な使い方の詳細な説明

プロジェクトを構築する対応するパスでコマンドラインを実行します: react-native init...

CSSはcalc()を使用して現在の表示画面の高さを取得します

まず、CSS3 の相対的な長さの単位を見てみましょう (詳細なチュートリアルを参照してください)。相...

MySQL をインストールした後に調整する必要がある 10 のパフォーマンス設定項目

このブログでは、MySQL データベースをインストールした後に調整することが推奨される 10 のパフ...

JavaScriptで配列を作成する方法の詳細な説明

目次JavaScript で配列を作成する配列の使用配列を分割文字列に変換する配列に要素を追加する配...

クールなネオンライト効果を実現する純粋な CSS (デモ付き)

私は最近、YouTube の CSS アニメーション効果チュートリアル シリーズをフォローしています...

クエリプロファイラを使用して MySQL ステートメントの実行時間を表示する方法

前回の記事では、MySQL ステートメントの実行時間をチェックする 2 つの方法を紹介しました。今日...

mysql の存在する例と存在しない例の詳細な説明

mysql の存在する例と存在しない例の詳細な説明テーブルA |列1 | 列1 | 列3 |テーブル...

Tomcat Nativeを使用してTomcat IO効率を向上させる方法の詳細な説明

目次導入Tomcatへの接続方法APR と Tomcat ネイティブtomcat で APR を使用...

Ubuntu 20.04 中国語入力方法のインストール手順

この記事では、Google 入力方法をインストールします。実は以前はSogou入力方式を使っていたの...

Windows Server 2016 に MySQL 5.7.19 の解凍バージョンをインストールするための詳細なチュートリアル

MySQL 5.7.19 winx64 解凍版のインストールチュートリアルを収録しています。具体的な...

Ansibleを使用してディレクトリ内のすべてのコンテンツを削除する方法

Ansible を使用する学生は、以下に示すように、Ansible が特定のフォルダーまたはファイル...

LinuxにMySQLデータベース5.6のソースコードをインストールし、ログインユーザーのパスワードを変更する

この記事では、主に Linux で MYSQL データベースをインストールする方法について説明し、M...