ホームページ ウェブフロントエンド jsチュートリアル ポップアップボックスドラッグの範囲限定機能をJavaScriptで実装するにはどうすればよいですか?

ポップアップボックスドラッグの範囲限定機能をJavaScriptで実装するにはどうすればよいですか?

Oct 27, 2023 pm 05:09 PM
javascript ポップアップボックス ドラッグ制限

JavaScript 如何实现弹出框拖动的限制范围功能?

JavaScript ポップアップ ボックスのドラッグの範囲限定機能を実装するにはどうすればよいですか?

多くの Web サイトやアプリケーションでは、追加情報やインタラクティブなコンテンツを表示できるポップアップ ボックスの機能によく遭遇します。ただし、ポップオーバーが大きくてドラッグ可能な場合、特定の領域内での移動を制限する必要がある場合があります。この記事では、JavaScript を使用してポップアップ ボックスのドラッグの範囲限定機能を実装する方法を紹介し、具体的なコード例を示します。

まず、ポップアップ ボックスのコンテナとして HTML 要素を作成する必要があります。 <div> 要素を使用して、このコンテナを実装できます。この例では、ポップアップ ボックスに「popup」という ID を持つ要素があると仮定します。

CSS では、ポップアップ ボックスのコンテナーにいくつかのスタイルを設定して、フローティング ダイアログ ボックスのように見せることができます。サンプル コードは次のとおりです。

1

2

3

4

5

6

7

8

9

10

11

#popup {

  position: absolute;

  top: 0;

  left: 0;

  width: 300px;

  height: 200px;

  background-color: #fff;

  border: 1px solid #ccc;

  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);

  cursor: move;

}

ログイン後にコピー

次に、マウス ドラッグ イベントを処理する必要があります。 JavaScript で mousedownmousemovemouseup イベントを使用すると、この機能を実現できます。サンプル コードは次のとおりです。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

var popup = document.getElementById('popup');

var isDragging = false;

var offset = { x: 0, y: 0 };

 

// 鼠标点击事件

popup.addEventListener('mousedown', function(event) {

  isDragging = true;

  offset.x = event.clientX - popup.offsetLeft;

  offset.y = event.clientY - popup.offsetTop;

});

 

// 鼠标移动事件

document.addEventListener('mousemove', function(event) {

  if (isDragging) {

    var x = event.clientX - offset.x;

    var y = event.clientY - offset.y;

     

    // 限制弹出框的范围

    if (x < 0) {

      x = 0;

    } else if (x > window.innerWidth - popup.offsetWidth) {

      x = window.innerWidth - popup.offsetWidth;

    }

     

    if (y < 0) {

      y = 0;

    } else if (y > window.innerHeight - popup.offsetHeight) {

      y = window.innerHeight - popup.offsetHeight;

    }

     

    // 移动弹出框

    popup.style.left = x + 'px';

    popup.style.top = y + 'px';

  }

});

 

// 鼠标释放事件

document.addEventListener('mouseup', function() {

  isDragging = false;

});

ログイン後にコピー

上記のコードでは、まずポップアップ ボックス要素の参照を取得し、マウス クリック、マウス移動、およびマウス リリース イベントのリスニング関数を追加します。

マウス クリック イベントでは、現在のマウス位置とポップアップ ボックスの左上隅の間の相対オフセットを記録します。これは、移動後のポップアップ ボックスの位置を計算するために使用されます。

マウス移動イベントでは、まず isDraggingtrue であるかどうかを確認して、ポップアップ ボックスをドラッグするかどうかを決定します。その場合、新しい位置が計算され、ポップアップ ボックスが指定された領域を超えないように範囲制限条件が使用されます。次に、style.left プロパティと style.top プロパティを使用して、ポップオーバーの新しい位置を設定します。

最後に、マウス リリース イベントで、isDraggingfalse に設定し、ドラッグの終了を示します。

上記のコードにより、ポップアップ ボックスのドラッグの範囲限定機能を実装することができました。ポップアップ ボックスがページ上のどこにあっても、指定された領域内で移動します。

要約すると、この記事では、JavaScript を使用してポップアップ ボックスのドラッグの範囲限定機能を実装する方法を紹介し、具体的なコード例を示します。この機能は、ユーザー エクスペリエンスと対話性を向上させるのに非常に役立ちます。この記事がお役に立てば幸いです。

以上がポップアップボックスドラッグの範囲限定機能をJavaScriptで実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 Dec 17, 2023 pm 12:09 PM

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法

JavaScriptでinsertBeforeを使用する方法 JavaScriptでinsertBeforeを使用する方法 Nov 24, 2023 am 11:56 AM

JavaScriptでinsertBeforeを使用する方法

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

JavaScript で HTTP ステータス コードを簡単に取得する方法

See all articles