11488 sujets

JavaScript, DOM et API Web HTML5

Pages :
Bonjour,
Voila j'aimerait savoir quelle serait la marche a suivre si je desire installer un script qui me permet de montrer et de cacher les commentaires avec le formulaire associé a l'aide de Javascript.

Un exemple de l'effet recherché ici : Exemple
Il te suffit de placer ce que tu veux afficher/masquer dans un div et de rajouter un lien avec ce code dessus:

<a href="#" onclick=" onclick="document.getElementById('monDiv').style.display=(document.getElementById('monDiv').style.display=='none')?'':'none';"">masquer/afficher</a>

Tu trouvera quelque explication sur cette page:

http://www.wikistuce.info/doku.php/javascript/developper_une_liste

L'exemple donné est pour développé une liste mais tu peux parfaitement l'adapté à un div.
Modifié par maniT4c (08 Jan 2007 - 07:58)
TGM a écrit :
Un exemple de l'effet recherché ici : Exemple

Pas un très bon exemple alors : si Javascript est désactivé, on ne peut voir aucun commentaire, et on ne peut pas en saisir un non plus. C'est pas à proprement parler du Javascript « non obstructif »...

De plus, si les commentaires et formulaires étaient visibles avec Javascript désactivé, on aurait une page énorme avec pour chaque billet de la liste le billet, ses commentaires et son formulaire pour envoyer un commentaire. Smiley sweatdrop

Donc dans l'absolu ce genre de procédé est très intéressant, mais attention à l'utiliser à bon escient. Smiley cligne
Modérateur
Salut,

Je te laisse un exemple un peu plus accessible... même si ce n'est pas forcémment le top...
Ca évitera que tu te rencardes sur des bibliothèques un peu trop lourdes pour ce genre de chose... Smiley cligne

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
					  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
		<title>Exemple</title>
		<style type="text/css">/*<![CDATA[*/


@media screen, projection {
	form { background-color: #DDD; color: #000; width: 38em; }
	form label { line-height: 2em; margin: 0 10px; }
}


		/*]]>*/</style>
		<script type="text/javascript">//<![CDATA[

/**
* Test du script
*/
try {

/**
* Création d'un objet
*/
var oO =
{
	/**
	* Chargement rapide
	* @param func: (object) Fonction chargée au chargement de la page
	*/
	_FastLoadEvent:
		function(func)
		{
			if(document.addEventListener) document.addEventListener('DOMContentLoaded', func, false);

			/*@cc_on @*/
				/*@if(@_win32) document.write('<scr'+'ipt id="__ie_onload" defer src="javascript:void(0)"><\/scr'+'ipt>');
				var script = document.getElementById('__ie_onload');
				script.onreadystatechange = function()
				{
					if(this.readyState === 'complete') func();
				};
			/*@end @*/

			if(/WebKit/i.test(navigator.userAgent) && /loaded|complete/.test(document.readyState)) func();
		},

	/**
	* Attache une fonction à un événement
	* @param oElem: (object) Element générateur
	* @param sEvType: (string) Evénement déclencheur
	* @param fn: (function) Fonction attachée
	* @param bCapture: (boolean) Mode de transmission
	*/
	_Connect:
		function(oElem, sEvType, fn, bCapture)
		{
			oElem.addEventListener?
				oElem.addEventListener(sEvType, fn, bCapture):
				oElem.attachEvent?
					oElem.attachEvent('on' + sEvType, fn):
					false;
		},

	/**
	* Obtention de l'élément qui génère l'événement
	* @param e: (object) Evénement
	* @return Element souhaité
	*/
	_GetTarget:
		function(e)
		{
			var oTarget = e.target || e.srcElement;
			if(oTarget.nodeType === 3) oTarget = oTarget.parentNode;
			return oTarget;
		},

	/**
	* Annulation de la transmission de l'événement au clic sur un élément
	* @param e: (object) Evénement
	* @return Annulation de la transmission de l'événément aux autres éléments
	*/
	_CancelClick:
		function(e)
		{
			if(e && e.stopPropagation && e.preventDefault)
			{
				e.stopPropagation();
				e.preventDefault();
				return false; // Pour Safari
			}
			else if(window.event && window.event.cancelBubble && window.event.returnValue)
			{
				window.event.cancelBubble = true;
				window.event.returnValue = false;
				return false;
			}
			else return false;
		},

	/**
	* Contrôle d'affichage/masquage d'un élément à partir d'un lien
	* @param sIdCont: (string) id du conteneur
	* @param sId: (string) id de l'élément
	*/
	_CtrlDisplay:
		function(sIdCont, sId)
		{
			var oElem = document.getElementById(sId),
			    oA = document.createElement('a'),
			    oTxt = document.createTextNode('Montrer');
			oA.href = '#montrer';
			oA.appendChild(oTxt);
			document.getElementById(sIdCont).insertBefore(oA, oElem);

			oO.HautTot = oElem.offsetHeight + 10;
			oElem.style.height = 0;
			oElem.style.overflow = 'auto';
			oO._Connect(oA, 'click', function(e) { oO._Display(oElem, e); return oO._CancelClick(e); }, false);
		},

	/**
	* Affichage/masquage d'un élément
	* @param oElem: (object) Element
	* @param e: (object) Evénement
	*/
	_Display:
		function(oElem, e)
		{
			var oTarget = oO._GetTarget(e);
			if(oTarget.firstChild.data === 'Montrer')
			{
				oTarget.firstChild.data = 'Cacher';
				oTarget.href = '#cacher';
				oO._Deroule(oElem.id, 0, oO.HautTot, 5);
				oO._ChgOpak(oElem.id, 0, 100, 200);
			}
			else
			{
				oTarget.firstChild.data = 'Montrer';
				oTarget.href = '#montrer';
				oO._Deroule(oElem.id, oO.HautTot, 0, 5);
				oO._ChgOpak(oElem.id, 100, 0, 200);
			}
		},

	/**
	* Cross-browser sur l'opacité d'un élément
	* @param opak: (integer) Valeur de l'opacité
	* @param id: (string) id de l'élément
	*/
	_CrossOpak:
		function(opak, id)
		{
			var oElemStyle = document.getElementById(id).style;
			oElemStyle.opacity = (opak / 100);
			oElemStyle.MozOpacity = (opak / 100);
			oElemStyle.KhtmlOpacity = (opak / 100);
			oElemStyle.filter = "alpha(opacity=" + opak + ")";
		},

	/**
	* Modification de l'opacité d'un élément
	* @param id: (string) id de l'élément
	* @param opakStart: (integer) Opacité de départ
	* @param opakEnd: (integer) Opacité d'arrivée
	* @param ms: (integer) Temps
	*/
	_ChgOpak:
		function(id, opakStart, opakEnd, ms)
		{
			var speed = Math.round(ms / 100);
			var timer = 0;
			var i;

			if(opakStart > opakEnd)
			{
				for(i = opakStart; i >= opakEnd; i--)
				{
					setTimeout("oO._CrossOpak(" + i + ",'" + id + "')", (timer * speed));
					timer++;
				}
			}
			else if(opakStart < opakEnd)
			{
				for(i = opakStart; i <= opakEnd; i++)
				{
					setTimeout("oO._CrossOpak(" + i + ",'" + id + "')", (timer * speed));
					timer++;
				}
			}
		},

	/**
	* Variation de hauteur progressive d'un conteneur
	* @param id: (string) id de l'élément
	* @param initHeight: (integer) hauteur de départ
	* @param finalHeight: (integer) hauteur d'arrivée
	* @param interval: (integer) Intervalle de répétition
	*/
	_Deroule:
		function(id, initHeight, finalHeight, interval)
		{
			var oElem = document.getElementById(id);
			if(!oElem) return;

			if(typeof(initHeight || finalHeight || interval) != 'number') return;

			if(oElem.movement) clearTimeout(oElem.movement);

			if( !oElem.style.height ) oElem.style.height = parseInt(initHeight) + 'px';
			var iDimY = parseInt(oElem.style.height);

			if(iDimY == finalHeight) return;

			if(iDimY < finalHeight)
			{
				var dist = Math.ceil((finalHeight - iDimY)/10);
				iDimY = iDimY + dist;
			}
			if(iDimY > finalHeight)
			{
				var dist = Math.ceil((iDimY - finalHeight)/10);
				iDimY = iDimY - dist;
			}
			oElem.style.height = iDimY + 'px';

			var repeat = "oO._Deroule('" + id + "'," + initHeight + "," + finalHeight + "," + interval + ")";
			oElem.movement = setTimeout(repeat, interval);
			return;
		}

};

/**
* Lancement du script
*/
oO._FastLoadEvent(function() { oO._CtrlDisplay('mondoc', 'monform'); });

}
/**
* Annulation du script s'il y a une erreur
*/
catch(e) {};


		//]]></script>
	</head>
	<body>


<div id="mondoc">
	<h3>Formulaire de connexion</h3>
	<form id="monform" action="" method="post">
		<div>
			<label for="pseudo">Pseudo : </label>
			<input type="text" id="pseudo" name="pseudo" />
			<label for="mdp">Mot de passe : </label>
			<input type="text" id="mdp" name="mdp" />
			<input type="submit" id="submit" value="transmettre" />
		</div>
	</form>
</div>


	</body>
</html>


<edit>J'ai rajouté un peu de doc dans le script et corrigé l'affichage sur IE... A première vue, ça paraît lourd mais ça pèse 15 fois moins que Prototype...</edit>
Modifié par koala64 (08 Jan 2007 - 19:21)
mpop a écrit :

Pas un très bon exemple alors : si Javascript est désactivé, on ne peut voir aucun commentaire, et on ne peut pas en saisir un non plus. C'est pas à proprement parler du Javascript « non obstructif »...

De plus, si les commentaires et formulaires étaient visibles avec Javascript désactivé, on aurait une page énorme avec pour chaque billet de la liste le billet, ses commentaires et son formulaire pour envoyer un commentaire. Smiley sweatdrop

Donc dans l'absolu ce genre de procédé est très intéressant, mais attention à l'utiliser à bon escient. Smiley cligne


J'ai prévu d'utiliser ce script a l'interieur meme du billet, donc si javascript est desactivé, le billet serait affiché normalement avec les commentaires et le formulaire. Enfin j'espere Smiley biggol

koala64 : merci pour ton script mais il me parait un peu difficile pour moi, je cherche plutot quelque chose de simple un peu comme dans l'exemple donné. J'ai deja les librairies scriptaculous intallées sur mon blog pour infos.
Modifié par TGM (08 Jan 2007 - 23:34)
Modérateur
Parce que tu trouves Scriptaculous plus simple ? Smiley sweatdrop

J'avais commenté toutes les fonctions exprès pour que tu puisses en comprendre le sens et le seul truc à modifier pour te servir de ce script, c'est les deux id de cette ligne :

oO._FastLoadEvent(function() { oO._CtrlDisplay([#red]'mondoc'[/#], [#red]'monform'[/#]); });
pour l'adapter à ton cas...

... du moins, en théorie parce qu'en pratique Smiley confused , il faut adapter les temps de modification de l'opacité :
oO._ChgOpak(oElem.id, 0, 100, [#red]200[/#]);

et de variation de hauteur :
oO._Deroule(oElem.id, 0, oO.HautTot, [#red]5[/#]);

en fonction du conteneur que tu traites... Y'aurait quelques petits trucs à retoucher peut-être...

... mais je trouve que c'est bien peu de choses comparé à la moindre adaptation de Scriptaculous... Vu que tu me parles de cette bibliothèque, ce n'est pas 15 fois moins lourd que je te proposes mais le double... Je persiste à croire que 95% des personnes qui s'en servent ne comprennent pas un traitre mot de Prototype/Scriptaculous et ne souhaitent que des effets visuels...

Je te laisse choisir... de toute façon, ça servira à d'autres...

Maintenant, si j'ai bien vu, ta page d'accueil fait 852ko ! Smiley eek A moins que le compteur ne se soit emballé, je n'ai pas vu pire jusqu'alors... (le plus gros travail à mener étant du côté de tes images)

Tes scripts pèsent 122ko à eux seuls... Là, je te proposais un script de 7ko (commentaires compris)

L'exemple que tu donnes n'est pas plus simple, bien au contraire... Dans les deux cas, le contrôle ne se fait que via une ligne de code...
Le soucis c'est que je ne saurait adapter ce code sur mon template, d'ailleurs je ne sait meme pas ce qu'il faut mettre et ou il faut le mettre. Faut croire que je débute mais je suis pret a pprendre...

Et sinon que me conseille tu pour alléger ma page ?

Voila ce que j'ai reussi a faire, par contre la page tremblote un peu (avec scriptaculous) :

http://daleetstudios.free.fr/dc/index.php?2006/12/11/1-first-post

Il y a un moyen de remédier a cela ?

J'aimerait aussi savoir comment faire pour le contenu soit caché.
Modifié par TGM (09 Jan 2007 - 05:34)
Modérateur
Salut,

Ce n'est pas cette page que j'avais vu mais celle que tu montres a quand même un poids non justifié. (scripts inutiles) Smiley cligne

a écrit :
Voila ce que j'ai reussi a faire, par contre la page tremblote un peu (avec scriptaculous) :

http://daleetstudios.free.fr/dc/index.php?2006/12/11/1-first-post


Je te propose de faire un essai sur cette page... Dans mon exemple aussi, ça tremblote un peu, mais en JS, il est assez difficile de faire une animation aussi fluide qu'avec Flash... (si tant est que ce soit possible, ce dont je doute...)

@Eldebaran : Si tu passes par là et que tu as un peu de temps, il me semble que tu avais fait quelquechose de plus fluide justement... Smiley murf

Déjà, premier truc, tu supprimes ceci :
   <script type="text/javascript" src="/dc/ecrire/tools/lightbox/js/prototype.js"></script>
   <script type="text/javascript" src="/dc/ecrire/tools/lightbox/js/scriptaculous.js?load=effects"></script>
   <script type="text/javascript" src="/dc/ecrire/tools/lightbox/js/lightbox.js"></script>
   <script src="/js/prototype.js" type="text/javascript"></script>
   <script src="/js/scriptaculous.js?load=effects" type="text/javascript"></script>


Tout de suite, on respire... Smiley lol

Ensuite, tu intègres :
<div id="trackbacks">
   <h3 id="tb">La discussion continue ailleurs</h3>
   <p>Aucun rétrolien.</p>
   <p>Pour faire un rétrolien sur ce billet :
		 http://daleetstudios.free.fr/dc/tb.php?id=1</p>
 
</div>
dans la div qui est juste au-dessus ( <div id="comments"></div> )

De là, tu crées un nouveau fichier js que tu lies comme ça par exemple :
<script type="text/javascript" src="/js/displayProgress.js"></script>


et dans ce fichier, tu mets ceci :
/**
* Test du script
*/
try {

/**
* Création d'un objet
*/
var oO =
{
	/**
	* Chargement rapide
	* @param func: (object) Fonction chargée au chargement de la page
	*/
	_FastLoadEvent:
		function(func)
		{
			if(document.addEventListener) document.addEventListener('DOMContentLoaded', func, false);

			/*@cc_on @*/
				/*@if(@_win32) document.write('<scr'+'ipt id="__ie_onload" defer src="javascript:void(0)"><\/scr'+'ipt>');
				var script = document.getElementById('__ie_onload');
				script.onreadystatechange = function()
				{
					if(this.readyState === 'complete') func();
				};
			/*@end @*/

			if(/WebKit/i.test(navigator.userAgent) && /loaded|complete/.test(document.readyState)) func();
		},

	/**
	* Attache une fonction à un événement
	* @param oElem: (object) Element générateur
	* @param sEvType: (string) Evénement déclencheur
	* @param fn: (function) Fonction attachée
	* @param bCapture: (boolean) Mode de transmission
	*/
	_Connect:
		function(oElem, sEvType, fn, bCapture)
		{
			oElem.addEventListener?
				oElem.addEventListener(sEvType, fn, bCapture):
				oElem.attachEvent?
					oElem.attachEvent('on' + sEvType, fn):
					false;
		},

	/**
	* Obtention de l'élément qui génère l'événement
	* @param e: (object) Evénement
	* @return Element souhaité
	*/
	_GetTarget:
		function(e)
		{
			var oTarget = e.target || e.srcElement;
			if(oTarget.nodeType === 3) oTarget = oTarget.parentNode;
			return oTarget;
		},

	/**
	* Annulation de la transmission de l'événement au clic sur un élément
	* @param e: (object) Evénement
	* @return Annulation de la transmission de l'événément aux autres éléments
	*/
	_CancelClick:
		function(e)
		{
			if(e && e.stopPropagation && e.preventDefault)
			{
				e.stopPropagation();
				e.preventDefault();
				return false; // Pour Safari
			}
			else if(window.event && window.event.cancelBubble && window.event.returnValue)
			{
				window.event.cancelBubble = true;
				window.event.returnValue = false;
				return false;
			}
			else return false;
		},

	/**
	* Contrôle d'affichage/masquage d'un élément à partir d'un lien
	* @param sIdCont: (string) id du conteneur
	* @param sId: (string) id de l'élément
	*/
	_CtrlDisplay:
		function(sIdCont, sId)
		{
			var oElem = document.getElementById(sId),
			    oA = document.createElement('a'),
			    oTxt = document.createTextNode('Montrer les commentaires');
			oA.href = '#montrer';
			oA.appendChild(oTxt);
			document.getElementById(sIdCont).insertBefore(oA, oElem);

			oO.HautTot = oElem.offsetHeight + Math.round(oElem.offsetHeight/10);
			oElem.style.height = 0;
			oElem.style.overflow = 'hidden';
			oO._Connect(oA, 'click', function(e) { oO._Display(oElem, e); return oO._CancelClick(e); }, false);
		},

	/**
	* Affichage/masquage d'un élément
	* @param oElem: (object) Element
	* @param e: (object) Evénement
	*/
	_Display:
		function(oElem, e)
		{
			var oTarget = oO._GetTarget(e);
			if(oTarget.firstChild.data === 'Montrer les commentaires')
			{
				oTarget.firstChild.data = 'Cacher les commentaires';
				oTarget.href = '#cacher';
				oO._Deroule(oElem.id, 0, oO.HautTot, 10);
				oO._ChgOpak(oElem.id, 0, 100, 500);
			}
			else
			{
				oTarget.firstChild.data = 'Montrer les commentaires';
				oTarget.href = '#montrer';
				oO._Deroule(oElem.id, oO.HautTot, 0, 10);
				oO._ChgOpak(oElem.id, 100, 0, 500);
			}
		},

	/**
	* Cross-browser sur l'opacité d'un élément
	* @param opak: (integer) Valeur de l'opacité
	* @param id: (string) id de l'élément
	*/
	_CrossOpak:
		function(opak, id)
		{
			var oElemStyle = document.getElementById(id).style;
			oElemStyle.opacity = (opak / 100);
			oElemStyle.MozOpacity = (opak / 100);
			oElemStyle.KhtmlOpacity = (opak / 100);
			oElemStyle.filter = "alpha(opacity=" + opak + ")";
		},

	/**
	* Modification de l'opacité d'un élément
	* @param id: (string) id de l'élément
	* @param opakStart: (integer) Opacité de départ
	* @param opakEnd: (integer) Opacité d'arrivée
	* @param ms: (integer) Temps
	*/
	_ChgOpak:
		function(id, opakStart, opakEnd, ms)
		{
			var speed = Math.round(ms / 100);
			var timer = 0;
			var i;

			if(opakStart > opakEnd)
			{
				for(i = opakStart; i >= opakEnd; i--)
				{
					setTimeout("oO._CrossOpak(" + i + ",'" + id + "')", (timer * speed));
					timer++;
				}
			}
			else if(opakStart < opakEnd)
			{
				for(i = opakStart; i <= opakEnd; i++)
				{
					setTimeout("oO._CrossOpak(" + i + ",'" + id + "')", (timer * speed));
					timer++;
				}
			}
		},

	/**
	* Variation de hauteur progressive d'un conteneur
	* @param id: (string) id de l'élément
	* @param initHeight: (integer) hauteur de départ
	* @param finalHeight: (integer) hauteur d'arrivée
	* @param interval: (integer) Intervalle de répétition
	*/
	_Deroule:
		function(id, initHeight, finalHeight, interval)
		{
			var oElem = document.getElementById(id);
			if(!oElem) return;

			if(typeof(initHeight || finalHeight || interval) != 'number') return;

			if(oElem.movement) clearTimeout(oElem.movement);

			if( !oElem.style.height ) oElem.style.height = parseInt(initHeight) + 'px';
			var iDimY = parseInt(oElem.style.height);

			if(iDimY == finalHeight) return;

			if(iDimY < finalHeight)
			{
				var dist = Math.ceil((finalHeight - iDimY)/10);
				iDimY = iDimY + dist;
			}
			if(iDimY > finalHeight)
			{
				var dist = Math.ceil((iDimY - finalHeight)/10);
				iDimY = iDimY - dist;
			}
			oElem.style.height = iDimY + 'px';

			var repeat = "oO._Deroule('" + id + "'," + initHeight + "," + finalHeight + "," + interval + ")";
			oElem.movement = setTimeout(repeat, interval);
			return;
		}

};

/**
* Lancement du script
*/
oO._FastLoadEvent(function() { oO._CtrlDisplay('content', 'comments'); });

}
/**
* Annulation du script s'il y a une erreur
*/
catch(e) {};


De là, tu repostes et on regarde le résultat... Smiley smile

(Si tout va bien, tu gagnes pas loin de 100ko)
Modifié par koala64 (09 Jan 2007 - 10:01)
Salut !
koala64 a écrit :
@Eldebaran : Si tu passes par là et que tu as un peu de temps, il me semble que tu avais fait quelquechose de plus fluide justement... Smiley murf
Je pense que tu fais référence à ce que j'avais dit dans un sujet précédent. Pour ma part, j'utilise un seul timeout, et je calcule la valeur qui évolue avec l'animation (opacité, hauteur, ..) à chaque itération, pour essayer d'atténuer les imprécisions de setTimeOut. Ceci dit, je ne sais pas si c'est adapté à toutes les situations.
koala64 a écrit :
Salut,

Ce n'est pas cette page que j'avais vu mais celle que tu montres a quand même un poids non justifié. (scripts inutiles) Smiley cligne

Voila ce que j'ai reussi a faire, par contre la page tremblote un peu (avec scriptaculous) :

http://daleetstudios.free.fr/dc/index.php?2006/12/11/1-first-post


Je te propose de faire un essai sur cette page... Dans mon exemple aussi, ça tremblote un peu, mais en JS, il est assez difficile de faire une animation aussi fluide qu'avec Flash... (si tant est que ce soit possible, ce dont je doute...)

Pourtant, j'ai testé sur IE7 et ca ne rend pas pareil, l'effet est plus fluide...

@Eldebaran : Si tu passes par là et que tu as un peu de temps, il me semble que tu avais fait quelquechose de plus fluide justement... Smiley murf

Déjà, premier truc, tu supprimes ceci :
   <script type="text/javascript" src="/dc/ecrire/tools/lightbox/js/prototype.js"></script>
   <script type="text/javascript" src="/dc/ecrire/tools/lightbox/js/scriptaculous.js?load=effects"></script>
   <script type="text/javascript" src="/dc/ecrire/tools/lightbox/js/lightbox.js"></script>
   <script src="/js/prototype.js" type="text/javascript"></script>
   <script src="/js/scriptaculous.js?load=effects" type="text/javascript"></script>


Tout de suite, on respire... Smiley lol

Oui mais le lightbox est un plugin pour certaines images dans les billets et j'ai egalement un scroll.to installé sur ma page...

Ensuite, tu intègres :
<div id="trackbacks">
   <h3 id="tb">La discussion continue ailleurs</h3>
   <p>Aucun rétrolien.</p>
   <p>Pour faire un rétrolien sur ce billet :
		 http://daleetstudios.free.fr/dc/tb.php?id=1</p>
 
</div>
dans la div qui est juste au-dessus ( <div id="comments"></div> )

De là, tu crées un nouveau fichier js que tu lies comme ça par exemple :
<script type="text/javascript" src="/js/displayProgress.js"></script>


et dans ce fichier, tu mets ceci :

J'ai rien compris quand a l'implémentation du script, pourrait avoir l'exemple avec le code inséré car j'avoue etre un peu perdu.
Modérateur
a écrit :
(...) pourrait avoir l'exemple avec le code inséré (...) ERROR !

GAME OVER !

Insert coins to continue...

(Je veux bien faire un effort mais là, ça dépasse les bornes... Si tu veux qu'on continue, tu le fais... quitte à faire des erreurs...)
Modifié par koala64 (09 Jan 2007 - 19:07)
Les librairies scriptaculos et co semblent être conçuent que pour les ordis derniéres générations, et sincérement a chaque fois que j'ai fait des tests avec, ça bug quelque part. En plus c'est clair 120k pour ouvrir un formulaire, + des tremblements, sincérement il vaut mieux mettre un bon vieux ouvert/fermé de trois lignes, dans la pluspart des cas c'est beaucoup mieux, maintenant si tu veux vraiment des effets Koala à raison il faut ce mettre a coder, et si tu ne sais pas integrer un scripts, ça vat être dur.

D'autre part je pense qu'on peut faire des trucs quasiment aussi fluide qu'avec flash, ce qui me fait douter c'est leur utilitées... A part ce contenter des clients...

J'ai fait pas mal de tests sur ces questions même sur des veilles machines (qui sont lentent même avec flash), et on arrive à de bon résultats. Le scripts de Koala, ou celui que l'on a fait sur ce forum (cf lien d'Aldebaran), marchent trés bien et à mon gout son beaucoup mieux que scriptaculos.

Sinon Aldebaran, ça m'interresse de voir ta méthode, histoire de progresser encore sur le sujet, d'autre part ça pourrait être interressant de mettre en ligne differentes pages de test celon les methodes.
Modifié par matmat (09 Jan 2007 - 20:05)
matmat a écrit :
Sinon Aldebaran, ça m'interresse de voir ta méthode, histoire de progresser encore sur le sujet, d'autre part ça pourrait être interressant de mettre en ligne differentes pages de test celon les methodes.
Ah, tu parles d'Eldebaran ? Smiley cligne

Ce n'est pas ma méthode à proprement parler, je fais juste référence à la méthode que je t'avais conseillée dans le lien au-dessus, et que j'applique moi-même.

Ceci dit, je vote pour la page de test.
Modifié par Eldebaran (09 Jan 2007 - 20:31)
Sinon moi j'aime bien l'effet super dur à faire en Javascript qui consiste, en cliquant sur un texte ou une image, à faire apparaitre d'un seul coup un contenu préalablement masqué.

Je vois beaucoup de site qui font des effets de transition, de dimensionnement progressif, d'apparition progressive avec fondu au blanc... je me dis que les pauvres doivent en baver, et que seuls les vrais pros qui maitrisent comme c'est pas permis arrivent vraiment à faire des choses qui marchent bien, comme faire apparaitre instantanément et sans délai un contenu caché.

Purée, ça a l'air dur le Javascript quand même.
mpop a écrit :
Sinon moi j'aime bien l'effet super dur à faire en Javascript qui consiste, en cliquant sur un texte ou une image, à faire apparaitre d'un seul coup un contenu préalablement masqué.
Attention, tu vas un peu vite. Il faut commencer par les bases, c'est-à-dire l'effet de transition avec le contenu à montrer qui est récupéré via AJAX.
a écrit :
Il faut commencer par les bases, c'est-à-dire l'effet de transition avec le contenu à montrer qui est récupéré via AJAX.
Bien sur tout ceci s'obtient en faisant un draganddrop depuis le lien.
Modérateur
Tiens ?! c'est märdy Smiley biggol l'est où Majax ? Smiley lol

PS: Moi aussi je vote pour le test ! Smiley biggrin
PS 2 : Je l'ai amélioré de mon côté... Smiley murf
Modifié par koala64 (09 Jan 2007 - 21:21)
J'ai déja quelques tests (cf l'autre post) mais ce serait plus sympa de mettre au lieu de mon vieux texte en espagnol, un texte précisement sur les effets js, utilisation et imites, d'ailleur ces derniers temps j'en est fait quelques autres, qu'on pourrait également mettre en test.
Modifié par matmat (09 Jan 2007 - 22:08)
koala64 a écrit :
(...) pourrait avoir l'exemple avec le code inséré (...) ERROR !

GAME OVER !

Insert coins to continue...

(Je veux bien faire un effort mais là, ça dépasse les bornes... Si tu veux qu'on continue, tu le fais... quitte à faire des erreurs...)

Je me suis mal exprimé désolé Smiley ohwell , c'est vraiment que j'aimerait qu'on me dise exactement quel code il faut mettre et ou, mais je veut bien essayer, comme tu dis quitte a faire des erreurs.
Pages :