Maison interface Web js tutoriel 可以拖动的div 实现代码_javascript技巧

可以拖动的div 实现代码_javascript技巧

May 16, 2016 pm 06:51 PM
div 拖动

可以拖动的p是一个比较难以做到的效果,特别是在浏览器对于js代码的运行效率还不是足够高的情况下,不过听说firefox对于js的支持正在增加,大概是料到了js在网页浏览的桌面化趋势中所占的重要地位吧。

要实现p的任意拖动,我们不妨分析一下整个过程。
当鼠标点击p时,触发一个事件,让p的位置属性(left,top)随着鼠标位置变化而变化,当鼠标释放后,p的位置属性就用了鼠标释放时的位置。
鼠标点击时触发事件是很容易做到的,只要在p的标签里加上onmouseclick就可以了,现在我们要解决的问题是如何让p的位置随着鼠标的位置变化而变化。
虽然这可能是一个很简单的推理过程,不过还是罗嗦点说清楚吧。p的left和top是p左上角的坐标,当我们把鼠标移到p中点击的时候,无疑鼠标的坐标和p的坐标是不一致的,这时候如果我们简单的让p的坐标等于鼠标的坐标,那么看起来的效果就不是那么完美了,所以我们先要得到鼠标的坐标和p坐标的差,然后在鼠标移动到的时候,在鼠标坐标上减去这个差来得到p的坐标(如果不太明白,那就先补习一下网页的基础知识)。
接下来的事情就简单了,当鼠标移动的时候,我们不断的计算得到p的坐标,并改变,在鼠标释放的时候,这个事件就被移除。
整个js函数如下:
function beginDrag(elementToDrag,event)
{
var deltaX=event.clientX-parseInt(elementToDrag.style.left);
var deltaY=event.clientY-parseInt(elementToDrag.style.top);
if(document.addEventListener)
{
document.addEventListener(”mousemove”,moveHandler,true);
document.addEventListener(”mouseup”,upHandler,true);
//document.addEventListener(”mouseout”,upHandler,true);
}
else if(document.attachEvent)
{
document.attachEvent(”onmousemove”,moveHandler);
document.attachEvent(”onmouseup”,upHandler);
//document.attachEvent(”onmouseout”,upHandler);
}
if(event.stopPropagation) event.stopPropagation();
else event.cancelBubble=true;
if(event.preventDefault) event.preventDefault();
else event.returnValue=false;
function moveHandler(e)
{
  if (!e) e=window.event; //如果是IE的事件对象,那么就用window.event
  //全局属性,否则就用DOM二级标准的Event对象。
elementToDrag.style.left=(e.clientX-deltaX)+”px”;
elementToDrag.style.top=(e.clientY-deltaY)+”px”;
if(e.stopPropagation) e.stopPropagation();
else e.cancelBubble=true;
}
function upHandler(e)
{
if(document.removeEventListener)
{
document.removeEventListener(”mouseup”,upHandler,true);
document.removeEventListener(”mousemove”,moveHandler,true);}
else
{
document.detachEvent(”onmouseup”,upHandler);
document.detachEvent(”onmousemove”,moveHandler);}
}
if (!e) e=window.event;
if(e.stopPropagation) e.stopPropagation();
else e.cancelBubble=true;
}

关于这个实现p拖动的js函数,实际上也是某位前辈公布于网上,这儿只是摘抄注解一下。
function beginDrag(elementToDrag,event)
{
var =event.clientX-parseInt(elementToDrag.style.left);
var deltaY=event.clientY-parseInt(elementToDrag.style.top);
//这儿的deltaX/Y实际上就是得出鼠标和p的坐标差。
if(document.addEventListener)
//之所以在这儿加这样一个判断,是因为IE6和firefox对于javascript的事件处理有不同的方法(IE7之后的版本开始符合W3C的标准)。
//document.addEventlistener如果是true的话,那就是firefox等支持W3C DOM标准的浏览器,IE6中注册事件用attachEvent,而firefox等浏览器则是用addEventListener,语法如下所示。addEventListener函数的true参数表示可以捕捉事件。
{
document.addEventListener(”mousemove”,moveHandler,true);
document.addEventListener(”mouseup”,upHandler,true);
//document.addEventListener(”mouseout”,upHandler,true);
}
else if(document.attachEvent)
{
document.attachEvent(”onmousemove”,moveHandler);
document.attachEvent(”onmouseup”,upHandler);
//document.attachEvent(”onmouseout”,upHandler);
}
if(event.stopPropagation) event.stopPropagation();
else event.cancelBubble=true;
//这儿的判断依然是考虑了不同的浏览器,stopPropagation是W3C DOM标准中使用的一个方法,用来取消事件的传播。我们使用了document.addEventListener这个方法,浏览器会从document对象沿着DOM节点向下传播到目标节点,注册的事件处理程序就会运行,然后事件会回传到父节点,如果父节点也有相应的事件处理程序,那么事件也会处理,为了避免这种情况,我们可以用stopPropagation来阻止事件的传播,这个方法的作用就是让其他元素对这个事件不可见。在IE6下,并没有元素捕捉事件的过程,不过有这个术语叫做起泡的过程,IE6中所用的方法就是cancelBubble,用来取消起泡,表示这个事件已被处理,其他元素不用再看见了。
if(event.preventDefault) event.preventDefault();
else event.returnValue=false;
//这儿的preventDefault用来通知浏览器不要执行与事件关联的默认动作,returnValue用来取消发生事件的源元素的默认动作,大家应该能看出这是在不同浏览器下发挥相同的作用。
//以下就是拖动p中所用的关键函数了。
function moveHandler(e)
{
   if (!e) e=window.event; //如果是IE的事件对象,那么就用window.event
   //全局属性,否则就用DOM二级标准的Event对象。
//在IE中,event是window的一个属性,也就是一个全局变量,但是在W3C DOM中,event是发生事件的文档对象的属性。在这个程序中,event是什么并不重要,关键是我们要取得鼠标的坐标值,在IE中,e这个参数传进来的时候,IE认不出来,所以我们就给e赋值为window.event。
elementToDrag.style.left=(e.clientX-deltaX)+”px”;
elementToDrag.style.top=(e.clientY-deltaY)+”px”;
//这儿就是改变现在正在作用的p的left和top属性。
if(e.stopPropagation) e.stopPropagation();
else e.cancelBubble=true;
}
function upHandler(e)
{
if(document.removeEventListener)
{
document.removeEventListener(”mouseup”,upHandler,true);
document.removeEventListener(”mousemove”,moveHandler,true);
}
else
{
document.detachEvent(”onmouseup”,upHandler);
document.detachEvent(”onmousemove”,moveHandler);
}
//这个函数是用来移除侦听器,比较简单,就不详细说了。
if (!e) e=window.event;
if(e.stopPropagation) e.stopPropagation();
else e.cancelBubble=true;
}
}

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser JavaScript pour obtenir l'effet de commutation de glisser gauche et droite des images ? Comment utiliser JavaScript pour obtenir l'effet de commutation de glisser gauche et droite des images ? Oct 21, 2023 am 09:27 AM

Comment obtenir l'effet de commutation de glisser gauche et droite des images avec JavaScript ? Dans la conception Web moderne, les effets dynamiques peuvent améliorer l’expérience utilisateur et l’attrait visuel. L'effet de commutation des images par glisser-déplacer vers la gauche et la droite est un effet dynamique courant, qui permet aux utilisateurs de changer de contenu en faisant glisser des images. Dans cet article, nous présenterons comment utiliser JavaScript pour obtenir cet effet de changement d'image et fournirons des exemples de code spécifiques. Tout d'abord, nous devons préparer du code HTML et CSS pour créer une image contenant plusieurs images.

Comment JavaScript peut-il implémenter le glisser d'une boîte pop-up tout en la limitant à la zone visible de la page ? Comment JavaScript peut-il implémenter le glisser d'une boîte pop-up tout en la limitant à la zone visible de la page ? Oct 18, 2023 pm 12:26 PM

Comment JavaScript peut-il implémenter le glisser d'une boîte pop-up tout en la limitant à la zone visible de la page ? Dans le développement Web, nous rencontrons souvent le besoin d’implémenter des boîtes pop-up ou des boîtes de dialogue. L'une des exigences courantes est de permettre à ces boîtes contextuelles de glisser librement et de se limiter à la zone visible de la page. Cet article explique comment utiliser JavaScript pour implémenter cette fonction et fournit des exemples de code correspondants. Tout d’abord, nous devons comprendre quelques concepts de base. En développement web, la zone visible de la page peut être la largeur de la fenêtre

Comment utiliser JavaScript pour faire glisser et zoomer des images tout en les limitant au conteneur ? Comment utiliser JavaScript pour faire glisser et zoomer des images tout en les limitant au conteneur ? Oct 20, 2023 pm 04:19 PM

Comment JavaScript implémente-t-il le glisser-zoomer des images tout en les limitant au conteneur ? Dans le développement Web, nous rencontrons souvent le besoin de faire glisser et de zoomer des images. Cet article expliquera comment utiliser JavaScript pour implémenter le glisser-déposer et le zoom des images et limiter les opérations dans le conteneur. 1. Faites glisser l'image Pour faire glisser l'image, nous pouvons utiliser les événements de la souris pour suivre la position de la souris et déplacer la position de l'image en conséquence. Voici un exemple de code : //Obtenir l'élément d'image varimage

Comment utiliser CSS pour se rendre compte qu'il manque un coin à un div Comment utiliser CSS pour se rendre compte qu'il manque un coin à un div Jan 30, 2023 am 09:23 AM

Méthode CSS pour réaliser qu'il manque un coin à un div : 1. Créez un exemple de fichier HTML et définissez un div ; 2. Définissez la couleur d'arrière-plan de la largeur et de la hauteur du div 3. Ajoutez une pseudo-classe au div qui doit être supprimé ; un coin et définissez la pseudo-classe sur Utiliser la même couleur que la couleur d'arrière-plan, puis faites-la pivoter de 45 degrés, puis positionnez-la sur le coin qui doit être supprimé.

Implémentation d'un script de navigateur de traduction de marquage de mots basé sur l'API ChatGPT Implémentation d'un script de navigateur de traduction de marquage de mots basé sur l'API ChatGPT May 01, 2023 pm 03:28 PM

Préface Récemment, il existe un script de navigateur basé sur ChatGPTAPI sur GitHub, openai-translator. En peu de temps, l'étoile a atteint 12k. En plus de prendre en charge la traduction, elle prend également en charge les fonctions de polissage et de synthèse. -ins, il utilise également le packaging tauri. Si vous avez un client de bureau, outre le fait que tauri utilise la partie rust, la partie navigateur est encore relativement simple à implémenter. Aujourd'hui, nous allons l'implémenter manuellement. L'interface fournie par openAI, par exemple, nous pouvons copier le code suivant et lancer une requête dans la console du navigateur pour terminer la traduction //Exemple constOPENAI_API_KEY="s

Comment implémenter le glisser-zoomer des images en JavaScript tout en étant limité au conteneur et en conservant les proportions et l'affichage centré ? Comment implémenter le glisser-zoomer des images en JavaScript tout en étant limité au conteneur et en conservant les proportions et l'affichage centré ? Oct 20, 2023 pm 01:34 PM

Comment JavaScript implémente-t-il le glisser et le zoom des images tout en étant limité au conteneur et en conservant les proportions et l'affichage centré ? Dans le développement Web moderne, faire glisser, redimensionner et limiter les images dans des conteneurs est une exigence très courante. Aujourd'hui, nous allons apprendre à utiliser JavaScript pour implémenter cette fonction tout en conservant les proportions et l'affichage centré de l'image. Tout d’abord, nous avons besoin d’une page HTML pour afficher les images et les conteneurs. Veuillez vous assurer d'inclure un code HTML pour afficher l'image dans le document HTML.

Comment utiliser JavaScript pour obtenir l'effet de faire glisser des images de haut en bas ? Comment utiliser JavaScript pour obtenir l'effet de faire glisser des images de haut en bas ? Oct 18, 2023 am 09:09 AM

Comment JavaScript obtient-il l’effet de faire glisser les images vers le haut et vers le bas ? Avec le développement d’Internet, les images jouent un rôle important dans nos vies et notre travail. Afin d'améliorer l'expérience utilisateur, nous devons souvent ajouter des effets spéciaux ou des effets interactifs aux images. Parmi eux, l'effet de faire glisser les images de haut en bas pour basculer est un effet très courant, simple et pratique. Cet article explique comment utiliser JavaScript pour obtenir cet effet et fournit des exemples de code spécifiques. Tout d'abord, nous devons créer un fichier HTML pour afficher les images et implémenter le glisser-déposer.

Quelles sont les différences entre div et span ? Quelles sont les différences entre div et span ? Nov 02, 2023 pm 02:29 PM

Les différences sont les suivantes : 1. div est un élément de niveau bloc et span est un élément en ligne ; 2. div occupera automatiquement une ligne, tandis que span ne sera pas automatiquement renvoyé à la ligne ; 3. div est utilisé pour envelopper des structures et des mises en page plus volumineuses ; span est utilisé pour envelopper du texte ou d'autres éléments en ligne ; 4. div peut contenir d'autres éléments de niveau bloc et des éléments en ligne, et span peut contenir d'autres éléments en ligne.

See all articles