Redimensionnement d'un élément

Répondre
Bzh
le 29/12/2005 à 01:14
Bzh
Je dis juste ça comme cela ! Cela dépend de l'avi de chacun ! Mais je pense tout de même qu'il est préférable de faire en sorte qu'un visiteur refusant le javascript doit pouvoir naviguer sans aucun souci sur le site. Le js n'est là que pour le confort !

Par exemple, la vérification de formulaire ne se fait pas coté client mais coté serveur ! Vérifier les formulaires en javascript n'est pas terrible.

Et pourtant, on voit cela de plus en plus. Le fameu => formulaire.submit() ! Je trouve ça honteu !!! Le visiteur refusant le javascript ne peut même pas valider le formulaire !!!!

Ah! J'ai passé mon cou de gueulle ! Sa va mieu tout d'un cou !!!

Bonne année à tout le monde !!!! smiley
LupusMic
le 29/12/2005 à 18:40
LupusMic
Mais on est entièrement d'accord. Tu remarqueras que le javascript que je proposais ne fait qu'améliorer la mise en page.

Jamais un javascript ne sera contraignant.

D'ailleurs, comme tu peux le voir dans mon petit doc sur les regex, j'ai fais en sorte que l'exemple de validation de courriel se fasse quoiqu'il arrive du côté serveur. Mais du côté client, on peut améliorer l'ergonomie en rajoutant quelque javascript. Ça ne mange pas de pain.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Bzh
le 29/12/2005 à 21:33
Bzh
Heu !!! smiley

Je ne disais pas ça pour toi... Désolé...
i M@N
le 29/12/2005 à 22:19
i M@N
Hello !

Bon c'est p'tet passé inaperçu alors je répète :
function getElt (eltID) {
if (document.layers) return document.layers[eltID+'C'].document.layers[eltID];
if (document.getElementById) return document.getElementById(eltID);
if (document.all) return document.all[eltID];
if (document[eltID+'C']) return document[eltID+'C'].document[eltID];
alert('Rien ne marche avec ce navigateur');
return false;
}

function hideElt (eltID) {
var myelt = getElt(eltID);
if (myelt.style) myelt = myelt.style;
myelt.display = 'none';
}

function showElt (eltID,disp) {
var myelt = getElt(eltID);
if (myelt.style) myelt = myelt.style;
myelt.display = disp;
}

function isHide (eltID) {
var myelt = getElt(eltID);
if (myelt.style) myelt = myelt.style;
return myelt.display == 'none' ? true : false;
}

function switchElt (eltID,disp) {
if (isHide(eltID)) showElt(eltID,disp);
else hideElt(eltID);
}

function mvElt (eltID,mvX,mvY) {
var myelt = getElt (eltID), noPx = document.childNodes ? 'px' : 0;
if (myelt.style) myelt = myelt.style;
myelt.left = mvX + noPx; myelt.top = mvY + noPx;
}

function chgZIndex (eltID,indx) {
var myelt = getElt(eltID);
if (myelt.style) myelt = myelt.style;
myelt.zIndex = indx;
}

function resizeElt(eltID,newWidth,newHeight) {
var myelt = getElt(eltID), noPx = document.childNodes ? 'px' : 0;
if (myelt.style) myelt = myelt.style;
if (myelt.resizeTo) myelt.resizeTo(newWidth,newHeight);
myelt.width = newWidth + noPx; myelt.pixelWidth = newWidth;
myelt.height = newHeight + noPx; myelt.pixelHeight = newHeight;
}

Quelqu'un sait comment on s'en sert?

@+...
One Love, One Heart, One Unity.
Bzh
le 30/12/2005 à 00:03
Bzh
Et bien, c'est pas bien compliqué !!!

Cette fonction retourne l'object direct de la balise souhaité à partir de son nom (name)
function getElt (eltID) {
if (document.layers) return document.layers[eltID+'C'].document.layers[eltID];
if (document.getElementById) return document.getElementById(eltID);
if (document.all) return document.all[eltID];
if (document[eltID+'C']) return document[eltID+'C'].document[eltID];
alert('Rien ne marche avec ce navigateur');
return false;
}


Cette fonction permet de cacher une balise grace à un parametre => le nom de la balise. Elle fait appel à la première fonction pour récupérer l'object de la balise.
function hideElt (eltID) {
var myelt = getElt(eltID);
if (myelt.style) myelt = myelt.style;
myelt.display = 'none';
}


Idem mais pour faire apparaitre la balise:
function showElt (eltID,disp) {
var myelt = getElt(eltID);
if (myelt.style) myelt = myelt.style;
myelt.display = disp;
}


Permet de tester si la balise est caché ou non. Elle utilise comme paramètre toujours le nom de la balise (name="le_nom") et fait appel aussi à la toute première fonction afin de récupérer l'object.
function isHide (eltID) {
var myelt = getElt(eltID);
if (myelt.style) myelt = myelt.style;
return myelt.display == 'none' ? true : false;
}


Cette fonction réuni les trois dernières. A chaque appel, elle affiche ou bien cache à tour de role le div. Elle fait donc appel à toute les autres fonctions et ne demande qu'un seul paramètre le même (name).
function switchElt (eltID,disp) {
if (isHide(eltID)) showElt(eltID,disp);
else hideElt(eltID);
}


Cette fonction déplace le div. Elle à besoin de trois parametres: le "name" de la balise, et les coordonnées sur X et Y !!! Elle fait appel tjrs à la toute première fonction afin de de récupérer l'object du div
function mvElt (eltID,mvX,mvY) {
var myelt = getElt (eltID), noPx = document.childNodes ? 'px' : 0;
if (myelt.style) myelt = myelt.style;
myelt.left = mvX + noPx; myelt.top = mvY + noPx;
}


Cette fonction change le z-index du div. Deux paramètres le nom et l'entier pour la profondeur.Elle fait appel à la toute première fonction.
function chgZIndex (eltID,indx) {
var myelt = getElt(eltID);
if (myelt.style) myelt = myelt.style;
myelt.zIndex = indx;
}


Et cette dernière fonction redimentionne le div. Donc trois paramètres:
->Le "name" du div
->La nouvelle largeur
->La nouvelle hauteur
function resizeElt(eltID,newWidth,newHeight) {
var myelt = getElt(eltID), noPx = document.childNodes ? 'px' : 0;
if (myelt.style) myelt = myelt.style;
if (myelt.resizeTo) myelt.resizeTo(newWidth,newHeight);
myelt.width = newWidth + noPx; myelt.pixelWidth = newWidth;
myelt.height = newHeight + noPx; myelt.pixelHeight = newHeight;
}


Ses fonctions sont très pratique et très bien faites.

Sont script est basé sur une fonction importante qui est la première. Elle permet, en fonction du navigateur, de recupérer l'object de la balise.

C'est propre. Je l'ai pas essayé mais ça à l'air vraiment bien.

Bye...
i M@N
le 30/12/2005 à 10:34
i M@N
Hello !

Merci pour l'explication mais j'ai demandé :
Quelqu'un sait comment on s'en sert?

smiley

@+...
One Love, One Heart, One Unity.
Bzh
le 30/12/2005 à 12:26
Bzh
Bin comme n'importe quel script js !

Tu le met dans ta page et tu appels la fonction souhaité en passant les parametres demandés !!

Je ne vois pas où est la difficulté ???? smiley
i M@N
le 30/12/2005 à 19:15
i M@N
Hello !

Bon alors j'ai testé pour vous ... smiley

La feuille de style style.css :
BODY {
background-color: #88BB77;
margin: 0px;
padding: 0px;
font: 10px tahoma;
color: #FFFFFF;
}

#test {
position: absolute;
width: 50px;
height: 50px;
top: 0px;
left: 0px;
display: block;
border-style: solid;
border-width: 1px;
border-color: #FFFFFF;
background-color: #000000;
}

#content {
position: absolute;
width: 100px;
height: 50px;
top: 100px;
left: 0px;
border-style: solid;
border-width: 1px;
border-color: #000000;
background-color: #FFFFFF;
}

Le fichier fonctions.js :
/*
Cette fonction retourne l'object direct de la balise souhaité à partir de son nom (name)
*/
function getElt (eltID) {
if (document.layers) return document.layers[eltID+'C'].document.layers[eltID];
if (document.getElementById) return document.getElementById(eltID);
if (document.all) return document.all[eltID];
if (document[eltID+'C']) return document[eltID+'C'].document[eltID];
alert('Rien ne marche avec ce navigateur');
return false;
}

/*
Cette fonction permet de cacher une balise grace à un parametre => le nom de la balise.
Elle fait appel à la première fonction pour récupérer l'object de la balise.
*/

function hideElt (eltID) {
var myelt = getElt(eltID);
if (myelt.style) myelt = myelt.style;
myelt.display = 'none';
}

/*
Idem mais pour faire apparaitre la balise.
deux paramètres :
->Le "name" du div
->L'attribut du display (block par exemple)
*/

function showElt (eltID,disp) {
var myelt = getElt(eltID);
if (myelt.style) myelt = myelt.style;
myelt.display = disp;
}

/*
Permet de tester si la balise est caché ou non.
Elle utilise comme paramètre toujours le nom de la balise (name="le_nom")
et fait appel aussi à la toute première fonction afin de récupérer l'object.
*/

function isHide (eltID) {
var myelt = getElt(eltID);
if (myelt.style) myelt = myelt.style;
return myelt.display == 'none' ? true : false;
}

/*
Cette fonction réuni les trois dernières.
A chaque appel, elle affiche ou bien cache à tour de role le div.
Elle fait donc appel à toute les autres fonctions et ne demande qu'un seul paramètre le même (name).
*/

function switchElt (eltID,disp) {
if (isHide(eltID)) showElt(eltID,disp);
else hideElt(eltID);
}

/*
Cette fonction déplace le div. Elle à besoin de trois parametres: le "name" de la balise, et les coordonnées sur X et Y !!!
Elle fait appel tjrs à la toute première fonction afin de de récupérer l'object du div
*/

function mvElt (eltID,mvX,mvY) {
var myelt = getElt (eltID), noPx = document.childNodes ? 'px' : 0;
if (myelt.style) myelt = myelt.style;
myelt.left = mvX + noPx; myelt.top = mvY + noPx;
}

/*
Cette fonction change le z-index du div.
Deux paramètres le nom et l'entier pour la profondeur.
Elle fait appel à la toute première fonction.
*/

function chgZIndex (eltID,indx) {
var myelt = getElt(eltID);
if (myelt.style) myelt = myelt.style;
myelt.zIndex = indx;
}

/*
Et cette dernière fonction redimentionne le div.
Donc trois paramètres:
->Le "name" du div
->La nouvelle largeur
->La nouvelle hauteur
*/

function resizeElt(eltID,newWidth,newHeight) {
var myelt = getElt(eltID), noPx = document.childNodes ? 'px' : 0;
if (myelt.style) myelt = myelt.style;
if (myelt.resizeTo) myelt.resizeTo(newWidth,newHeight);
myelt.width = newWidth + noPx; myelt.pixelWidth = newWidth;
myelt.height = newHeight + noPx; myelt.pixelHeight = newHeight;
}

Le fichier html :
<head>
<title>test</title>
<link rel="stylesheet" type="text/css" href="style.css"></link>
<script src="fonctions.js" type="text/javascript"></script>
</head>
<body>

<div id="test" name="test">
test
</div>

<div id="content" name="content">
<a href="javascript:resizeElt('test','100','100')">resize</a>

<a href="javascript:hideElt ('test')">hide</a>

<a href="javascript:showElt ('test','block')">show</a>

<a href="javascript:mvElt ('test','150','150')">move</a>

<a href="javascript:chgZIndex ('test','3')">change z-index</a>


</div>

</body>
</html>


Merci Bzh, t'avais juste fait une erreur sur la fonction showElt ('div','arg') qui requiert deux paramètres :
->Le "name" du div
->L'attribut du display (block par exemple)

En effet une fois rendu utile ce code donne des idées ...

@+...
One Love, One Heart, One Unity.
Bzh
le 30/12/2005 à 20:28
Bzh
Arf ! Oui... Le plus interressant reste tout de même la première fonction. Elle assure vraiment une bonne compatibilité...

Bye...
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours