Maison > interface Web > js tutoriel > le corps du texte

Comment implémenter la fonction de portée limitée du glisser-déposer de boîtes contextuelles en JavaScript ?

王林
Libérer: 2023-10-27 17:09:38
original
826 Les gens l'ont consulté

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

Comment implémenter la fonction de portée limitée du glisser-déposer de boîtes contextuelles en JavaScript ?

Dans de nombreux sites Web et applications, nous rencontrons souvent la fonction de boîtes pop-up, qui peuvent afficher des informations supplémentaires ou du contenu interactif. Cependant, lorsque le popover est volumineux et déplaçable, nous devons parfois restreindre son mouvement dans une zone spécifique. Dans cet article, je vais présenter comment utiliser JavaScript pour implémenter la fonction à portée limitée de glissement de boîte contextuelle et l'illustrer à travers des exemples de code spécifiques.

Tout d'abord, nous devons créer un élément HTML comme conteneur pour la boîte contextuelle. Nous pouvons implémenter ce conteneur en utilisant un élément <div>. Dans cet exemple, nous supposons que la boîte popup contient un élément avec l'identifiant "popup". <div> 元素来实现这个容器。在这个示例中,我们假设弹出框有一个 id 为 "popup" 的元素。

在 CSS 中,我们可以对弹出框的容器进行一些样式设置,使其看起来像一个浮动的对话框。示例代码如下:

#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;
}
Copier après la connexion

接下来,我们需要处理鼠标的拖动事件。我们可以使用 JavaScript 中的 mousedownmousemovemouseup 事件来实现这个功能。示例代码如下:

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;
});
Copier après la connexion

在上述代码中,我们首先获取弹出框元素的引用,并为其添加了鼠标点击、鼠标移动和鼠标释放事件的监听函数。

在鼠标点击事件中,我们记录了当前鼠标位置与弹出框左上角的相对偏移量,用于计算移动后弹出框的位置。

在鼠标移动事件中,我们首先检查 isDragging 是否为 true,以确定是否拖动弹出框。如果是,则计算新的位置,并通过限制范围的条件来确保弹出框不会超出指定的区域。然后,我们使用 style.leftstyle.top 属性来设置弹出框的新位置。

最后,在鼠标释放事件中,我们将 isDragging 设置为 false

En CSS, nous pouvons définir certains styles sur le conteneur de la boîte pop-up pour la faire ressembler à une boîte de dialogue flottante. L'exemple de code est le suivant :

rrreee

Ensuite, nous devons gérer l'événement glisser-déplacer de la souris. Nous pouvons utiliser les événements mousedown, mousemove et mouseup en JavaScript pour réaliser cette fonctionnalité. L'exemple de code est le suivant :

rrreee

Dans le code ci-dessus, nous obtenons d'abord la référence de l'élément de boîte contextuelle et ajoutons des fonctions d'écoute pour les événements de clic de souris, de mouvement de la souris et de relâchement de la souris. 🎜🎜Dans l'événement de clic de souris, nous enregistrons le décalage relatif entre la position actuelle de la souris et le coin supérieur gauche de la boîte contextuelle, qui est utilisé pour calculer la position de la boîte contextuelle après le mouvement. 🎜🎜Dans l'événement de mouvement de la souris, nous vérifions d'abord si isDragging est true pour déterminer s'il faut faire glisser la boîte contextuelle. Si tel est le cas, la nouvelle position est calculée et des conditions de limitation de plage sont utilisées pour garantir que la boîte contextuelle ne dépasse pas la zone spécifiée. Nous utilisons ensuite les propriétés style.left et style.top pour définir la nouvelle position du popover. 🎜🎜Enfin, lors de l'événement de relâchement de la souris, nous définissons isDragging sur false, indiquant la fin du glisser. 🎜🎜Grâce au code ci-dessus, nous avons implémenté avec succès la fonction à portée limitée du glissement de la boîte contextuelle. Peu importe où se trouve la boîte contextuelle sur la page, elle se déplacera dans la zone spécifiée. 🎜🎜Pour résumer, cet article présente comment utiliser JavaScript pour implémenter la fonction à portée limitée de glissement de boîte contextuelle et fournit des exemples de code spécifiques. Cette fonctionnalité est très utile pour améliorer l’expérience utilisateur et l’interactivité. J’espère que cet article vous sera utile ! 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal