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 演算子の概要

推薦する

Vueはタブ切り替えを実装します

この記事では、タブ切り替えを実装するためのVueの具体的なコードを例として紹介します。具体的な内容は...

MySQL 5.7 の一時テーブルスペースを使用して落とし穴を回避する方法

導入MySQL 5.7 は、SSL/TLS と全体的なセキュリティ開発におけるいくつかの重要な変更に...

ボリュームを使用してホストと Docker コンテナ間でファイルを転送する方法

以前、Docker コンテナとローカル マシン間のファイル転送に関する記事を書きました。しかし、この...

MySQL シリーズ 10 同時実行制御を実装するための MySQL トランザクション分離

目次1.同時アクセス制御2. 取引1. トランザクションは ACID 原則に従います。 2. トラン...

単一行関数と文字計算日付プロセス制御を説明する MySQL の例

目次1. キャラクター機能1. ケースコントロール機能2. キャラクターコントロール機能2. 数学関...

JS は Web ページナビゲーションバーの特殊効果を実現します

この記事では、ネイティブ JS を使用して実装された実用的な Web ナビゲーション バー効果を紹介...

cobbler ベースの Linux システムを自動的にインストールする

1. コンポーネントをインストールする yum install epel-rpm-macros.no...

MySQL 最適化チュートリアル: 大規模なページングクエリ

目次背景制限の最適化最適化方法1. カバーインデックスを使用する2. サブクエリの最適化3. 遅延連...

Linux ファイルシステムの説明: ext4 以降

今日は、ext3 や他の以前のファイル システムとの違いを含め、ext4 の歴史について説明します。...

Linuxにおけるselinuxの基本設定チュートリアルの詳細な説明

selinux ( Security-Enhanced Linux)は、Linux カーネル モジュ...

MySQL インデックスの知識の要約

MySQL インデックスの確立は、MySQL の効率的な操作にとって非常に重要です。インデックスによ...

純粋なJSを使用してセカンダリメニュー効果を実現します

この記事の例では、セカンダリメニュー効果を実現するためのJSの具体的なコードを参考までに共有していま...

MySQL インデックスの一般的な問題の概要

Q1: データベースにはどのようなインデックスがありますか?メリットとデメリットは何ですか? 1. ...

ウェブサイトの再設計はどの家族にとっても難しい作業です

<br />どの家庭にもそれぞれの問題があり、改訂はどの IT 企業にとっても問題の 1...

Docker での RocketMQ の詳細なインストールと使用

RocketMQ イメージを検索するには、Docker の hub.docker.com で検索する...