<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JBJ's Blog &#187; Javascript/Ajax</title>
	<atom:link href="http://www.lyxia.org/blog/category/developpement/javascriptajax/feed" rel="self" type="application/rss+xml" />
	<link>http://www.lyxia.org/blog</link>
	<description>Lyxia.org</description>
	<lastBuildDate>Sat, 27 Feb 2010 10:24:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>8 &#171;&#160;Accordéons&#160;&#187; JQuery</title>
		<link>http://www.lyxia.org/blog/developpement/javascriptajax/8-accordeons-jquery-397</link>
		<comments>http://www.lyxia.org/blog/developpement/javascriptajax/8-accordeons-jquery-397#comments</comments>
		<pubDate>Sat, 14 Mar 2009 17:07:35 +0000</pubDate>
		<dc:creator>jbj</dc:creator>
				<category><![CDATA[Javascript/Ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.lyxia.org/blog/?p=397</guid>
		<description><![CDATA[C'est une certitude, les "accordéons" Javascript ont le vent en poupe ces temps ci. Ils sont en effet très utiles et peuvent être utilisés comme menus de navigation, galerie de contenu, et bien d'autres encore.
Je vous propose ici une liste des 8 meilleurs - selon moi - accordéons Javascript à utiliser avec le framework JQuery.
1 [...]]]></description>
			<content:encoded><![CDATA[<p>C'est une certitude, les "accordéons" Javascript ont le vent en poupe ces temps ci. Ils sont en effet très utiles et peuvent être utilisés comme menus de navigation, galerie de contenu, et bien d'autres encore.<br />
Je vous propose ici une liste des 8 meilleurs - selon moi - accordéons Javascript à utiliser avec le framework JQuery.</p>
<h2>1 - L'accordéon Dynamic Drive</h2>
<p><a href="http://www.dynamicdrive.com/dynamicindex17/ddaccordion.htm" rel="nofollow" target="_blank"><img src="/blog/wp-content/uploads/2009/03/s1.png" alt="JavaScript Accordéon" /></a><br />
Un accordéon aux possibilités de customisation impressionnantes. Absolument parfait dans la sidebar d'un blog, par exemple.<br />
<a href="http://www.dynamicdrive.com/dynamicindex17/ddaccordion.htm" rel="nofollow" target="_blank">Source</a></p>
<h2>2 - Design Reviver Horizontal Accordion</h2>
<p><a href="http://designreviver.com/tutorials/jquery-examples-horizontal-accordion/" rel="nofollow" target="_blank"><img src="/blog/wp-content/uploads/2009/03/s2.png" alt="jQuery Accordéon" /></a><br />
Un de mes préférés. Lorsque vous passez la souris sur une image, il laisse voir la légende. Particulièrement adapté pour créer des animations "Featured posts" comme on en trouve sur la homepage de ce blog.<br />
<a href="http://designreviver.com/tutorials/jquery-examples-horizontal-accordion/" rel="nofollow" target="_blank">Source</a></p>
<h2>3 - jQuery UI Accordion</h2>
<p><a href="http://jquery.bassistance.de/accordion/demo/" rel="nofollow" target="_blank"><img src="/blog/wp-content/uploads/2009/03/s3.png" alt="" /></a><br />
Parfait pour créer un menu ou sous menu, même si plutôt limité dans l'ensemble.<br />
<a href="http://jquery.bassistance.de/accordion/demo/" rel="nofollow" target="_blank">Source</a></p>
<h2>4 - Simple jQuery Accordion Menu</h2>
<p><a href="http://www.i-marco.nl/weblog/jquery-accordion-menu-redux/" rel="nofollow" target="_blank"><img src="/blog/wp-content/uploads/2009/03/s4.png" alt="" /></a><br />
Même genre que celui dont je viens de parler en plus complexe et avec des tas d'options. Il peut notamment être utilisé comme menu, mais pas seulement. Une petite visite sur le site de l'auteur vous donnera un avant gout de ce dont ce petit plugin est capable.<br />
<a href="http://www.i-marco.nl/weblog/jquery-accordion-menu-redux/" rel="nofollow" target="_blank">Source</a></p>
<h2>5 - Accordion menu using jQuery</h2>
<p><a href="http://roshanbh.com.np/2008/06/accordion-menu-using-jquery.html" rel="nofollow" target="_blank"><img src="/blog/wp-content/uploads/2009/03/s5.png" alt="" /></a><br />
Un autre accordéon dédié à la création d'un menu de navigation. Extrêmement simple, il se révèle particulièrement adapté au débutant. A noter, il est très simple de définir l'ouverture du menu soit au clic, soit au rollover.<br />
<a href="http://roshanbh.com.np/2008/06/accordion-menu-using-jquery.html" rel="nofollow" target="_blank">Source</a></p>
<h2>6 - Xbox 360-like horizontal jQuery accordion</h2>
<p><a href="http://www.portalzine.de/index?/Horizontal_Accordion--print" rel="nofollow" target="_blank"><img src="/blog/wp-content/uploads/2009/03/s6.png" alt="" /></a><br />
Comme son nom l'indique, ce plugin est une réplique d'un slideshow que l'on retrouve sur la console x-box. Si vous cherchez à créer une galerie "featured" d'articles sur votre blog, il est une excellente alternative au "Smoothgallery" que l'on voit un peu partout.<br />
<a href="http://www.portalzine.de/index?/Horizontal_Accordion--print" rel="nofollow" target="_blank">Source</a></p>
<h2>7 - Simple horizontal jQuery accordion</h2>
<p><a href="http://letmehaveblog.blogspot.com/2007/10/haccordion-simple-horizontal-accordion.html" rel="nofollow" target="_blank"><img src="/blog/wp-content/uploads/2009/03/s7.png" alt="" /></a><br />
Un accordéon horizontal simplissime mais extrêmement personnalisable. Bien qu'il soit assez moche par défaut, vous pouvez lui donnez un look d'enfer grâce aux CSS.<br />
<a href="http://letmehaveblog.blogspot.com/2007/10/haccordion-simple-horizontal-accordion.html" rel="nofollow" target="_blank">Source</a></p>
<h2>8 - HoverAccordion jQuery Plugin</h2>
<p><a href="http://berndmatzner.de/jquery/hoveraccordion/" rel="nofollow" target="_blank"><img src="/blog/wp-content/uploads/2009/03/s8.png" alt="" /></a><br />
Vous aimez le site d'Apple? Si oui, alors vous aimerez à coup sur cet accordéon qui imite plutôt bien celui qu'on trouve sur le site du constructeur Américain.<br />
<a href="http://berndmatzner.de/jquery/hoveraccordion/" rel="nofollow" target="_blank">Source</a></p>
<p>Et voilà pour aujourd'hui. Des idées pour rallonger cette liste ?</p>
<style type="text/css">
h2 { padding-bottom:10px; }
</style>
]]></content:encoded>
			<wfw:commentRss>http://www.lyxia.org/blog/developpement/javascriptajax/8-accordeons-jquery-397/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Vérifier les données d&#8217;un formulaire avec AJAX</title>
		<link>http://www.lyxia.org/blog/developpement/javascriptajax/verifier-les-donnees-dun-formulaire-avec-ajax-342</link>
		<comments>http://www.lyxia.org/blog/developpement/javascriptajax/verifier-les-donnees-dun-formulaire-avec-ajax-342#comments</comments>
		<pubDate>Sat, 28 Feb 2009 12:56:04 +0000</pubDate>
		<dc:creator>jbl</dc:creator>
				<category><![CDATA[Javascript/Ajax]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[XMLHttpRequest]]></category>

		<guid isPermaLink="false">http://www.lyxia.org/blog/?p=342</guid>
		<description><![CDATA[Dernièrement je suis encore tombé sur l'un de ces longs formulaires où l'on doit indiquer plein d'informations, se choisir un pseudo et lorsqu'on le valide, les informations sont envoyées vers le serveur, qui les contrôle, et si on a commis une erreur, on se retrouve sur le même formulaire avec le message d'erreur "Pseudo déjà [...]]]></description>
			<content:encoded><![CDATA[<p>Dernièrement je suis encore tombé sur l'un de ces longs formulaires où l'on doit indiquer plein d'informations, se choisir un pseudo et lorsqu'on le valide, les informations sont envoyées vers le serveur, qui les contrôle, et si on a commis une erreur, on se retrouve sur le même formulaire avec le message d'erreur "Pseudo déjà utilisé merci d'en choisir un autre".</p>
<p>C'est un peu pénible surtout qu'il faut alors ressaisir les mots de passe qui se sont effacés, et le code de vérification anti-robot.</p>
<p>Il y a pourtant une technique simple, qui existe depuis longtemps et qui fonctionne à merveille : L'AJAX et son XMLHttpRequest.</p>
<p>AJAX : Asynchronous JavaScript and XML, c'est un nom qui a été donné à un ensemble de techniques qui permettent de modifier les informations d'une page web sans avoir à la recharger. Le "client" est donc sollicité un peu plus et le "serveur" un peu moins.</p>
<p>Concrètement, dès qu'une personne a saisi le pseudo désiré, une requête va être automatiquement envoyée au serveur afin de vérifier que ce pseudo n'est pas déjà utilisé.<br />
En retour on affichera un flag vert à côté du champ pseudo s'il est libre et une croix rouge s'il existe déjà. Dans ce cas on verrouillera la possibilité de valider le formulaire en affichant une alerte javascript.</p>
<p>La classe XMLHttpRequest </p>
<p>Attributs</p>
<pre>
<b>readyState</b>
code d'état qui passe successivement de 0 à 4 indiquant qu'il est "prêt"
<b>status</b>
200 si tout est ok et 404 si page non trouvée
<b>responseText</b>
la réponse sous forme d'une chaîne de caractères
<b>responseXml</b>
la réponse sous forme xml on utilisera  les méthodes de DOM pour les extraire
<b>onreadystatechange</b>
on lui assigne une fonction qui sera appelée lors d'un changement d'état
</pre>
<p>Méthodes</p>
<pre>
<b>open</b> (mode, url, boolean)
- mode : 2 valeurs possibles qui sont GET ou POST
- url : la page à appeler
- boolean : true pour asynchrone et false pour synchrone
<b>send</b>("arg")
- des parametres, en général les données à analyser
</pre>
<p>La création de cet objet est différente selon le navigateur :</p>
<pre>
if(document.all) var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); //IE
else var XhrObj = new XMLHttpRequest(); //Mozilla
</pre>
<p>On indique l'endroit d'affichage de la réponse : </p>
<pre>
content = document.getElementById("pseudo_check"); 	//zone d'affichage
</pre>
<p>On aura donc dans le code html de notre page, à droite du champ à vérifier </p>
<pre>
&lt;span id="pseudo_check">&lt;/span>
</pre>
<p>Ce qui concrètement ressemblera à ça, notre champ de saisie, l'appel par un <i>onblur</i> à notre fonction javascript de contrôle dès que la personne quitte le champ, et la zone de la réponse du contrôle :</p>
<pre>
&lt;input type="text" name="pseudo" value="" onblur="req_pseudo(this.value);"> &lt;span id="pseudo_check">&lt;/span>
</pre>
<p>Voyons comment va se faire la requête vers le serveur,<br />
on indique le nom de la page php qui fait le contrôle d'existence et la méthode (POST ou GET) :</p>
<pre>
  XhrObj.open("POST", "verification_pseudo.php");
</pre>
<p>L'envoi de la requête vers le serveur en passant le pseudo à contrôler :</p>
<pre>
  XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  XhrObj.send('p='+pseudo);
</pre>
<p>La page php qui aura à charge de faire une requête dans la base de données afin de vérifier l'existence ou non du pseudo.<br />
Si le pseudo est absent, elle retournera 'OK' sinon elle retournera 'FAIL'. On va tester ces réponses dans notre javascript </p>
<pre>
XhrObj.onreadystatechange = function()
{
  if (XhrObj.readyState == 4 &#038;& XhrObj.status == 200) {
    if (XhrObj.responseText == 'OK') {
      // ok nouveau pseudo
      content.innerHTML='&lt;img src="images/accepter.png" alt=""/> Ok';
    } else {
      // erreur pseudo déjà existant
      content.innerHTML='&lt;img src="images/refuser.png" alt=""/> Déjà pris';
    }
  }
}
</pre>
<p>La fonction au complet :</p>
<pre>
var bPseudo = false; // servira pour empêcher de poster le formulaire si vérification pseudo non ok
function req_pseudo(pseudo) {

  //XMLHttpRequest est supporté par Internet Explorer 5.0+, Safari 1.2, Mozilla 1.0 / Firefox, Netscape 7
  if(document.all) var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); //Internet Explorer
  else var XhrObj = new XMLHttpRequest(); //Mozilla

  content = document.getElementById("pseudo_check"); 	//zone d'affichage

  XhrObj.open("POST", "verif_pseudo.php");

  //Ok pour la page cible
  XhrObj.onreadystatechange = function()
  {
    if (XhrObj.readyState == 4 &#038;& XhrObj.status == 200) {
      if (XhrObj.responseText == 'OK') {
        // ok nouveau pseudo
        content.innerHTML='&lt;img src="images/accepter.png" alt=""/> Ok';
      } else {
        // erreur pseudo déjà existant
        content.innerHTML='&lt;img src="images/refuser.png" alt=""/> Déjà pris';
      }
    }
  }

  XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  XhrObj.send('p='+pseudo);

}
</pre>
<p>La page verification_pseudo.php</p>
<pre>
&lt;?php
$pseudo = htmlentities(addslashes($_POST['p']));
if (!empty($pseudo)) {
  $res = mysql_query("select * from users where pseudo='".$pseudo."'");
  echo (($row = mysql_fetch_array($res)) ? 'FAIL' : 'OK');
}
?>
</pre>
<p>Pour verrouiller l'envoi du formulaire tant que le pseudo n'est pas unique, il suffira de tester une variable bPseudo mise à jour lors du contrôle ajax.</p>
<pre>
function testChamps(f) {
  if (!bPseudo) return false;
  return true;
}
</pre>
<p>Pour les plus exigeants afin d'éviter qu'une personne ayant modifié son pseudo juste avant d'appuyer sur Valider passe au travers des contrôles :</p>
<pre>
function testChamps(f) {
  bPseudo = false; // on va revalider le champ
  req_pseudo(f.pseudo.value);
  if (!bPseudo) {
    alert('Erreur pseudo');
    return false;
  }
}
</pre>
<p>Cette fonction est bien entendu appelée lors de la demande soumission du formulaire.</p>
<pre>
&lt;form method="post" onSubmit="return testChamps(this);">
</pre>
<p>Vous pouvez tester ce code sur cette page <a href="/exemple/ajax_test.php" target="_blank">Test AJAX</a>.</p>
<p>Vous savez maintenant comment <strong>vérifier les données d'un formulaire avec AJAX</strong>.</p>
<p><br/><br/><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lyxia.org/blog/developpement/javascriptajax/verifier-les-donnees-dun-formulaire-avec-ajax-342/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Tutorial Noobslide avancé: Galerie avec images cliquables</title>
		<link>http://www.lyxia.org/blog/developpement/javascriptajax/tutorial-noobslide-avance-galerie-avec-images-cliquables-313</link>
		<comments>http://www.lyxia.org/blog/developpement/javascriptajax/tutorial-noobslide-avance-galerie-avec-images-cliquables-313#comments</comments>
		<pubDate>Tue, 15 Jul 2008 21:26:09 +0000</pubDate>
		<dc:creator>jbj</dc:creator>
				<category><![CDATA[Javascript/Ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[noobslide]]></category>
		<category><![CDATA[slideshow]]></category>

		<guid isPermaLink="false">http://www.lyxia.org/blog/?p=313</guid>
		<description><![CDATA[Il y a quelques temps, j'avais posté sur ce blog un tutorial parlant de Noobslide, script Javascript basé sur Mootools et permettant de mettre en place de magnifiques galeries et slideshows. Je vous propose aujourd'hui un nouveau tuto expliquant la mise en place d'une galerie d'images animée.]]></description>
			<content:encoded><![CDATA[<p>Il y a quelques temps, j'avais posté sur ce blog un tutorial parlant de Noobslide, script Javascript basé sur Mootools et permettant de mettre en place de magnifiques galeries et slideshows. Je vous propose aujourd'hui un nouveau tuto expliquant la mise en place d'une galerie d'images animée.</p>
<p><img src="http://www.catswhocode.com/blog/wp-content/uploads/2008/07/nooblide-advanced-tutorial.png" alt="Noobslide tutorial: advanced slideshow" /></p>
<h2>Première partie: Création du document HTML</h2>
<p>Une fois que vous avez téléchargé l'archive de Noobslide, créez un document html que vous nommerez <em>sample7.html</em>, dans le répertoire <em>class.noobSlide.js</em>.<br />
Nous devons inclure les feuilles de style, ainsi que les classes Mootools nécessaires au fonctionnement de Noobslide:</p>
<pre>
&lt;link rel="stylesheet" href="_web.css" type="text/css" media="screen" />
&lt;link rel="stylesheet" href="style.css" type="text/css" media="screen" />
&lt;script type="text/javascript" src="_mootools.js">&lt;/script>
&lt;script type="text/javascript" src="_class.noobSlide.js">&lt;/script>
</pre>
<p>Nous pouvons maintenant créer le html pour notre galerie. Collez le code ci-dessous dans la partie body de votre document html.</p>
<pre>
&lt;h2&gt;Sample 7&lt;/h2&gt;
&lt;div class=&quot;sample&quot;&gt;
	&lt;div class=&quot;mask6&quot;&gt;
		&lt;div id=&quot;box7&quot;&gt;
			&lt;span&gt;&lt;img src=&quot;img1.jpg&quot; alt=&quot;Photo&quot; /&gt;&lt;/span&gt;
			&lt;span&gt;&lt;img src=&quot;img2.jpg&quot; alt=&quot;Photo&quot; /&gt;&lt;/span&gt;
			&lt;span&gt;&lt;img src=&quot;img3.jpg&quot; alt=&quot;Photo&quot; /&gt;&lt;/span&gt;
			&lt;span&gt;&lt;img src=&quot;img4.jpg&quot; alt=&quot;Photo&quot; /&gt;&lt;/span&gt;
			&lt;span&gt;&lt;img src=&quot;img5.jpg&quot; alt=&quot;Photo&quot; /&gt;&lt;/span&gt;
			&lt;span&gt;&lt;img src=&quot;img6.jpg&quot; alt=&quot;Photo&quot; /&gt;&lt;/span&gt;
			&lt;span&gt;&lt;img src=&quot;img7.jpg&quot; alt=&quot;Photo&quot; /&gt;&lt;/span&gt;
			&lt;span&gt;&lt;img src=&quot;img8.jpg&quot; alt=&quot;Photo&quot; /&gt;&lt;/span&gt;
		&lt;/div&gt;
	&lt;/div&gt;

	&lt;div id=&quot;thumbs7&quot;&gt;
		&lt;div class=&quot;thumbs&quot;&gt;
			&lt;div&gt;&lt;img src=&quot;img1.jpg&quot; alt=&quot;Photo Thumb&quot; /&gt;&lt;/div&gt;
			&lt;div&gt;&lt;img src=&quot;img2.jpg&quot; alt=&quot;Photo Thumb&quot; /&gt;&lt;/div&gt;
			&lt;div&gt;&lt;img src=&quot;img3.jpg&quot; alt=&quot;Photo Thumb&quot; /&gt;&lt;/div&gt;
			&lt;div&gt;&lt;img src=&quot;img4.jpg&quot; alt=&quot;Photo Thumb&quot; /&gt;&lt;/div&gt;
			&lt;div&gt;&lt;img src=&quot;img5.jpg&quot; alt=&quot;Photo Thumb&quot; /&gt;&lt;/div&gt;
			&lt;div&gt;&lt;img src=&quot;img6.jpg&quot; alt=&quot;Photo Thumb&quot; /&gt;&lt;/div&gt;
			&lt;div&gt;&lt;img src=&quot;img7.jpg&quot; alt=&quot;Photo Thumb&quot; /&gt;&lt;/div&gt;
			&lt;div&gt;&lt;img src=&quot;img8.jpg&quot; alt=&quot;Photo Thumb&quot; /&gt;&lt;/div&gt;
		&lt;/div&gt;

		&lt;div id=&quot;thumbs_mask7&quot;&gt;&lt;/div&gt;

		&lt;p id=&quot;thumbs_handles7&quot;&gt;
			&lt;span&gt;&lt;/span&gt;
			&lt;span&gt;&lt;/span&gt;
			&lt;span&gt;&lt;/span&gt;
			&lt;span&gt;&lt;/span&gt;
			&lt;span&gt;&lt;/span&gt;
			&lt;span&gt;&lt;/span&gt;
			&lt;span&gt;&lt;/span&gt;
			&lt;span&gt;&lt;/span&gt;
		&lt;/p&gt;
	&lt;/div&gt;
&lt;/div&gt;</pre>
<p>Ce bout de html est loin d'être parfait en terme de sémantique, même si ça ira parfaitement pour cet exemple. D'ailleurs, pourquoi ne pas réécrire ce code avec une meilleure structure en guise d'exercise?</p>
<h2>Deuxième partie: Javascript</h2>
<p>On va pouvoir s'amuser <img src='http://www.lyxia.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Voici donc le fameux code qui animera notre contenu.<br />
Vous n'avez qu'à le coller dans la partie head de votre document html, ou mieux, le placer dans un fichier <em>.js</em> séparé.</p>
<pre>
&lt;script type="text/javascript">
	window.addEvent('domready',function(){
		var startItem = 3; // First item to be displayed
		var thumbs_mask7 = $('thumbs_mask7').setStyle('left',(startItem*60-568)+'px').setOpacity(0.8);
		var fxOptions7 = {duration:1000, transition:Fx.Transitions.Back.easeOut, wait:false}
		var thumbsFx = new Fx.Style(thumbs_mask7,'left',fxOptions7);
		var hs7 = new noobSlide({
			box: $('box7'),
			items: [0,1,2,3,4,5,6,7],
			handles: $ES('span','thumbs_handles7'),
			fxOptions: fxOptions7,
			onWalk: function(currentItem){
				thumbsFx.start(currentItem*60-568);
			},
			startItem: startItem
		});
		hs7.walk(0);
	});
&lt;/script>
</pre>
<p>Et voilà! Vous diposez désormais d'un magnifique slideshow. Si vous avez des commentaires, des questions ou des idées d'amélioration, n'hésitez pas à m'en faire part <img src='http://www.lyxia.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.lyxia.org/blog/developpement/javascriptajax/tutorial-noobslide-avance-galerie-avec-images-cliquables-313/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Tutorial: Créer un slideshow avec Mootools et NoobSlide</title>
		<link>http://www.lyxia.org/blog/developpement/javascriptajax/tutorial-creer-un-slideshow-avec-mootools-et-noobslide-303</link>
		<comments>http://www.lyxia.org/blog/developpement/javascriptajax/tutorial-creer-un-slideshow-avec-mootools-et-noobslide-303#comments</comments>
		<pubDate>Mon, 16 Jun 2008 06:50:41 +0000</pubDate>
		<dc:creator>jbj</dc:creator>
				<category><![CDATA[Javascript/Ajax]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[noobslide]]></category>
		<category><![CDATA[slider]]></category>
		<category><![CDATA[slideshow]]></category>

		<guid isPermaLink="false">http://www.lyxia.org/blog/?p=303</guid>
		<description><![CDATA[Cela fait plusieurs jours que j'entends parler de Noobslide. Il s'agit d'un slideshow qui vous permettra de faire défiler textes et images dans un espace restreint, le tout agrémenté de transitions du meilleur effet. Seul bémol: Noobslide n'est pas particulièrement bien documenté, ce qui le rend difficilement accessible aux débutants. Voici un tuto pour débuter avec Noobslide et créer votre premier slideshow.]]></description>
			<content:encoded><![CDATA[<p>Cela fait plusieurs jours que j'entends parler de Noobslide. Il s'agit d'un slideshow qui vous permettra de faire défiler textes et images dans un espace restreint, le tout agrémenté de transitions du meilleur effet. Seul bémol: Noobslide n'est pas particulièrement bien documenté, ce qui le rend difficilement accessible aux débutants. Voici un tuto pour débuter avec Noobslide et créer votre premier slideshow.</p>
<h2>C'est parti!</h2>
<p>Commençons d'emblée par une petite capture d'écran histoire de vous montrer ce que vous pourrez faire de beau avec Noobslide:<br />
<img src="http://www.lyxia.org/blog/wp-content/uploads/2008/06/tutorial-noobslide.png" alt="Tutorial Noobslide"/></p>
<p>Si vous n'êtes toujours pas convaincus, ou que vous voulez voir le script en action (pour un slideshow c'est quand même mieux <img src='http://www.lyxia.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) c'est <a href="http://efectorelativo.net/laboratory/noobSlide/sample.html">ici</a> que ça se passe.<br />
Comme on peut le voir sur la démo, Noobslide propose pas moins de 8 slides différents. Il est bien entendu possible de les customiser à votre guise.</p>
<h2>Mise en place</h2>
<p>Pour ce tuto, j'ai choisi le premier exemple de la série. C'est à la fois le plus simple à mettre en place et le plus courant. </p>
<p>Nous allons bien entendu commencer par <a href="http://efectorelativo.net/laboratory/noobSlide/class.noobSlide.js.zip">récupérer l'archive de Noobslide</a>.<br />
Une fois dézippée, l'archive contient quelques images (très jolies, d'ailleurs) d'exemple, les scripts js, les css et le framework Mootools.</p>
<p>Nous allons donc inclure tout ce beau monde dans la partie <em>head</em> de notre document html:</p>
<pre>
&lt;link rel="stylesheet" href="_web.css" type="text/css" media="screen" />
&lt;link rel="stylesheet" href="style.css" type="text/css" media="screen" />
&lt;script type="text/javascript" src="_mootools.js">&lt;/script>
&lt;script type="text/javascript" src="_class.noobSlide.js">&lt;/script>
</pre>
<p>Dans la partie <em>body</em> de notre document html, nous allons créer notre contenu:</p>
<pre>
&lt;h2>Slideshow&lt;/h2>
&lt;div class="sample">
	&lt;div class="mask1">
		&lt;div id="box1">
			&lt;span>&lt;img src="img1.jpg" alt="Photo" />&lt;/span>
			&lt;span>&lt;img src="img2.jpg" alt="Photo" />&lt;/span>
			&lt;span>&lt;img src="img3.jpg" alt="Photo" />&lt;/span>
			&lt;span>&lt;img src="img4.jpg" alt="Photo" />&lt;/span>
			&lt;span>&lt;img src="img5.jpg" alt="Photo" />&lt;/span>
			&lt;span>&lt;img src="img6.jpg" alt="Photo" />&lt;/span>
			&lt;span>&lt;img src="img7.jpg" alt="Photo" />&lt;/span>
			&lt;span>&lt;img src="img8.jpg" alt="Photo" />&lt;/span>
		&lt;/div>
	&lt;/div>
&lt;/div>
</pre>
<p>Voilà pour le contenu. Nous avons créé trois conteneurs: <em>sample</em>, <em>box1</em> et <em>mask1</em>, le dernier faisant comme son nom l'indique office de masque.<br />
Sémantiquement parlant, j'aurais préféré utiliser une liste non-ordonnée (<em>&lt;li></em>), plutôt que cette longue suite de <em>&lt;span></em> sans fin, mais pour être honnête je m'en suis à l'heure actuelle tenu à décortiquer les exemples fournis par l'auteur.</p>
<p>Dernière étape: le javascript. Il est temps de donner vie à notre slideshow. Ajoutez le code qui suit dans la partie <em>head</em> de votre document html, ou mieux dans un fichier <em>.js</em> séparé:</p>
<pre>
&lt;script type="text/javascript">
	window.addEvent('domready',function(){
		var hs1 = new noobSlide({
			box: $('box1'),
			items: [1,2,3,4],
			size: 480,
			autoPlay: true
		});
	});
&lt;/script>
</pre>
<p>Observons ce bout de code de plus près:<br />
La méthode <em>window.addEvent()</em> permet de charger ce code dès que le navigateur à fini de charger l'arbre dom. On gagne donc on performance étant donné que nous n'avons pas besoin d'attendre le chargement complet de la page (et de toute les images!) pour charger ce script. J'avais déja parlé de cette méthode fort utile dans <a href="http://www.lyxia.org/blog/developpement/javascriptajax/bonnes-pratiques-javascript-le-code-non-intrusif-139">cet article</a>.</p>
<p>Ensuite, nous allons créer une instance de la classe noobSlide. Voyons ce que ça donne au niveau des paramètres:</p>
<ul>
<li><strong>box</strong>: l'id de l'élément contenant nos images. Dans notre exemple, il s'agit donc de box1. Notez que le sign $ n'est autre qu'un raccourci Mootools de la fonction <em>document.getElementById()</em>.</li>
<li><strong>items</strong>: Le nombre de pas du début à la fin du slideshow.</li>
<li><strong>size</strong>: la longueur du slideshow, en pixels.</li>
<li><strong>autoPlay</strong>: Réglé à <em>true</em>, ce paramètre permet, comme son nom l'indique, le défilement automatique.</li>
</ul>
<p>Pour ce qui est du styling css, étant donné que cet exemple utilise les ids et classes définies par défaut dans la feuille de style fournie, le rendu visuel sera identique à celui des exemples en ligne. Pour ce qui est de la personnalisation, c'est à vous de jouer <img src='http://www.lyxia.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h2>Conclusion</h2>
<p>Autant être clair, je suis sous le charme de ce script. D'ailleurs, <strong>je pense faire d'autres tutos dans la veine de celui-ci</strong>, comme par exemple l'étude des exemples <a href="http://efectorelativo.net/laboratory/noobSlide/sample.html">du site</a> ou encore l'intégration de noobslide dans Wordpress.<br />
<strong>N'hésitez pas à me dire ce qui vous intéresserais!</strong> <img src='http://www.lyxia.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.lyxia.org/blog/developpement/javascriptajax/tutorial-creer-un-slideshow-avec-mootools-et-noobslide-303/feed</wfw:commentRss>
		<slash:comments>37</slash:comments>
		</item>
		<item>
		<title>10 scripts Mootools pour l&#8217;interface utilisateur</title>
		<link>http://www.lyxia.org/blog/developpement/javascriptajax/10-scripts-mootools-pour-linterface-utilisateur-275</link>
		<comments>http://www.lyxia.org/blog/developpement/javascriptajax/10-scripts-mootools-pour-linterface-utilisateur-275#comments</comments>
		<pubDate>Tue, 06 May 2008 22:18:49 +0000</pubDate>
		<dc:creator>jbj</dc:creator>
				<category><![CDATA[Javascript/Ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mootools]]></category>

		<guid isPermaLink="false">http://www.lyxia.org/blog/?p=275</guid>
		<description><![CDATA[Vous connaissez certainement déja Mootools, cette librairie Javascript très légère et permettant de se simplifier le développement tout en codant d'une manière très propre. Je vous propose ici de découvrir 10 scripts basés sur Mootools dans le but de mettre en place l'ergonomie et l'esthétisme que l'on est en droit d'attendre d'une appli web d'aujourd'hui.]]></description>
			<content:encoded><![CDATA[<p>Vous connaissez certainement déja Mootools, cette librairie Javascript très légère et permettant de se simplifier le développement tout en codant d'une manière très propre. Je vous propose ici de découvrir 10 scripts basés sur Mootools dans le but de mettre en place l'ergonomie et l'esthétisme que l'on est en droit d'attendre d'une appli web d'aujourd'hui.</p>
<h2>Mocha UI</h2>
<p><a href="http://greghoustondesign.com/demos/mocha/"><br />
<img src="http://www.lyxia.org/blog/wp-content/uploads/2008/05/mochaui.jpg" alt="Mocha UI" /></a><br />
Si vous aimez les fenêtres, vous aimerez Mocha UI: En effet, qu'elles soient modales, fixes, flottantes ou redimensionnables, Mocha UI propose toutes sortes de fenêtres pour sublimer l'expérience utilisateur dans votre application web.</p>
<h2>Mootable</h2>
<p><a href="http://joomlicious.com/mootable/"><img src="http://www.lyxia.org/blog/wp-content/uploads/2008/05/mootable.jpg" alt="Mootable" /></a><br />
J'ai découvert Mootable sur <a href="http://www.x-or.be/blog/">le blog d'X-or</a>: Il s'agit d'un script permettant de traiter un tableau html de la même manière qu'un tableau provenant d'une application desktop. Il devient ainsi possible de redimensionner les colonnes, de trier les éléments du tableau, de souligner la ligne sur laquelle passe la souris...<br />
Bref, le must pour les tableaux de votre prochaine appli!</p>
<h2>Slimbox</h2>
<p><a href="http://www.digitalia.be/software/slimbox"><img src="http://www.lyxia.org/blog/wp-content/uploads/2008/05/slimbox.jpg" alt="Slimbox" /></a><br />
On ne présente plus ces fenêtres modales servant essentiellement à afficher du contenu multimedia. Il existe Lightwindow, Lightbox...Voici Slimbox, qui en plus d'être basé sur Mootools, se révèle est très légère. </p>
<h2>MooEditable</h2>
<p><a href="http://phoenity.com/mooeditable/"><img src="http://www.lyxia.org/blog/wp-content/uploads/2008/05/mooeditable.jpg" alt="MooEditable" /></a><br />
MooEditable est un éditeur wysiwyg dans le style de TinyMCE ou FckEditor. Il pèse moins de 10kb et est totalement cross-browser. Sa légèreté ainsi que son extensibilité en font selon moi un bon choix face à des éditeurs beaucoup plus lourds et pas nécessairement plus intuitifs pour l'utilisateur.<br />
Le rendu est correct pour du wysiwyg, mais bien entendu n'espérez pas obtenir un html aussi propre que si il avait été codé à la main.</p>
<h2>Mooflow</h2>
<p><a href="http://www.outcut.de/MooFlow/"><img src="http://www.lyxia.org/blog/wp-content/uploads/2008/05/mooflow.jpg" alt="Mooflow" /></a><br />
Les utilisateurs de Leopard, dernier OS d'Apple, apprécient énormément Coverflow, cette fonction permettant d'afficher les fichiers d'une manière esthétique et très intuitive. Alors, pourquoi ne pas en faire profiter les utilisateurs de votre site? A noter, ce script est un peu lourd, donc à utiliser avec parcimonie.</p>
<h2>Date Picker Widget</h2>
<p><a href="http://www.frequency-decoder.com/demo/date-picker-v2/"><img src="http://www.lyxia.org/blog/wp-content/uploads/2008/05/datepicker.jpg" alt="Date Picker Widget" /></a><br />
Si vous travaillez avec des dates, ce <em>Date picker</em> vous simplifiera la tâche tout en améliorant le coté user-friendly.</p>
<h2>Calendar</h2>
<p><a href="http://www.electricprism.com/aeron/calendar/"><img src="http://www.lyxia.org/blog/wp-content/uploads/2008/05/calendar.jpg" alt="Calendar" /></a><br />
Ce script fait un peu double emploi avec le date picker que nous venons de voir, mais c'est pour la bonne cause: Proposé en trois déclinaisons, (Noire, bleue et blanche) <em>Calendar</em> est le genre de script que l'on aimerait trouver sur tous les sites qui utilisent des dates: Très léger, esthétique et faisant également office de validation côté client, (impossible de rentrer une date invalide) que demander de plus?</p>
<h2>Mootools UI Menu</h2>
<p><a href="http://glutock.free.fr/mootools/UI/menu.html"><img src="http://www.lyxia.org/blog/wp-content/uploads/2008/05/uimenu.jpg" alt="Mootools UI Menu" /></a><br />
Je ne suis pas spécialement fan des menus contextuels apparaissant au clic droit en lieu et place du menu du navigateur, mais je me suis dit que ce script pourrait intéresser certains d'entre vous. A noter, il est également possible d'utiliser ce script pour faire apparaitre un menu lors d'un évènement, comme un clic sur un bouton, par exemple.</p>
<h2>Roar Notifications</h2>
<p><a href="http://digitarald.de/project/roar/1-0/showcase/messages/"><img src="http://www.lyxia.org/blog/wp-content/uploads/2008/05/roar.jpg" alt="Roar Notifications" /></a><br />
Une interface utilisateur à très souvent besoin d'avertir l'utilisateur: Champ mal renseigné, opération impossible...Bien sûr, la bonne vieille fonction <em>alert()</em> permet d'afficher des messages à l'attention de l'utilisateur, mais si vous recherchez une manière beaucoup plus esthétique de transmettre ce genre d'information, Roar Notifications est fait pour vous.</p>
<h2>Checkboxes and Lists</h2>
<p><a href="http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/"><img src="http://www.lyxia.org/blog/wp-content/uploads/2008/05/checkboxes.jpg" alt="Checkboxes and Lists" /></a><br />
J'avais déja présenté un script équivalent lors de mon article intitulé <a href="http://www.lyxia.org/blog/design/8-scripts-javascript-pour-sublimer-votre-site-257">8 scripts Javascript pour sublimer votre site</a>. Bien qu'il ne s'agisse ici que d'esthétisme pur et non d'amélioration des fonctionnalités existantes,</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lyxia.org/blog/developpement/javascriptajax/10-scripts-mootools-pour-linterface-utilisateur-275/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>SmoothGallery 2.0: Gallerie d&#8217;images en Javascript</title>
		<link>http://www.lyxia.org/blog/developpement/javascriptajax/smoothgallery-20-gallerie-dimages-en-javascript-252</link>
		<comments>http://www.lyxia.org/blog/developpement/javascriptajax/smoothgallery-20-gallerie-dimages-en-javascript-252#comments</comments>
		<pubDate>Sat, 29 Mar 2008 10:54:21 +0000</pubDate>
		<dc:creator>jbj</dc:creator>
				<category><![CDATA[Javascript/Ajax]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[SmoothGallery]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.lyxia.org/blog/developpement/javascriptajax/smoothgallery-20-gallerie-dimages-en-javascript-252</guid>
		<description><![CDATA[Il existe quantité de scripts Javascript dévoués à la création de galerie d'images, mais celui-ci à particulièrement retenu mon attention. Basé sur l'excellent Mootools, SmoothGallery permet de créer une galerie d'images très moderne. Bonne nouvelle, il existe également un plugin Wordpress basé sur ce script et offrant la possibilité de mettre en lumière vos meilleurs articles.]]></description>
			<content:encoded><![CDATA[<p>Il existe quantité de scripts Javascript dévoués à la création de galerie d'images, mais celui-ci à particulièrement retenu mon attention. Basé sur l'excellent Mootools, SmoothGallery permet de créer une galerie d'images très moderne. Bonne nouvelle, il existe également un plugin Wordpress basé sur ce script et offrant la possibilité de mettre en lumière vos meilleurs articles.</p>
<h2>SmoothGallery</h2>
<p>Qu'on se le dise, <em>SmoothGallery</em> est vraiment représentatif des possibilités offertes par les frameworks Javascript tel que  Mootools ou encore JQuery. Il y a quelques années, ce genre de galerie n'aurait été réalisable qu'avec du Flash, balourd et mal optimisé pour le référencement. Désormais, grâce à Mootools, nous allons pouvoir créer une galerie d'images aux effets de toute beauté.<br />
Comme je suis sûr que vous êtes impatient de voir à quoi cela ressemble, je vous invite donc à aller voir de ce pas <a href="http://smoothgallery.jondesign.net/showcase/gallery/">la page de démonstration</a> sur le site de Jonathan Schemoul, créateur de <em>SmoothGallery</em>.</p>
<p style="text-align:center;">
<img src="http://www.lyxia.org/blog/wp-content/uploads/2008/03/smoothgallery-mootools.png" alt="smoothgallery-mootools.png" />
</p>
<p>Convaincu ? Dans ce cas, il ne reste plus qu'à mettre le script en place sur votre site, ce qui est d'une simplicité enfantine. Après avoir <a href="http://smoothgallery.jondesign.net/download/">téléchargé</a> et décompressé l'archive,  éditez le fichier dans lequel vous souhaitez voir apparaitre la gallerie et incluez les deux fichiers Javascript ainsi que la feuille de style css :</p>
<pre>&lt;script src="scripts/mootools.v1.11.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="scripts/jd.gallery.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;link rel="stylesheet" href="css/jd.gallery.css" type="text/css" media="screen" /&gt;</pre>
<p>Désormais, nous allons inclure le xhtml de la galerie. Le code ci-dessous listera deux images différentes. Si vous souhaitez en mettre davantage, rajoutez un div <em>imageElement</em> pour chaque nouvelle image.</p>
<pre>
&lt;div id="myGallery"&gt;
    &lt;div class="imageElement"&gt;
        &lt;h3&gt;Titre du premier item&lt;/h3&gt;
        &lt;p&gt;Description du premier item&lt;/p&gt;
        &lt;a href="mypage1.html" title="open image" class="open"&gt;&lt;/a&gt;
        &lt;img src="images/brugges2006/1.jpg" class="full" /&gt;
        &lt;img src="images/brugges2006/1-mini.jpg" class="thumbnail" /&gt;
    &lt;/div&gt;
    &lt;div class="imageElement"&gt;
        &lt;h3&gt;Titre du second item&lt;/h3&gt;
        &lt;p&gt;Description du second item&lt;/p&gt;
        &lt;a href="mypage2.html" title="open image" class="open"&gt;&lt;/a&gt;
        &lt;img src="images/brugges2006/2.jpg" class="full" /&gt;
        &lt;img src="images/brugges2006/2-mini.jpg" class="thumbnail" /&gt;
    &lt;/div&gt;
&lt;/div&gt;</pre>
<p>A ce stade, la galerie est pratiquement opérationnelle. Il ne reste plus qu'à faire démarrer le script. Placez ce code dans la partie <em>head</em> de votre page html, ou encore mieux, dans un fichier <em>.js</em> que vous lierez à la page :</p>
<pre>
&lt;script type="text/javascript"&gt;
function startGallery() {
    var myGallery = new gallery($('myGallery'), {
        timed: false
    });
}
window.addEvent('domready', startGallery);
&lt;/script&gt;</pre>
<p>Comme vous l'aurez sans doute remarqué, nous utilisons ici du <a href="http://www.lyxia.org/blog/developpement/javascriptajax/bonnes-pratiques-javascript-le-code-non-intrusif-139">Javascript non intrusif</a>. Ca fait du bien un beau code bien propre <img src='http://www.lyxia.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Et voilà, notre galerie est prête et vous pouvez admirer le résultat. Toutefois, notons l'existence de paramètres permettant de régler la galerie assez finement.<br />
Dans le code ci-dessous, repérez la ligne 4. Vous incluerez vos paramètres supplémentaires à cet endroit.</p>
<ul>
<li><strong>timed: true | false</strong> Réglé à <em>true</em>, les images défilerons toutes seules. Sur <em>false</em>, uniquement si l'utilisateur clique sur les flèches.</li>
<li><strong>showArrows: true | false</strong> Montre (<em>true</em>) ou non (<em>false</em>) les flèche permettant de passer à l'image suivante/précédente.</li>
<li><strong>showCarousel: true | false</strong> Permet de voir des vignettes des images si il est réglé à <em>true</em>.</li>
</ul>
<h2>Plugin Wordpress SmoothGallery : Featured Content Gallery</h2>
<p>Avec la mode des <a href="http://www.lyxia.org/blog/ressources/wordpress-ressources/theme-wordpress-magazine-openbook-deviens-administrable-230">thèmes Magazine</a>, il est bon ton de pouvoir présenter à ses lecteurs une sélection mise en évidence de ses meilleurs articles. Si vous avez aimé <em>SmoothGallery</em>, alors le plugin <em>Featured Content Gallery</em> est fait pour vous.<br />
Le principe est simple : Après avoir installé le plugin, un nouvel onglet apparaitra dans le menu Options de votre interface d'administration Wordpress. Il vous sera proposé de renseigner les titres, descriptions, et images pour 5 – Pas un de plus, pas un de moins – articles à mettre en évidence.<br />
Même si on peut regretter le manque de souplesse du procédé (Il aurait été intéressant, selon moi d'utiliser une catégorie "Featured" dédiée aux articles à mettre en évidence) l'avantage est que le tout est particulièrement simple et sera accessible à tous.</p>
<p><a href="http://www.wpelements.com/downloads/plugins/content-gallery.zip">Téléchargez l'archive</a>, décompressez-là et uploadez le répertoire <em>content-gallery</em> dans le répertoire <em>wp-content/plugins</em> de votre install Wordpress.<br />
Rendez-vous dans votre panneau d'administration et activez le plugin. Il ne vous reste plus qu'à placer la ligne suivante sur l'un des fichiers de votre thème pour générer la galerie :</p>
<pre>&lt;?php include (ABSPATH . '/wp-content/plugins/content-gallery/gallery.php'); ?></pre>
<p>Si vous souhaitez ne montrer la galerie que sur une page spécifique de votre blog (Par exemple, la homepage) n'hésitez pas à lire <a href="http://www.lyxia.org/blog/ressources/wordpress-ressources/6-astuces-pour-creer-votre-theme-wordpress-magazine-218">cet article</a> traitant des fonctions conditionnelles de Wordpress.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lyxia.org/blog/developpement/javascriptajax/smoothgallery-20-gallerie-dimages-en-javascript-252/feed</wfw:commentRss>
		<slash:comments>37</slash:comments>
		</item>
		<item>
		<title>MoreCSS, demandez plus à vos feuilles de style</title>
		<link>http://www.lyxia.org/blog/developpement/javascriptajax/morecss-demandez-plus-a-vos-feuilles-de-style-247</link>
		<comments>http://www.lyxia.org/blog/developpement/javascriptajax/morecss-demandez-plus-a-vos-feuilles-de-style-247#comments</comments>
		<pubDate>Thu, 20 Mar 2008 18:06:28 +0000</pubDate>
		<dc:creator>jbj</dc:creator>
				<category><![CDATA[Javascript/Ajax]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.lyxia.org/blog/developpement/javascriptajax/morecss-demandez-plus-a-vos-feuilles-de-style-247</guid>
		<description><![CDATA[Les feuilles de style CSS offrent de nombreuses possibilités pour mettre en page votre code HTML. Mais quel développeur ne s'est jamais dit "Dommage qu'un tel attribut n'existe pas en CSS!". C'est ce que propose MoreCSS, une librairie Javascript vous permettant de disposer de propriétés supplémentaires tels que des pop-ups, des valeurs par défaut ou encore des infobulles...]]></description>
			<content:encoded><![CDATA[<p>Les feuilles de style CSS offrent de nombreuses possibilités pour mettre en page votre code HTML. Mais quel développeur ne s'est jamais dit "Dommage qu'un tel attribut n'existe pas en CSS!". C'est ce que propose MoreCSS, une librairie Javascript vous permettant de disposer de propriétés supplémentaires tels que des pop-ups, des valeurs par défaut ou encore  des infobulles...</p>
<p><em>MoreCSS</em> est disponible au téléchargement <a href="http://yellowgreen.de/morecss">sur cette page</a>. Une fois rapatrié sur votre machine ou votre serveur, incluez le fichier <em>MoreCSS.js</em> dans votre document HTML. A noter, il est nécessaire que votre feuille de style CSS soit inclue <strong>avant</strong> le fichier Javascript:</p>
<pre>&lt;link rel="MoreCSS" href="style.css" /&gt;
&lt;script type="text/javascript" src="MoreCSS.js"&gt;&lt;/script&gt;</pre>
<p>Dès lors vous pourrez bénéficier des nombreuses "propriétés" supplémentaires proposées par MoreCSS. Notons en vrac: tooltip, target, execute, opacity...La liste complète des propriétés disponibles ainsi que leur usage se trouve sur <a href="http://yellowgreen.de/morecss">le site du projet</a>.</p>
<p>D'une manière générale, <em>MoreCSS</em> s'utilise entièrement dans la feuille de style. On est donc ici en plein <a href="http://www.lyxia.org/blog/developpement/javascriptajax/bonnes-pratiques-javascript-le-code-non-intrusif-139">Javascript non-intrusif</a>, ce qui est une plutôt une bonne nouvelle.<br />
Petit exemple avec la propriété <em>target</em>:</p>
<pre>a:active {
    target: popup;
    target-width: 800px;
    target-height: 600px;
}</pre>
<p>Ici, nous avons défini l'ouverture de tous les liens actifs dans une pop-up de 800*600. Il s'agit bien entendu d'un exemple, implémenter ceci sur votre site serait une très mauvaise idée <img src='http://www.lyxia.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>A noter également, il est conseillé, pour des questions de performance, d'utiliser des sélecteurs uniques (IDs) plutôt que des classes.</p>
<p>Je note toutefois un problème de taille à l'utilisation de cette lib : Vous vous doutez bien qu'une propriété définie par <em>MoreCSS</em>, comme <em>target</em>, n'est pas valide w3c et ne passe donc pas au validateur. Un bon compromis serait de créer une feuille de style à part et d'y mettre uniquement les propriétés <em>MoreCSS</em>. A vous de voir!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lyxia.org/blog/developpement/javascriptajax/morecss-demandez-plus-a-vos-feuilles-de-style-247/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Raccourcis claviers en Javascript</title>
		<link>http://www.lyxia.org/blog/developpement/javascriptajax/raccourcis-claviers-en-javascript-214</link>
		<comments>http://www.lyxia.org/blog/developpement/javascriptajax/raccourcis-claviers-en-javascript-214#comments</comments>
		<pubDate>Mon, 25 Feb 2008 13:12:04 +0000</pubDate>
		<dc:creator>jbj</dc:creator>
				<category><![CDATA[Javascript/Ajax]]></category>
		<category><![CDATA[clavier]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[raccourcis]]></category>

		<guid isPermaLink="false">http://www.lyxia.org/blog/developpement/javascriptajax/raccourcis-claviers-en-javascript-214</guid>
		<description><![CDATA[Toute application digne de ce nom possède sa panoplie de raccourcis clavier: Ces combinaisons de touches qui pemettent d'effectuer une action sans passer par la barre de menu. Etant donné le coté pratique des raccourcis claviers, pourquoi ne pas les implémenter aussi dans votre appli web? Javascript permet de créer des raccourcis claviers très simplement, avec ou sans JQuery.]]></description>
			<content:encoded><![CDATA[<p>Toute application digne de ce nom possède sa panoplie de raccourcis clavier: Ces combinaisons de touches qui pemettent d'effectuer une action sans passer par la barre de menu. Etant donné le coté pratique des raccourcis claviers, pourquoi ne pas les implémenter aussi dans votre appli web? Javascript permet de créer des raccourcis claviers très simplement, avec ou sans JQuery.</p>
<h2>Un peu de théorie</h2>
<p>L'emploi de raccourcis clavier en javascript – et sur le web en général– reste relativement marginal. Selon moi, c'est bien dommage car les raccourcis clavier sur une appli web peuvent être extrêmement pratiques à conditions d'être à la base bien pensés par les développeurs.<br />
Le facteur le plus important à prendre en compte est bien entendu de ne pas créer de raccourcis claviers qui rentreraient en conflit avec ceux du navigateur de l'internaute. Par exemple, sous Firefox, le raccourci Ctrl+U permet d'afficher le code source de la page web. Que se passera t'il si vous définissez la même combinaison de touches comme raccourci dans votre application?  L'une des deux actions sera effectuée, mais pas les deux, et probablement pas celle qu'attendait le visiteur... D'une manière générale – Et bien que les exemples ci-dessous ne se tiennent pas à cette règle – je déconseille d'utiliser la touche Ctrl pour créer des raccourcis claviers en Javascript: Cette touche est utilisée par pratiquement tous les browsers pour leur raccourcis claviers internes. Préférez-y une touche comme Tab, par exemple.</p>
<p>Parmi les gestionnaires d'événements proposés par Javascript, nous nous intéresseront ici à <em>onkeyup</em>, qui permet de déclencher une fonction dès que l'utilisateur presse une touche. Il suffira alors de comparer la valeur retournée au code clavier correspondant à la touche qui nous intéresse.</p>
<p>Les codes claviers quand à eux, sont des codes numériques à deux ou trois chiffres. A chaque touche du clavier correspond un code clavier, par exemple la touche Ctrl qui à pour code clavier 17.<br />
Pour une liste complète des correspondances touches/codes clavier, rendez-vous à la fin de cet article.</p>
<h2>Exemples</h2>
<p>Dans ces exemples, nous allons simplement vérifier les touches pressées par l'utilisateur. Si il s'agit de la combinaison Ctrl+S, alors une fonction sera déclenchée.<br />
Le premier exemple est en Javascript "traditionnel" tandis que le second utilise la bibliothèque JQuery.</p>
<pre>
var isCtrl = false;
document.onkeyup=function(e) {
    if(e.which == 17) isCtrl=false;
}document.onkeydown=function(e){
    if(e.which == 17) isCtrl=true;
    if(e.which == 83 &amp;&amp; isCtrl == true) {
         // Votre fonction à déclencher au Ctrl+S
         return false;
    }
}</pre>
<p>Exemple avec JQuery:</p>
<pre>
var isCtrl = false;$(document).keyup(function (e) {
if(e.which == 17) isCtrl=false;
}).keydown(function (e) {
    if(e.which == 17) isCtrl=true;
    if(e.which == 83 &amp;&amp; isCtrl == true) {
        // Votre fonction à déclencher au Ctrl+S
 	return false;
 }
});</pre>
<p>Dans ces deux exemples, nous vérifions tout d'abord que la touche <em>Ctrl</em> est bien pressée par l'utilisateur. Si c'est le cas, alors nous changeons la valeur de la variable <em>isCtrl</em> à <em>true</em>. Si les touches sont relâchées, <em>isCtrl</em> reprendra sa valeur initiale, c'est à dire <em>false</em>.<br />
Ensuite, il convient de vérifier que la seconde touche pressée par l'utilisateur corresponds bien à la touche S. De plus, comme il doit s'agir d'une combinaison de touches (Dans cet exemple, <em>Ctrl+S</em>) il convient de vérifier que la variable <em>isCtrl</em> à bien <em>true</em> comme valeur.<br />
Si ces deux conditions sont remplies, alors nous pouvons déclencher la fonction désirée pour la combinaison de touche <em>Ctrl+S</em>.</p>
<h2>Equivalences touches/codes clavier</h2>
<table border="0" width="600">
<tr>
<th width="200">Touche</th>
<th width="400">Code clavier</th>
</tr>
<tr>
<td>Backspace</td>
<td>8</td>
</tr>
<tr>
<td>Tab</td>
<td>9</td>
</tr>
<tr>
<td>Entrée</td>
<td>13</td>
</tr>
<tr>
<td>Shift</td>
<td>16</td>
</tr>
<tr>
<td>Ctrl</td>
<td>17</td>
</tr>
<tr>
<td>Alt</td>
<td>18</td>
</tr>
<tr>
<td>Pause</td>
<td>19</td>
</tr>
<tr>
<td>Capslock</td>
<td>20</td>
</tr>
<tr>
<td>Esc</td>
<td>27</td>
</tr>
<tr>
<td>Page up</td>
<td>33</td>
</tr>
<tr>
<td>Page down</td>
<td>34</td>
</tr>
<tr>
<td>End</td>
<td>35</td>
</tr>
<tr>
<td>Home</td>
<td>36</td>
</tr>
<tr>
<td>Flèche gauche</td>
<td>37</td>
</tr>
<tr>
<td>Flèche haut</td>
<td>38</td>
</tr>
<tr>
<td>Flèche droit</td>
<td>39</td>
</tr>
<tr>
<td>Flèche bas</td>
<td>40</td>
</tr>
<tr>
<td>Insert</td>
<td>45</td>
</tr>
<tr>
<td>Delete</td>
<td>46</td>
</tr>
<tr>
<td>0</td>
<td>48</td>
</tr>
<tr>
<td>1</td>
<td>49</td>
</tr>
<tr>
<td>2</td>
<td>50</td>
</tr>
<tr>
<td>3</td>
<td>51</td>
</tr>
<tr>
<td>4</td>
<td>52</td>
</tr>
<tr>
<td>5</td>
<td>53</td>
</tr>
<tr>
<td>6</td>
<td>54</td>
</tr>
<tr>
<td>7</td>
<td>55</td>
</tr>
<tr>
<td>8</td>
<td>56</td>
</tr>
<tr>
<td>9</td>
<td>57</td>
</tr>
<tr>
<td>a</td>
<td>65</td>
</tr>
<tr>
<td>b</td>
<td>66</td>
</tr>
<tr>
<td>c</td>
<td>67</td>
</tr>
<tr>
<td>d</td>
<td>68</td>
</tr>
<tr>
<td>e</td>
<td>69</td>
</tr>
<tr>
<td>f</td>
<td>70</td>
</tr>
<tr>
<td>g</td>
<td>71</td>
</tr>
<tr>
<td>h</td>
<td>72</td>
</tr>
<tr>
<td>i</td>
<td>73</td>
</tr>
<tr>
<td>j</td>
<td>74</td>
</tr>
<tr>
<td>k</td>
<td>75</td>
</tr>
<tr>
<td>l</td>
<td>76</td>
</tr>
<tr>
<td>m</td>
<td>77</td>
</tr>
<tr>
<td>n</td>
<td>78</td>
</tr>
<tr>
<td>o</td>
<td>79</td>
</tr>
<tr>
<td>p</td>
<td>80</td>
</tr>
<tr>
<td>q</td>
<td>81</td>
</tr>
<tr>
<td>r</td>
<td>82</td>
</tr>
<tr>
<td>s</td>
<td>83</td>
</tr>
<tr>
<td>t</td>
<td>84</td>
</tr>
<tr>
<td>u</td>
<td>85</td>
</tr>
<tr>
<td>v</td>
<td>86</td>
</tr>
<tr>
<td>w</td>
<td>87</td>
</tr>
<tr>
<td>x</td>
<td>88</td>
</tr>
<tr>
<td>y</td>
<td>89</td>
</tr>
<tr>
<td>z</td>
<td>90</td>
</tr>
<tr>
<td>0 (pavé numérique)</td>
<td>96</td>
</tr>
<tr>
<td>1 (pavé numérique)</td>
<td>97</td>
</tr>
<tr>
<td>2 (pavé numérique)</td>
<td>98</td>
</tr>
<tr>
<td>3 (pavé numérique)</td>
<td>99</td>
</tr>
<tr>
<td>4 (pavé numérique)</td>
<td>100</td>
</tr>
<tr>
<td>5 (pavé numérique)</td>
<td>101</td>
</tr>
<tr>
<td>6 (pavé numérique)</td>
<td>102</td>
</tr>
<tr>
<td>7 (pavé numérique)</td>
<td>103</td>
</tr>
<tr>
<td>8 (pavé numérique)</td>
<td>104</td>
</tr>
<tr>
<td>9 (pavé numérique)</td>
<td>105</td>
</tr>
<tr>
<td>Signe *</td>
<td>106</td>
</tr>
<tr>
<td>Signe +</td>
<td>107</td>
</tr>
<tr>
<td>Signe -</td>
<td>109</td>
</tr>
<tr>
<td>Point décimal</td>
<td>110</td>
</tr>
<tr>
<td>Signe /</td>
<td>111</td>
</tr>
<tr>
<td>F1</td>
<td>112</td>
</tr>
<tr>
<td>F2</td>
<td>113</td>
</tr>
<tr>
<td>F3</td>
<td>114</td>
</tr>
<tr>
<td>F4</td>
<td>115</td>
</tr>
<tr>
<td>F5</td>
<td>116</td>
</tr>
<tr>
<td>F6</td>
<td>117</td>
</tr>
<tr>
<td>F7</td>
<td>118</td>
</tr>
<tr>
<td>F8</td>
<td>119</td>
</tr>
<tr>
<td>F9</td>
<td>120</td>
</tr>
<tr>
<td>F10</td>
<td>121</td>
</tr>
<tr>
<td>F11</td>
<td>122</td>
</tr>
<tr>
<td>F12</td>
<td>123</td>
</tr>
<tr>
<td>Signe =</td>
<td>187</td>
</tr>
<tr>
<td>Virgule</td>
<td>188</td>
</tr>
<tr>
<td>Slash /</td>
<td>191</td>
</tr>
<tr>
<td>Backslash \</td>
<td>220</td>
</tr>
</table>
<p>A partir de là, on pourrait facilement implémenter une fonction qui nous permettrais de savoir sur quelle touche le visiteur à appuyé en utilisant un tableau Javascript. Pour ma part, je m'arrêterais ici. Bon coding <img src='http://www.lyxia.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.lyxia.org/blog/developpement/javascriptajax/raccourcis-claviers-en-javascript-214/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Des dégradés sans images avec Javascript</title>
		<link>http://www.lyxia.org/blog/developpement/javascriptajax/des-degrades-sans-images-avec-javascript-191</link>
		<comments>http://www.lyxia.org/blog/developpement/javascriptajax/des-degrades-sans-images-avec-javascript-191#comments</comments>
		<pubDate>Mon, 11 Feb 2008 21:49:16 +0000</pubDate>
		<dc:creator>jbj</dc:creator>
				<category><![CDATA[Javascript/Ajax]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[dégradé]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.lyxia.org/blog/developpement/javascriptajax/des-degrades-sans-images-avec-javascript-191</guid>
		<description><![CDATA[Depuis la mode du web dit 2.0, les dégradés sont parmis les effets visuels les plus répandus sur la toile. Créer ce genre d'effet n'est pas difficile, mais le procédé est assez lourd: Créer une image dans un éditeur graphique, l'uploader sur le serveur, et enfin écrire une classe css pour mettre le tout en place.
Il existe une alternative, en Javascript 100% non-intrusif, qui permettra à n'importe qui de créer de beaux dégradés sans utiliser une seule image.]]></description>
			<content:encoded><![CDATA[<p>Depuis la mode du web <em>dit</em> 2.0, les dégradés sont parmis les effets visuels les plus répandus sur la toile. Créer ce genre d'effet n'est pas difficile, mais le procédé est assez lourd: Créer une image dans un éditeur graphique, l'uploader sur le serveur, et enfin écrire une classe css pour mettre le tout en place.<br />
Il existe une alternative, en Javascript 100% non-intrusif, qui permettra à n'importe qui de créer de beaux dégradés sans utiliser une seule image.</p>
<p>Bien entendu, il faut télécharger le script, ainsi qu'éventuellement la feuille de style utilisée pour mettre en forme les exemples. Notez toutefois que cette feuille de style n'est absolument pas necessaire pour créer vos dégradés en javascript. Vous trouverez les deux sur <a href="http://slayeroffice.com/code/gradient/">cette page</a>.<br />
Il vous reste désormais à inclure le fichier <em>.js</em> dans la partie <em>head</em> de votre document html:</p>
<pre>&lt;script type="text/javascript" src="gradient.js"&gt;&lt;/script&gt;</pre>
<p>Supposons maintenant que vous souhaitez appliquer un dégradé du blanc au noir sur un élément <em>h1</em>:</p>
<pre>&lt;h1 class="gradient ffffff 000000 horizontal"&gt;Un beau dégradé&lt;/h1&gt;</pre>
<p>Comme vous l'avez remarqué, le contrôle du dégradé se fait au moyen de classe css:</p>
<ul>
<li><em>gradient</em> indique au script que vous souhaitez mettre en place un dégradé.</li>
<li><em>ffffff</em> est la couleur de départ, soit ici le blanc.</li>
<li><em>000000</em> est la couleur d'arrivée, ici le noir.</li>
<li><em>horizontal</em> est comme son nom l'indique, le sens du dégradé.</li>
</ul>
<p>Bien entendu, rien ne vous empêche de rajouter vos propres classes css afin de donner un style supplémentaire à l'élément. Ainsi le code suivant sera parfaitement fonctionnel:</p>
<pre>&lt;h1 class="gradient ffffff 000000 horizontal title"&gt;Un beau dégradé&lt;/h1&gt;</pre>
<p>Notez toutefois que les 4 premières classes doivent absolument être les 4 paramètres requis pour l'application du dégradé. Vous pouvez rajouter autant de classes que vous le souhaitez, mais celles-ci doivent <strong>obligatoirement</strong> se trouver <strong>après</strong> les 4 classes relatives au dégradé.</p>
<p>Un petit mot sur le fonctionnement: Si le visiteur utilise IE, gradient.js utilisera les propriétés css proprio de Microsoft afin de donner l'effet désiré. Par contre, si l'internaute est sous un autre navigateur, le script génèrera une série de <em>div</em> qui seront positionnés en tant qu'enfant de l'élément. Ces div <em>en-veux-tu-en-voilà</em> sont heureusement totalement invisibles dans la source du document html.</p>
<p>Bien sur, les possibilités offertes par <em>gradient.js</em> ne sont pas aussi nombreuses qu'elles le sont avec une image, et on peut rester dubitatif quand à l'utilisation de Javascript là ou on en à pas réellement besoin.<br />
Toutefois, le gain de temps et la relative propreté du code en font une bonne alternative au manque de temps ou de connaissance en édition graphique.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lyxia.org/blog/developpement/javascriptajax/des-degrades-sans-images-avec-javascript-191/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Starbox, le star-rater simple d&#8217;emploi</title>
		<link>http://www.lyxia.org/blog/developpement/javascriptajax/starbox-le-star-rater-simple-demploi-163</link>
		<comments>http://www.lyxia.org/blog/developpement/javascriptajax/starbox-le-star-rater-simple-demploi-163#comments</comments>
		<pubDate>Sat, 19 Jan 2008 12:04:09 +0000</pubDate>
		<dc:creator>jbj</dc:creator>
				<category><![CDATA[Javascript/Ajax]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[starbox]]></category>

		<guid isPermaLink="false">http://www.lyxia.org/blog/developpement/starbox-le-star-rater-simple-demploi-163</guid>
		<description><![CDATA[Les <em>star-raters</em>, ce système permettant au visiteurs d'un site web de voter en cliquant sur des petites étoiles indiquant le degré d'appréciation, ont le vent en poupe. Seulement voilà: mettre en place un tel système n'est pas toujours à la portée du néophyte. Grâce à Starbox, il est possible de mettre en place ce système rapidement et efficacement.]]></description>
			<content:encoded><![CDATA[<p>Les <em>star-raters</em>, ce système permettant au visiteurs d'un site web de voter en cliquant sur des petites étoiles indiquant le degré d'appréciation, ont le vent en poupe. Seulement voilà: mettre en place un tel système n'est pas toujours à la portée du néophyte. Grâce à <a href="http://www.nickstakenburg.com/projects/starbox/">Starbox</a>, il est possible de mettre en place ce système rapidement et efficacement.</p>
<p>Construit autour de la désormais célèbre librairie JS <em>Prototype</em>, <a href="http://www.nickstakenburg.com/projects/starbox/">Starbox</a> se présente sous la forme d'un fichier Javascript  et d'une css à linker à votre document html. L'archive téléchargeable contient également quelques images qui dans la plupart des cas, correspondront à l'usage que l'on souhaite en faire.<br />
Outre sa grande simplicité, j'ai fortement apprécié la facilité avec laquelle Starbox permet d'envoyer une requete Ajax: il suffit d'indique, dans le paramètre <em>onRate</em>, la fonction js à appeller pour lancer la requête.</p>
<h2>Utilisation de base</h2>
<p>La première chose à faire et de lier le fichier starbox.js et starbox.css ainsi que les librairies prototype et scriptaculous (si vous souhaiter utiliser les effets) à votre document html, comme montré ci-dessous:</p>
<pre>&lt;script type='text/javascript' src='js/prototype.js'&gt;&lt;/script&gt;
&lt;script type='text/javascript' src='js/scriptaculous.js?load=effects'&gt;&lt;/script&gt;
&lt;script type='text/javascript' src='js/starbox.js'&gt;&lt;/script&gt;
&lt;link rel="stylesheet" type="text/css" href="css/starbox.css" /&gt;</pre>
<p>Ensuite, il vous faudra éditer le fichier starbox.js et renseigner le chemin des images. Recherchez cette ligne</p>
<pre>overlayImages: '../images/starbox/',</pre>
<p>et modifier le chemin à votre convenance.<br />
Pour afficher une Starbox, insérez simplement le code suivant dans votre fichier html:</p>
<pre>&lt;div id='id_element'&gt;&lt;/div&gt;
&lt;script type='text/javascript'&gt;
     new Starbox('id_element', 1);
&lt;/script&gt;</pre>
<p>Le premier paramètre est l'id de l'élément à transformer en Starbox, le second est le nombre auquel commencera la notation.</p>
<p>Un grand nombre d'options sont disponibles et permettent de paramètrer finement le Starbox. Voyez pour celà <a href="http://www.nickstakenburg.com/projects/starbox/">le site du projet</a>, qui explique également comment utiliser starbox.css pour styler votre Starbox à votre guise.</p>
<p>Un bien beau projet, qui rendra de fiers services au développeurs soucier de réutiliser du code open-source plutot que de toujours réécrire les mêmes fonctions. Merci, <a href="www.nickstakenburg.com">Nick Stakenburg</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lyxia.org/blog/developpement/javascriptajax/starbox-le-star-rater-simple-demploi-163/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
