
script : dragOn v2.1
langage : javascript
catégorie : module
usage : Déplacez les éléments html à la souris, par effet de "drag and drop"
tags : ergonomie
Un petit élément d'ergonomie bien pratique : le glisser-déposer, aussi connu sous le nom de drag & drop.
Les trois blocs suivants ne demandent qu'à être déplacés :
une dragBox standard.
cette boîte-ci change de style quand on la déplace.
cette boîte-ci doit être saisie par son titre
cette boîte-ci ne bouge qu'à la verticale.
cette boîte-ci ne peut pas être sortie de la zone en pointillés.
Cliquez ici pour remettre les blocs à leur position initiale.
Remarquez que lorsque vous déplacez un bloc, il passe au premier plan.
Permièrement, charger le script, en insérant le code suivant entre les balises <head> et </head> de la page :
<script type="text/javascript" src="dragOn.min.js"></script>
Ensuite, placer une (ou des) <div> (ou tout autre élément se comporant comme un bloc) dans la page :
(Pour retrouver facilement notre élément en javascript, on va lui attibuer un id.)
<div id="ma_div">salut !</div>
Et puis à la fin du code html, juste avant le balise </body>, on peut maintenant déclarer les comportements des blocs. On les placera entre des balises <script type="text/javascript"> et </script> :
Pour rendre déplaçable une <div>, on procède simplement comme ceci :
dragOn.apply( document.getElementById( "ma_div" ) );
Le script propose aussi plusieurs options.
On les passera comme deuxième argument de la fonction, compilées dans un tableau associatif :
var draggable = document.getElementById('ma_div'); var options = { handle : document.getElementById('handle'), movingClass : 'isMoving', cssPosition : 'fixed' }; dragOn.apply( draggable, options );
Les options disponibles sont les suivantes :
| options | type | description | par défaut |
| handle | HTMLElement |
L'élément html qui servira de poignée. (voir l'exemple rouge de la démo ci-dessus.) |
l'élément déplaçable lui-même, tout entier. |
|---|---|---|---|
| movingClass | String |
Nom de classe css à donner à target quand on le déplace. (voir l'exemple verte de la démo ci-dessus.) |
null |
| cssPosition | Boolean |
Indique la position css initiale de l'élément déplaçable. (utile uniquement pour les "position:fixed")
|
null |
| moveHoriz | Boolean |
Indique si target peut être déplacé dans le sens horizontal. | true |
| moveVert | Boolean |
même chose, à la verticale ! (voir l'exemple bleu clair de la démo ci-dessus.) |
true |
| moveArea | HTMLElement |
permet de restreindre la zone de déplacement à la surface de l'élément indiqué dans cette option. (voir l'exemple jaune de la démo ci-dessus.) |
null |
Vous trouverez dans ce zip une version minifiée du script (3Ko), et une autre commentée, ainsi que la feuille de styles utilisée dans la démo de cette page.
compatibilité :
(autres navigateurs non testés)
Notez que ce module embarque deux fragments de code présentés sur ce site : getPos, qui permet de connaître la position d'un élément html dans la page, et mousePos, qui nous renseigne sur la position de la souris.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd" >
<html lang="fr">
<head>
<title>essai dragOn</title>
<!-- un peu de css pour faire une jolie boîte -->
<style type="text/css" media="all">
#dragBox {
background: #fafafa;
border: 1px solid #ccc;
width: 150px;
height: 150px;
}
#handle {
margin: 0;
background: #ccc;;
}
</style>
</head>
<body>
<!-- la boîte -->
<div id="dragBox">
<h5 id="handle">dragBox</h5> <!-- la poignée -->
<p>cette boîte-ci doit être saisie par son titre</p>
</div>
<!-- on charge le script "dragOn" -->
<script src="dragOn.min.js" type="text/javascript"></script>
<!-- on paramètre et on active dragOn -->
<script type="text/javascript">
var draggable = document.getElementById('dragBox');
var options = {
handle : document.getElementById('handle')
};
dragOn.apply( draggable, options );
</script>
</body>
</html>cursor: move;