マウスのドラッグ効果を実現するJavaScript

マウスのドラッグ効果を実現するJavaScript

この記事では、マウスドラッグ効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します。具体的な内容は次のとおりです。

今回のエフェクト画像は以下の通り。

この実験の難しさは、ボックスとマウスの相対的な位置を変えずに、マウスを押したり動かしたりすることでドラッグ効果を実現することだと思います。

ドラッグ効果を実現するにはどうすればいいですか?

マウスが押された状態、マウスが移動された状態、マウスが上げられた状態をそれぞれ表す、 onmousedownonmousemoveonmouseup 3 つの関数を使用する必要があります。

マウス押下のコールバック関数では、 clientXclientYを通じてマウスの初期位置を取得し、 offsetLeftoffsetTopを通じてボックスの初期位置を取得し、マウスの初期位置とボックスの初期位置の差を計算する必要があります。

マウス移動コールバック関数では、マウスの位置と以前に計算された差に基づいてボックスの現在の位置を取得し、左と上の値を変更する必要があります。位置を絶対に設定することを忘れないでください (忘れていたので...)

マウスアップのコールバック関数では、 onmousemoveonmouseup値を null に設定して、マウスの移動とマウスアップをクリアする必要があります。

こちらも注目! ! !

マウス移動機能とマウスリフト機能は、マウス押下機能内に記述する必要があります。これは、マウスが押された後の後続の動作を設計する必要があるためです。次の点が非常に重要です。

マウスダウン機能はdivにあり、マウス移動とマウスアップ機能はドキュメントにあります。

div内でマウスを動かすのではなく、ページ全体を動かしたいからです

重要なポイントはおそらく次のとおりです。コードは次のとおりです。

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <meta http-equiv="X-UA-compatible" content="IE=edge">
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
    <title>ドキュメント</title>
    <スタイル>
        #箱{
            幅: 100ピクセル;
            高さ: 100px;
            背景色: アクアマリン;
            境界線の半径: 14px;
            ボックスの影: 2px 2px 6px rgba(0,0,0,.3);

            /* 皆さん、位置を設定せずに左に移動して変更したいとします。 。 。 */
            位置: 絶対;
        }
    </スタイル>
</head>
<本文>
    <div id="box"></div>
    <スクリプト>
        box = document.getElementById("box"); とします。
        box.onmousedown=関数(イベント){
            disx = event.clientX-box.offsetLeft; とします。
            disy=event.clientY-box.offsetTop とします。
            //これはbox.onmousemoveではなく、document.onmousemoveです
            document.onmousemove=関数(イベント){
                box.style.left=event.clientX-disx+'px';
                box.style.top=event.clientY-disy+'px';
            }

            //ommousedownに書き込む document.onmouseup=function(){
                //両方をnullに設定する
            ドキュメント.onmousemove=null;
            ドキュメント.onmouseup=null;
            false を返します。
        }
        }
        
    </スクリプト>
</本文>
</html>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • JavaScript を使用してマウス ドラッグ イベントを実装する
  • マウスをドラッグしてサブウィンドウを移動するJS実装
  • jsはマウスをドラッグして画像を切り替えるメソッドを実装します
  • マウスドラッグ複数選択機能を実現する js の例
  • JS マウスドラッグ例の分析
  • jsMindはマウスをドラッグしてノードの位置を調整します
  • js はマウスドラッグ div を左右にスライドすることを実現します
  • JavaScript マウスドラッグイベントの詳細な説明
  • マウスのドラッグとズームを実現する js div サンプルコード
  • JavaScriptはキャンバスを使用してマウスドラッグ機能を実装します

<<:  MySQL をクリーンにアンインストールする方法 (テスト済みで効果的)

>>:  CSSは左固定と右適応のレイアウト方法を実現します

推薦する

vue-router を遅延ロードする 3 つの方法のまとめ

遅延読み込みを使用しない 'vue' から Vue をインポートします。 '...

MySQL 面接でよく聞かれる質問への回答

序文:さまざまな技術職の面接では、MySQL 関連の質問がよくされるようです。開発職の面接でも運用職...

MySQLストレージエンジンについて学びましょう

目次序文1. MySQL メインストレージエンジン: 2. さまざまなストレージエンジンがテーブルを...

Ubuntu16.04にCUDA9.0をインストールするための詳細なチュートリアル

序文:この記事は、CUDA 9.0 をインストールした経験に基づいています。CUDA 9.0 は現在...

jQueryはドロップダウンメニューのスライド効果を実現します

Web ページを作成するときに、クールでスムーズなドロップダウン メニューが必要になることがあります...

Mac に mysql5.7 をインストールするための完全な手順 (画像とテキスト付き)

最近、Mac システムを使用して、ローカル Web サーバー環境を構築する準備をしていました。 Ma...

Linux inotifyリアルタイムバックアップの実装方法の詳細説明

リアルタイム レプリケーションは、企業データをバックアップする最も重要な方法です。主に、ユーザーが送...

Tomcat マルチレイヤーコンテナの設計に関する簡単な説明

目次コンテナ階層サーブレットの検索を要求するプロセス仕組みTomcat のコンテナは Servlet...

Mysql 5.7.19 無料インストール版 (64 ビット) の設定方法に関する詳細なチュートリアル

公式サイトから mysql-5.7.19-winx64 をダウンロードします。これはシステムの 64...

Vue で Alibaba のアイコンフォント ベクター アイコンを使用する方法について

インターネット上には多くのインポート方法があり、公式も3つのインポート方法を提供していますが、インポ...

Logrotate は 2 時間ごとに Catalina.out ログローテーションを実装します

1. Logrotateツールの紹介Logrotate はログファイル管理ツールです。Linux に...

Linux は、ディレクトリが存在するかどうかを判断するために if を使用します。

Linux で if を使用してディレクトリが存在するかどうかを判断する方法方法は次のとおりです。...

MySQLでグローバル変数とセッション変数を設定する2つの方法の詳細な説明

1. MySQL でグローバル変数を変更するには 2 つの方法があります。方法 1: my.ini ...

MySQL マスタースレーブ同期、トランザクションロールバックの実装原理

ビンログBinLog は、データベース テーブル構造の変更 (テーブルの作成、変更など) とテーブル...

Vue 日付時刻ピッカーコンポーネントの使い方の詳細な説明

この記事の例では、Vue の日付時刻ピッカーコンポーネントの具体的なコードを参考までに紹介します。具...