begin process at 2010 02 10 14:28:42
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Effets

 > DONNER EN INTERACTIF DE NOUVELLES DIMENSIONS AUX ELÉMENTS [ DINDE ]

DONNER EN INTERACTIF DE NOUVELLES DIMENSIONS AUX ELÉMENTS [ DINDE ]


 Information sur la source

Note :
Aucune note
Catégorie :Effets Classé sous :dimensions, éléments, width, height, souris Niveau :Débutant Date de création :01/09/2007 Date de mise à jour :04/09/2007 05:32:38 Vu / téléchargé :5 085 / 434

Auteur : bultez

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
comme dit dans le titre, permet de fixer avec
la souris les tailles d'éléments dans une page
( div, span, images, select... )



 Conclusion

il faudrait "affiner" l'application des nouvelles
tailles, ça va un peu trop vite parfois.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

03 septembre 2007 05:47:50 :
quelques explications pour utiliser.
04 septembre 2007 05:32:38 :
suite aux remarques de Ralecul : ne pas détruire les fonctions éventuelles qui existeraient sur les éléments gérés.

 Sources du même auteur

Source avec Zip Source avec une capture [CF) CHOIX D'UN FICHIER
Source avec Zip [GAG] GESTION AJAX GÉNÉRALISÉE
Source avec Zip [JEAN] JAVASCRIPT EXÉCUTÉ AVEC LA RÉPONSE D'AJAX, NASALODIGI...
Source avec Zip Source avec une capture [P.J.] PAGES JOURNALIÈRES ~ AGENDA ~ RENDEZ-VOUS ~
Source avec Zip Source avec une capture DIFFÉRENCES EN JAVASCRIPT [DJ]

 Sources de la même categorie

Source avec Zip MOOTOOLTIP par Miky76
Source avec Zip Source avec une capture PAINTPIX (VERSION TESTE. EXPORTATION IMAGE POUR SITE WEB) par sitajony
FONCTION BLINK ( TESTÉE SOUS FF ) PORTABILITÉ IE OP ET GC EN... par xloadx
Source avec Zip Source avec une capture [DSI] DÉPLACEMENTS SUR IMAGES par Bul3
Source avec Zip Source avec une capture [ZI] ZOOM (LOUPE) SUR IMAGE par Bul3

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture RAINBOW CURSOR par wackybacky
Source avec Zip Source avec une capture INSTALLEZ UN CURSEUR GÉANT, SUPER GÉANT CURSEUR DE LA SOURIS... par abdelaziz_info
Source avec Zip Source avec une capture CURSEUR QUI POINTE LA SOURIS par wackybacky
Source avec Zip Source avec une capture TRAITEMENT POUR ADAPTER LA LARGEUR DES COLONNES ( DANS UN TA... par bultez
Source avec Zip Source avec une capture CURSEUR DYNAMIQUE par wackybacky

Commentaires et avis

Commentaire de ralecul le 01/09/2007 19:25:07

Salut,

Ton problème pour les span n'en est pas un : il s'agit encore d'un bug (fonctionnalités? :-) de IE...
La balise span est utilisée pour créer des propriétes css à un endroit précis, un passage en rouge dans un paragraphe par exemple.
Le dimensionnement d'un span n'a donc aucun sens, mais IE ne respecte rien comme toujours et applique tout de même ton style...
[Je sais que tu es un pro IE donc c'est pour celà que j'y vais avec des pincettes...]

Sinon pour ce qui est du code je l'ai remanié à ma sauce OO (avec différence private/public) :

Pour tester il suffit de remplacer :

var f1=new DINDE(document.getElementById('d1')); // exemples d'utilisation
var f2=new DINDE(document.getElementById('s1'));
var f3=new DINDE(document.getElementById('i1'));
var f4=new DINDE(document.getElementById('l1'));

par :

var f1 = new Resizable("d1");
var f2 = new Resizable("s1");
var f3 = new Resizable("i1");
var f4 = new Resizable("l1");

puis de rajouter ma version de ta classe dans le fichier JS :
(les commentaires sont en option dans ma version, m'enfin ya pas 2000 lignes non plus !)

function Resizable(id)
{
var _moving = false;
var _elt    = document.getElementById(id);
var _x      = 0;
var _y      = 0;
var _width  = 0;
var _height = 0;
var _pos;

attachEvent();

function attachEvent()
{
if (window.attachEvent)
{
_elt.onmousedown = press;
_elt.onmousemove = resize;
_elt.onmouseup   = release;
_elt.onmouseout  = release;
}
else
{
_elt.addEventListener("mousedown", press,   false);
_elt.addEventListener("mousemove", resize,  false);
_elt.addEventListener("mouseup",   release, false);
_elt.addEventListener("mouseout",  release, false);
}
}

function press(e)
{
_width  = _elt.style.width  ? parseInt(_elt.style.width)  : _elt.offsetWidth;
_height = _elt.style.height ? parseInt(_elt.style.height) : _elt.offsetHeight;
_moving = true;
_pos = getPos(e);

return false;
}

function release(e)
{
_moving = false;
}

function resize(e)
{
if (!e)
e = window.event;

if (_moving)
{
pos = getPos(e);
_elt.style.width  = Math.round(_width  + pos.x - _pos.x)+'px';
_elt.style.height = Math.round(_height + pos.y - _pos.y)+'px';
}

return false;
}

function getPos(e)
{
var x, y;

if (!e)
e = window.event;

if (e.pageX)
{
x = e.pageX;
y = e.pageY;
}
else if (e.clientX) //IE
{
x = e.clientX;
y = e.clientY;
}

if (e.preventDefault)
e.preventDefault();

return new Point(x, y);
}

function Point(x, y)
{
this.x = x;
this.y = y;
}
}

@+ Ralecul

Commentaire de bultez le 02/09/2007 11:32:49


merci Ralecul et pour l'explication sur le span
et pour ta version qui est bien plus qu'intéressante.


personnellement, je préfère néamoins

_ ne pas obliger à mettre un ID
appel(document.getElementById('d1')) à la place de appel('d1')
déjà j'utilise plutôt les name [ vers php oblige ]
donc appel(document.formulaire.elément) par exemple.

_ utiliser directement
???.onmousedown=function(...) { ... } pour tous
plutôt que
???.onmousedown = fonction; pour IE et
???.addEventListener("evenement",  fonction, false); pour les autres.

mais chacun ses goûts... et les vaches seront bien gardées.

Cordialement.             @+

Commentaire de bultez le 02/09/2007 11:47:14


>>Je sais que tu es un pro IE...
très très loin d'être un pro ! ( surtout de IE )

IE a des lacunes. Les autres navigateurs aussi.

Ce qui me gène c'est la critique sytématique d'IE,
généralemenbt totalement injustifiée.

############################################################
## ET je réagirais de la même manière pour un
## éreintement débile/puéril... envers FF !
############################################################

il est de bon ton, politiquement correct... de chercher à
casser tout ce qui vient de MicroSoft. c'est ridicule et
je ne suis pas politiquement correct.

Cordialement.    @+

Commentaire de ralecul le 02/09/2007 23:05:19

J'ai fait ce code un peu vite, du coup ya quelques erreurs...
Dans la fonction resize(e) :

if (!e)
e = window.event;
->ces deux lignes sont inutiles !

Sinon pour ce qui est la gestion des evenements il y a une grosse différence entre :
1. ???.onmousedown=function(...) { ... }
2. ???.addEventListener("evenement",  fonction, false);
La méthode 1 est DOM-0 alors que la 2 est DOM-2.

En DOM-2 on peut (entre autre) mettre deux fonctions sur un même evenement :

objet.addEventListener("mousedown",  function1, false);
objet.addEventListener("mousedown",  function2, false);

Alors qu'en DOM-0 seule la dernière fonction est appliquée (écrasement)

On peut donc améliorer la fonction attachEvent() de ma classe en remplacant :

if (window.attachEvent)
{
_elt.onmousedown = press;
_elt.onmousemove = resize;
_elt.onmouseup   = release;
_elt.onmouseout  = release;
}

par :

if (_elt.attachEvent)
{
_elt.attachEvent("onmousedown", press);
_elt.attachEvent("onmousemove", resize);
_elt.attachEvent("onmouseup",   release);
_elt.attachEvent("onmouseout",  release);
}

Pour l'appel : (document.getElementById('d1')) à la place de appel('d1')
Je suis tout à fait d'accord, c'est juste que si j'avais posté la source à ta place j'aurais ajouté la fonction $().
Ainsi l'appel au constructeur serait un peu moins "moche"... -> f1 = new Resizable($("d1"));

@+ Ralecul

PS : au fait, ma version ne comporte pas le bug du redimensionnement trop rapide.
Et juste pour info ya pas mal d'erreurs dans ta page html (check W3C validator).
Sinon je comprend pas comment on peut utiliser des css et en même temps des balises font et center, c'est d'un autre temps tout ça !

Commentaire de bultez le 03/09/2007 05:07:39

>>En DOM-2 on peut mettre deux fonctions sur un même evenement
avec ce que tu appelles DOM-1 aussi.
>>j'aurais ajouté la fonction $()
normalement j'use aussi d'un racourci , mais ici le but n'était
pas celui là. ça aurait "compliqué" inutilement. à mon avis.
>>comment on peut utiliser des css et en même temps des
>>balises font et center, c'est d'un autre temps tout ça
je suis d'un autre temps, je ne m'intéresse guère à
ce genre de subtilité, aucun inconvénient, alors...

Commentaire de ralecul le 03/09/2007 12:40:27

>>En DOM-2 on peut mettre deux fonctions sur un même evenement
avec ce que tu appelles DOM-1 aussi.

-> Un peu court comme réponse, non ?

Je te conseille de jetter un coup d'oeil à cet article sur la gestion des evenements :
http://css.alsacreations.com/Tutoriels-JavaScript/La-gestion-des-evenements-en-JavaScript

Et si tu fais un essai :

objet.onmousedown = function1;
objet.onmousedown = function2;

Tu verras que seule function2 est éxécutée !

Bien sur on peut faire :
objet.onmousedown = function(e) { function1(e); function2(e); }
Mais ce cas de figure n'est possible que si tu "controles" les deux scripts.
Si tu utilises sur la même page un script de correction de :hover de IE6 et ton script de redimensionnement il peut y avoir un problème.
En effet, si tu appliques ces deux scripts sur le même élément alors (en DOM-0) seul le dernier appliqué sera pris en compte.
J'espère avoir été plus clair sur la différence entre le DOM level 0 et DOM level 2.


Pour ce qui est des balises font, je vais te proposer une solution (plus constructif comme remarque) :

<h1>
<span class="big">D</span>onner en
<span class="big">I</span>nteractif de
<span class="big">N</span>ouvelles
<span class="big">D</span>imensions aux
<span class="big">E</span>lements
</h1>

Reste plus qu'à faire un joli css avec ça !

@+ Ralecul

Commentaire de bultez le 04/09/2007 05:04:28

je viens de percuter...
tu tentais de me dire :
si, sur les évènements des éléments gérés par ce script,
des function existent déjà, celui-ci va les écraser.
et... tu as raison.
que pour traiter ça "normalement", il faudrait utiliser
attachEvent et/ou  addEventListener
et oui.
je vais d'ailleurs faire des modifs dans ce sens
dès que possible.
@+

Commentaire de ralecul le 05/09/2007 18:39:06

Salut,

Il reste encore deux petits "bug" :

->Le test avec la variable IE est une mauvaise idée.

Il vaut mieux faire :

if (quoi.addEventListener)
//code pour les navigateurs respectant w3c
else if (quoi.attachEvent)
//code pour IE

Ainsi si IE se décide un jour à implémenter les méthodes DOM-2 et plus ses méthodes propriétaires le script fonctionnera encore sous IE.

(à appliquer également pour les autres trucs propriétaires event, + position souris, pour les solutions voir le code de ma version)

->Bug du dimensionnement un peu rapide :

Il faut récupérer width et height lors du click (appel à la fonction Appui)
Et ensuite dans la fonction Taille il faut remplacer :

element.style.width= parseInt(element.style.width) +hor-x; // nouvelle largeur
element.style.height=parseInt(element.style.height)+ver-y

par

element.style.width  = parseInt(width)  + hor - x; // nouvelle largeur
element.style.height = parseInt(height) + ver - y

avec width et height des variables menbres de DINDE mises à jour lors de l'appel à Appui (là encore, solution dans le code de ma version).

Ralecul

Commentaire de el_teedee le 18/09/2007 09:32:33

Salut,

et si tu utilises l'excellent Prototype, tu fais :

Event.observe(element, eventName, handler[, useCapture = false])

@see : http://www.prototypejs.org/api/event/observe

Ce qui est beaucoup plus portable et moins contraignant que de faire le test soi meme
:)

Commentaire de bultez le 18/09/2007 09:51:56

certes... mais dans ce cas pourquoi pas
un "générateur d'applications" quelconque ?
( je ne vais pas en citer, ils sont légions )
ce sera encore beaucoup plus simple.
@+

Commentaire de bultez le 18/09/2007 10:21:08

j'ajouterais pour comparer des choses comparables,
qu'avec DINDE on utilise : new DINDE(élément)
je dirais que c'est bien moins lourd et plus simple que
Event.observe(element, eventName, handler[, useCapture = false])
@+

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Dimension d'une image JS [ par superpaolo ] Je débute en javascript et je n'arrive pas à connaitre les dimensions d'une image (HEIGHT et WIDTH) à partir de son nom.&lt;img name="monimage" src=ma comment avoir le height width d'une div ... [ par GuilleW ] Disons que j'ai une div qui contient des image texte etc ... je voudrai avoir sa taille mais comme sa varie je ne peux mettre qu'une variable pour la Erreur sous Netscape et pas sous IE [ par simsas ] Voici les erreurs javascript que j'ai lorsque je clic sur le bouton Rechercher(voir ci dessous &lt;!-- RECHERCHE --&gt; dans left.asp) Sous ie 6 cela ajout fonction scroll [ par claudy03 ] Voil&#224;, j'ai trouv&#233; le script javascript&nbsp; qui suitdans le head :&lt;script language="JavaScript"&gt;&lt;!--function resizePopUp(monImage Popup, variables, au secours ! [ par yakou32 ] Bonjour ! J'essaie de faire un script de redirection selon la résolution. L'idée est de faire un popup centré, aux bonnes dimensions, et la page mère jeu du sokoban [ par trufobaleine ] bonjour!nous avons cr&#233;er un jeu du sokoban qui fonctionne tres bien mais pour augmenter les difficulter nous voulons mettre 2 caisses a chaque ni generateur de popups defifante [ par soborne ] voila jai une balise mais lorsque je le met dans les template sa marche pas alors que faire pouvez vous maider peut etre faut le modifier voici la bal animation JS "au dessus" d'un flash [ par feydakin ] bonjour, je voudrais faire defiller le script javascript suivant ********* var snowsrc="**image**.gif" var no = 15; var ns4up = (document.layers) Ouvrir une popup sans cliquer... [ par ViNCiNTO ] Bonjour, je cherche un moyen pour ouvrir une popup en javascript sans avoir a cliquer sur un lien. Pour le moment j'ouvre mes popups de la maniere sui Trouvez l'erreur ! (redimmensionner un DIV) [ par supergrey ] Donc voila j'ai mis un DIV qui contient une image et je voudrais que ce calque diminue jusqu'a disparaitre, voila mon code:function Diminuer(){   widt


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,889 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales