ホームページ ウェブフロントエンド jsチュートリアル JavaScriptイベント処理とマウスドラッグエフェクト実装を詳しく解説_JavaScriptスキル

JavaScriptイベント処理とマウスドラッグエフェクト実装を詳しく解説_JavaScriptスキル

May 16, 2016 pm 05:53 PM
イベント処理 マウスドラッグ

まず、ドラッグされるレイヤー (シミュレーション ウィンドウ) のレンダリングを見てみましょう。


ドラッグ効果を実現するには: ウィンドウの上のタイトル バーでマウスの左ボタンを押し、同時にマウスを動かすと、それに応じてウィンドウが移動します。
ウィンドウ:

コードをコピー コードは次のとおりです:




ウィンドウを自由に移動すると、ウィンドウの位置は絶対になります。
ウィンドウにタイトル バーを追加します。ここでは、ウィンドウの上部に配置されたレイヤーが使用され、タイトル バーのマウス カーソルが設定されます。 ) 図形をドラッグ (移動) します (Chrome でドラッグすると、カーソルがテキスト カーソルに変わり、マウス ボタンを放すと元に戻ります)。


#win {
position:absolute ;
幅:480px;
高さ:320px;
背景色:#4d4d4;
#win_header; 480px;
height:48px;
background-color:#4d4d4d;


指定された要素を取得するユーティリティ関数を定義しますID 属性:




コードをコピー


コードは次のとおりです:ブラウザのコア ID isIE を定義します:
var isIE = (window.navigator.userAgent.indexOf("IE" ) == -1 ) ? false : true;
ウィンドウ要素とそのタイトルバーを取得します:



コードをコピーします


コードは次のとおりです:
コードをコピー


コードは次のとおりです:


var pos =function(x, y ) {
コードをコピーします


コードは次のとおりです:

varoriginalpos = new pos(20, 20) );


ウィンドウのドラッグ中に記録する必要がある値は次のとおりです:
マウスが押されたときのマウス カーソルの位置 コードをコピーします
コードは次のとおりです。

var oldmouse =new pos(0, 0); 🎜>
マウスが押されたときのウィンドウの位置
var oldpos = new pos(0, 0)
マウスが移動したときのウィンドウの新しい位置
var newpos = new pos (0, 0); ウィンドウの初期位置を設定しますコードをコピーします

コードは次のとおりです:

win.style.left =originalpos.x "px";
win .style.top =originalpos.y "px";


ブラウザー (IE と非 IE) では、イベント ハンドラーを要素にバインドする方法が異なります (IE はattachEvent を使用し、IE 以外の IE は addEventListener を使用します)。イベント バインディング操作を簡素化するために、イベント バインディング関数を定義します。
コードをコピーします コードは次のとおりです。

function binding(ev, func) {
if(isIE) {
header.attachEvent("on" ev, func);
header.addEventListener(ev, func, false); >

これらの作業を行った後、マウス イベントの処理を開始できます。
このプログラムでは、マウスの左ボタンのみでウィンドウをドラッグし、他のキーではドラッグできないため、マウスの左ボタンが押されたかどうかを判断する必要があります。この判定はいくつかの関数で使用されるため、関数に抽出され、渡されたパラメータ (マウス キーの値、つまりどのキーが押されたか) によって判定されます。ここで、ブラウザ間の違いに注意する必要があります。IE ではマウスの左ボタンの値は 1 ですが、IE 以外では値は 0 です。
コードをコピーします コードは次のとおりです:

function isLeftButton(btn) {
if(isIE) {
if(btn == 1)
return true;
else
return false;
if(btn == 0)
return true;
else
return false; >}
}


ドラッグ アクションは、マウスの左ボタンを押して移動することで実行されます。このアクションを共有するには、マウスは最初に押すアクション (mousedown) をトリガーし、次に移動アクション (mousemove) をトリガーします。本当にドラッグしているのか、それともマウスがウィンドウ上を通過しているだけなのかを判断するには、マウス ダウン状態を記録する変数を設定します。
var Mousedown = false;
CSS の互換性の問題のため、ここで js を使用してください。マウスがウィンドウのタイトル バー上にあるときの色の変化を制御します。
ホバリング


function over(e) {
Header.style.backgroundColor = "#5d5d5d"
}


残す


function out(e) {
header.style.backgroundColor = "#4d4d4d"
// マウスが動かない場合があります。 be release ウィンドウを離れます、
// このとき、マウスリリースイベント
up(e)
}

Press
press イベントでは、まずマウスの左ボタンが押されたかどうかを判断する必要があります。
押された場合は、その時点でのマウスとウィンドウの位置が記録されます。そうでない場合は記録されません。記録される。



コードをコピー コードは次のとおりです。 function down(e) {
e = e || イベント;
if(!isLeftButton(e.button))
mousedown = true;
oldmouse.x = e.clientX; e.clientY ;
oldpos.x = parseInt(win.style.left.replace("px", ""));
oldpos.y = parseInt(win.style.top.replace("px") , "" ));
}


リリース



コードをコピー
コードは次のとおりです function up(e) { if(!isLeftButton(e.button)) return;
mousedown = false;



の移動には、
を押して移動するという 2 つのマウス イベントが含まれます。移動アクションはマウスの左ボタンが押されている間のみ有効です。
ウィンドウの新しい位置は、ドラッグ状態でのマウスの移動距離(XとYの間の距離)によって決まります。つまり、
左ボタンが押されたときに記録された位置に新しいマウスの位置が送信され、距離が取得されます。次に、マウスの移動距離にウィンドウの位置が加算されて、新しい位置が取得されます。窓。




コードをコピー

コードは次のとおりです。 function move(e) { if(! isLeftButton(e.button)) return; e =e イベント;
newpos.x = e.clientX - oldmouse.x; >newpos.y = e.clientY - oldmouse.y
win.style.left = (oldpos.x newpos.x) "px";
win.style.top = (oldpos.y newpos.y) "px" ;
}
}


最後に要素をバインドしましょう。




コードをコピー

コードは次のとおりです。
ただし、ドラッグには問題があります。 FFでは最初だけは普通にドラッグできますが、その後は少し厄介になります。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Python GUI プログラミング: インタラクティブなインターフェイスを素早く簡単に作成できます。 Python GUI プログラミング: インタラクティブなインターフェイスを素早く簡単に作成できます。 Feb 19, 2024 pm 01:24 PM

Python GUIプログラミングの簡単な紹介 GUI (Graphical User Interface、グラフィカル ユーザー インターフェイス) は、ユーザーがコンピュータとグラフィカルに対話できるようにする方法です。 GUI プログラミングとは、プログラミング言語を使用してグラフィカル ユーザー インターフェイスを作成することを指します。 Python は、豊富な GUI ライブラリを提供する人気のプログラミング言語であり、Python GUI プログラミングを非常に簡単にします。 Python GUI ライブラリの概要 Python には多くの GUI ライブラリがあり、最も一般的に使用されるものは次のとおりです: Tkinter: Tkinter は、Python 標準ライブラリに付属する GUI ライブラリで、シンプルで使いやすいですが、機能が限られています。 PyQt: PyQt は、強力な機能を備えたクロスプラットフォーム GUI ライブラリです。

C++ でイベントの完全な循環キューを管理するにはどうすればよいですか? C++ でイベントの完全な循環キューを管理するにはどうすればよいですか? Sep 04, 2023 pm 06:41 PM

はじめに CircularQueue は線形キューを改良したもので、線形キューのメモリ浪費の問題を解決するために導入されました。循環キューは、FIFO 原理を使用して要素を挿入および削除します。このチュートリアルでは、循環キューの操作とその管理方法について説明します。循環キューとは何ですか?循環キューは、フロントエンドとバックエンドが相互に接続されたデータ構造の別のタイプのキューです。循環バッファとも呼ばれます。これは線形キューと同様に動作しますが、なぜデータ構造に新しいキューを導入する必要があるのでしょうか?線形キューを使用する場合、キューがその上限に達すると、末尾ポインターの前にいくらかのメモリ領域が存在する可能性があります。これによりメモリの損失が発生するため、優れたアルゴリズムではリソースを最大限に活用できる必要があります。メモリの無駄を解決するには

PHP8.0のイベント処理ライブラリ:イベント PHP8.0のイベント処理ライブラリ:イベント May 14, 2023 pm 05:40 PM

PHP8.0 のイベント処理ライブラリ: Event インターネットの継続的な発展に伴い、PHP は人気のバックエンド プログラミング言語として、さまざまな Web アプリケーションの開発に広く使用されています。このプロセスでは、イベント駆動のメカニズムが非常に重要な部分になっています。 PHP8.0 のイベント処理ライブラリ Event は、より効率的で柔軟なイベント処理メソッドを提供します。イベント処理とは何ですか? イベント処理は、Web アプリケーションの開発において非常に重要な概念です。イベントは任意の種類のユーザー行にすることができます

JavaScriptでマウスドラッグライン機能を実装するにはどうすればよいですか? JavaScriptでマウスドラッグライン機能を実装するにはどうすればよいですか? Oct 19, 2023 am 11:51 AM

JavaScriptでマウスドラッグライン機能を実装するにはどうすればよいですか?要約: マウスで線をドラッグする機能は多くのプロジェクトで非常に一般的で、インタラクティブなチャートの作成、スケッチの描画などに使用できます。この記事では、JavaScript を使用してマウス ドラッグ ライン機能を実装する方法を紹介し、読者がそれをよりよく理解して適用できるように、具体的なコード例を示します。はじめに: Web 開発では、多くの場合、高度にインタラクティブな効果を実現する必要があり、マウスのドラッグによる線機能は一般的な要件の 1 つです。マウスをドラッグすることで、

Windows 10でマウスでウィンドウをドラッグするときの遅延の問題を解決する方法 Windows 10でマウスでウィンドウをドラッグするときの遅延の問題を解決する方法 Jan 06, 2024 pm 05:28 PM

win10 システムを使用する過程で、マウスでウィンドウをドラッグするときに遅延やフリーズが発生した場合、編集者はシステム設定に問題があるか、ドライバーに問題があると考えます。ドライバーを再インストールするか、操作中に main.cpl コードを使用して問題を解決してください。Win10 でマウスによるウィンドウのドラッグが遅延する場合の詳細な解決策を見てみましょう。 Win10 でマウスでウィンドウをドラッグするときに遅延が発生する場合の対処方法: 方法 1 (有線および無線共通): 1. Win10 システムのデスクトップで、「win+r」ショートカット キーを押して実行ウィンドウを開きます。 「main.cpl」と入力し、Enter キーを押して確認します。 2. 次に、マウスのプロパティダイアログボックスを開き、マウスボタンをクリックし、「ダブルクリック速度」でカーソルをスライドさせてマウスのダブルクリック速度を調整します。 3. 次に、 をクリックします。

バブリングイベントの意味は何ですか バブリングイベントの意味は何ですか Feb 19, 2024 am 11:53 AM

バブリング イベントとは、Web 開発において、要素でイベントがトリガーされると、イベントがドキュメント ルート要素に到達するまで上位の要素に伝播することを意味します。この伝播方法は、泡が下から徐々に上昇していくようなものであるため、バブリングイベントと呼ばれます。実際の開発では、イベントを正しく処理するために、バブリング イベントがどのように機能するかを知り、理解することが非常に重要です。以下では、バブリングイベントの概念と使用法を、具体的なコード例を通して詳しく紹介します。まず、親要素と 3 つの子要素を持つ単純な HTML ページを作成します。

$listeners を使用して Vue でイベント処理関数を渡す $listeners を使用して Vue でイベント処理関数を渡す Jun 11, 2023 pm 03:09 PM

Vue では、多くの場合、ネストされたコンポーネントがいくつかあり、これらのネストされたコンポーネント間でイベントを渡す必要があります。 Vue では、$emit イベントはコンポーネント間のイベント通信に使用されます。ただし、場合によっては、親コンポーネントのイベント ハンドラーをネストされた子コンポーネントに渡す必要がある場合、$emit イベントの使用は適切ではありません。このとき、Vue が提供する $listeners を使用してイベント処理関数を渡すことができます。それで、$listener とは何ですか?

Vue の v-on ディレクティブの分析: フォーム送信イベントの処理方法 Vue の v-on ディレクティブの分析: フォーム送信イベントの処理方法 Sep 15, 2023 am 09:12 AM

Vue の v-on ディレクティブの分析: フォーム送信イベントの処理方法 Vue.js では、v-on ディレクティブはイベント リスナーをバインドするために使用され、さまざまな DOM イベントをキャプチャして処理できます。その中でも、フォーム送信イベントの処理は Vue の一般的な操作の 1 つです。この記事では、v-on ディレクティブを使用してフォーム送信イベントを処理する方法を紹介し、具体的なコード例を示します。まず、Vue のフォーム送信イベントとは、ユーザーが送信ボタンをクリックするか Enter キーを押したときにトリガーされるイベントを指すことを明確にする必要があります。 Vue では、次のように渡すことができます。

See all articles