<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="https://chierchia.fr/wp-content/plugins/pretty-rss-feeds/xslt/pretty-feed.xsl" type="text/xsl" media="screen" ?><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>jquery - Ange Chierchia</title>
	<atom:link href="https://chierchia.fr/tag/jquery/feed/" rel="self" type="application/rss+xml" />
	<link>https://chierchia.fr/tag/jquery/</link>
	<description>Développeur Web full-stack</description>
	<lastBuildDate>Sun, 08 Feb 2026 15:46:33 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://chierchia.fr/wp-content/uploads/cropped-16350293-SSDKVqo3-32x32.jpg</url>
	<title>jquery - Ange Chierchia</title>
	<link>https://chierchia.fr/tag/jquery/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
					<title>Une navigation 3D en CSS et jQuery</title>
					<link>https://chierchia.fr/2016/02/une-navigation-3d-en-css-et-jquery/</link>
					<comments>https://chierchia.fr/2016/02/une-navigation-3d-en-css-et-jquery/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Ange Chierchia</span>]]></dc:creator>
		<pubDate>Mon, 22 Feb 2016 20:06:38 +0000</pubDate>
				<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[front-end]]></category>
		<category><![CDATA[jquery]]></category>
		<guid isPermaLink="false">https://nighcrawl.com/blog/2016/02/une-navigation-3d-en-css-et-jquery</guid>

					<description><![CDATA[Les éléments &#160;de navigation sont essentiels lorsqu’on conçoit un site Internet, que ce soit pour la navigation entre les différentes pages d’un site, ou simplement se déplacer vers différentes sections d’une même page. Claudia Romano propose un concept de navigation responsive&#160;simple mais avec beaucoup de caractère. Idéal pour la navigation d’un site type portfolio.]]></description>
										<content:encoded><![CDATA[<div class='e-content'>
<div class="wp-block-indieblocks-bookmark"><div class="u-bookmark-of h-cite"><p><i>Bookmarked <a class="u-url p-name" href="https://codyhouse.co/gem/3d-bold-navigation/">3D Bold Navigation in CSS and jQuery | CodyHouse</a>.</i></p></div><div class="e-content">
<p>Les éléments &nbsp;de navigation sont essentiels lorsqu’on conçoit un site Internet, que ce soit pour la navigation entre les différentes pages d’un site, ou simplement se déplacer vers différentes sections d’une même page. <a href="https://codyhouse.co/gem/3d-bold-navigation/">Claudia Romano propose</a> un concept de navigation responsive&nbsp;simple mais avec beaucoup de caractère. Idéal pour la navigation d’un site type portfolio.</p>
</div></div>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://chierchia.fr/2016/02/une-navigation-3d-en-css-et-jquery/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
					<title>Notifications à la Growl avec jQuery</title>
					<link>https://chierchia.fr/2011/08/notifications-growl-jquery/</link>
					<comments>https://chierchia.fr/2011/08/notifications-growl-jquery/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Ange Chierchia</span>]]></dc:creator>
		<pubDate>Fri, 26 Aug 2011 19:04:51 +0000</pubDate>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[front-end]]></category>
		<category><![CDATA[growl]]></category>
		<category><![CDATA[jquery]]></category>
		<guid isPermaLink="false">https://nighcrawl.com/blog/2011/08/notifications-growl-jquery</guid>

					<description><![CDATA[Aujourd’hui, on va voir comment mettre en place facilement des notifications utilisateur un peu à la façon de Growl, très connu des Mac users. Du côté du markup HTML, notre notification se résumera à pas grand chose : un simple bloc fera l’affaire pour contenir notre message. On peu aussi rajouter une icône/image afin de [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class='e-content'>Aujourd’hui, on va voir comment mettre en place facilement des notifications utilisateur un peu à la façon de Growl, très connu des Mac users.<span id="more-1373"></span></p>
<p>Du côté du markup HTML, notre notification se résumera à pas grand chose : un simple bloc fera l’affaire pour contenir notre message. On peu aussi rajouter une icône/image afin de donner une information supplémentaire sur la nature de la notification. Ça n’a vraiment aucune importance, pourvu que l’information affichée soit courte. Voici mon marquage :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>&lt;div class="notify"&gt;
  &lt;span class="icon"&gt;&lt;/span&gt;
  &lt;p&gt;Je suis une notification. Je vais dispara&amp;icirc;tre! Phasellus elit nunc, tristique sed sodales sit amet, tincidunt sed.&lt;/p&gt;
&lt;/div&gt;
</code></pre>
</div>
</div>
<p>Pour animer notre notification on aurait pu choisir CSS3 comme l’a fait <a title="Pop From Top Notification" href="http://css-tricks.com/13815-pop-from-top-notification/" target="_blank" rel="noopener">Chris Coyer</a>, mais je préfère utiliser jQuery pour ne pas pénaliser les navigateurs qui ne prendraient pas en compte les animations CSS, et pour m’éviter une belle tartine de définition de style :D. Voilà le Javascript :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>jQuery(document).ready(function($) {
  $(".notify").css("display","none").delay(1000).fadeIn(400).delay(5500).fadeOut(800);
  $(".notify").hover(function() {
      $(this).stop(true, true).fadeIn();
  }, function() {
      $(this).stop(true, true).delay(1000).fadeIn(400).delay(5500).fadeOut(800);
  });
});
</code></pre>
</div>
</div>
<p>Le script ci-dessus permet de cacher notre notification au chargement de la page, puis après une demi seconde d’attente d’afficher notre notification en fondue pendant cinq secondes et demi pour enfin la faire disparaitre en fondue.</p>
<p>Dans le cas où notre notification est survolé par la souris (fonction <code class="language-plaintext highlighter-rouge">hover()</code>) on stoppe l’animation jusqu’à ce que la souris sorte de la notification. Une fois la souris hors de la notification, on reprend l’animation après avoir attendu une demi seconde.</p>
<p>Passons maintenant à notre feuille de style. Ce qu’il est important de noter, c’est que notre bloc contenant le message informatif doit être en <code class="language-plaintext highlighter-rouge">position : absolute</code> afin de le positionner, non pas par rapport à son conteneur mais plutôt par rapport au document HTML lui même.</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>.notify {
  background: rgba(0, 0, 0, 0.7);
  border: 2px solid #222222;
  -moz-border-radius: 8px;
  -webkit-border-radius: 8px;
  border-radius: 8px;
  -moz-box-shadow: 0 3px 5px rbga(0, 0, 0, 0.4);
  -webkit-box-shadow: 0 3px 5px rbga(0, 0, 0, 0.4);
  box-shadow: 0 3px 5px rbga(0, 0, 0, 0.4);
  color: #ffffff;
  font-size: .8em;
  max-width: 246px;
  padding: 25px;
  position: absolute;
  right: 8px;
  top: 8em;
}
.notify:hover {
  border: 2px solid #eeeeee;
}
.notify p {
  cursor: default;
  margin: 0;
}
.notify .icon {
  background: url("../img/notify_icon.png") no-repeat;
  display: block;
  height: 40px;
  left: -30px;
  position: absolute;
  top: 10px;
  width: 40px;
}
</code></pre>
</div>
</div>
<p>C’est fini ! Vous pouvez <a href="https://nighcrawl.github.io/growl-notification/">voir la démo</a> et <a href="https://github.com/nighcrawl/growl-notification/">télécharger les sources</a> sur GitHub.</p>
<p>&nbsp;</p></div>
]]></content:encoded>
					
					<wfw:commentRss>https://chierchia.fr/2011/08/notifications-growl-jquery/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
					<title>Afficher son flux de photos Instagram via jQuery et JSON</title>
					<link>https://chierchia.fr/2011/02/afficher-instagram-via-jquery-et-json/</link>
					<comments>https://chierchia.fr/2011/02/afficher-instagram-via-jquery-et-json/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Ange Chierchia</span>]]></dc:creator>
		<pubDate>Thu, 24 Feb 2011 23:10:32 +0000</pubDate>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[front-end]]></category>
		<category><![CDATA[instagram]]></category>
		<category><![CDATA[jquery]]></category>
		<guid isPermaLink="false">https://nighcrawl.com/blog/2011/02/afficher-instagram-via-jquery-et-json</guid>

					<description><![CDATA[Vous connaissez cette surement Instagram, cette application iPhone au succès grandissant qui vous permet de partager vos clichés comme un Twitter-like, et en plus de ça leur donner un petit effet digne de Photoshop en a peine quelques minutes? Alors je vais vous donner un petit bout de code qui vous permettra d’afficher vos dernières [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class='e-content'>Vous connaissez cette surement Instagram, cette application iPhone au succès grandissant qui vous permet de partager vos clichés comme un Twitter-like, et en plus de ça leur donner un petit effet digne de Photoshop en a peine quelques minutes? Alors je vais vous donner un petit bout de code qui vous permettra d’afficher vos dernières photos n’importe où!<span id="more-1383"></span>D’abord, il faut savoir qu’une API Instagram est actuellement en beta, mais n’est accessible que sur invitation pour le moment. Si comme moi vous n’avez pas encore accès à cette API, pas de problème, un site qu’il est tout beau nous permet de récupérer pas mal de données relatives à un compte Instagram au format JSON.</p>
<p>Avant toute chose, il nous faut récupérer notre ID utilisateur, et non notre Nom d’utilisateur. Pour cela, un petit tour sur cette page : <a title="Récupérer son flux Instagram" href="http://instagram.heroku.com/help" target="_blank" rel="noopener">Récupérer son ID et son flux de photos Instagram</a>.</p>
<p><img decoding="async" title="recup-flux-photo-instagram" src="https://chierchia.fr/contents/uploads/recup-flux-photo-instagram.jpg?resize=493%2C216" alt="" data-recalc-dims="1" /></p>
<p>Ce service va vous permettre, via l’URL d’une de vos photos, ou par votre compte Twitter, si vous y avez partagé une Instagram récemment, de récupérer un flux au format ATOM, et par la même occasion votre ID utilisateur.</p>
<p><img decoding="async" class="size-full wp-image-1119 alignnone" title="recuperer-instagram-userid" src="https://chierchia.fr/contents/uploads/2011/02/recuperer-instagram-userid.png?fit=422%2C343" alt="" data-recalc-dims="1" /></p>
<p>Une fois que vous avez récupérer votre ID utilisateur, comme le montre l’image ci-dessus, rien de plus simple : votre flux au format JSON se trouve ici : http://instagram.heroku.com/users/<strong>xxxxx</strong>.json. N’oubliez pas de remplacer <strong>xxxxx</strong> par votre ID </p>
<p>On va maintenant pouvoir passer à l’affichage de nos données.</p>
<p>Ce qu’il faut savoir : le fichier JSON récupéré est un bordel sans nom, tellement il contient d’informations. Hormis les 20 dernières photos partager, on peut récupérer les commentaires, les « Likes », l’identifiant, et encore quelques informations pour chaque photos.</p>
<p>Ici, je veux récupérer une miniature de l’image, son titre, et l’identifiant de celle-ci pour l’afficher depuis le site d’Instagram. Voici le bout de code qui me permet d’afficher ces données.</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>$(document).ready(function(){
  $.getJSON('http://instagram.heroku.com/users/45195.json',function(data){

    var instagram = new Array();

    $.each(data.items, function(i,item){
      var str = '&lt;li&gt;&lt;a href="http://intagr.am/p/' + item.code + '"&gt;
      &lt;img src="' + item.image_versions[1].url + '"
      title="' + item.comments[0].text + '" /&gt;
      &lt;div&gt;' + item.comments[0].text + '&lt;/div&gt;
      &lt;/a&gt;&lt;/li&gt;';
      instagram.push(str);
    });

    $('&lt;ul/&gt;', {html: instagram.join('')}).appendTo('#instagram');
  });
});
</code></pre>
</div>
</div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://chierchia.fr/2011/02/afficher-instagram-via-jquery-et-json/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
					<title>Un menu Lava avec jQuery</title>
					<link>https://chierchia.fr/2010/07/menu-lava-lamp-jquery/</link>
					<comments>https://chierchia.fr/2010/07/menu-lava-lamp-jquery/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Ange Chierchia</span>]]></dc:creator>
		<pubDate>Wed, 28 Jul 2010 20:25:32 +0000</pubDate>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[front-end]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[navigation]]></category>
		<guid isPermaLink="false">https://nighcrawl.com/blog/2010/07/menu-lava-lamp-jquery</guid>

					<description><![CDATA[Aujourd’hui je vais partager avec vous un petit effet sympa pour rendre un menu de navigation plus attractif. L’effet que l’on va réaliser ici s’appelle « LavaLamp », ou « lampe à lave » en français… Moins sexy du coup… :S Dans le cadre de projets chez CBC Informatique j’ai eu l’occasion d’implémenter cette technique plutôt sympa qui rend [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class='e-content'>Aujourd’hui je vais partager avec vous un petit effet sympa pour rendre un menu de navigation plus attractif. L’effet que l’on va réaliser ici s’appelle « LavaLamp », ou « lampe à lave » en français… Moins sexy du coup… :S<span id="more-1387"></span></p>
<p>Dans le cadre de projets chez CBC Informatique j’ai eu l’occasion d’implémenter cette technique plutôt sympa qui rend un menu de navigation tout de suite un peu plus attrayant.</p>
<h2 id="pré-requis">Pré requis</h2>
<p>Pour réaliser cet effet, il nous faudra utiliser deux plugins en plus de la librairie jQuery. Le premier, <a title="jQuery LavaLamp" href="http://plugins.jquery.com/project/lavalamp2" target="_blank" rel="noopener">jQuery LavaLamp</a>, nous servira à définir le comportement de notre menu Lava. <a title="jQuery Easing" href="http://plugins.jquery.com/project/Easing" target="_blank" rel="noopener">JQuery Easing</a>, notre deuxième plugin est facultatif, mais on va le télécharger par soucis d’esthétisme, il nous permettra de faire rebondir notre menu.</p>
<h2 id="le-marquage-html">Le marquage HTML</h2>
<p>Ici notre marquage HTML est des plus simple, c’est une bête liste d’éléments non ordonnés. En clair (ou plutôt en code), voilà votre menu :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>&lt;ul&gt;
  &lt;li&gt;&lt;a href="#"&gt;Item 1&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="#"&gt;Item 2&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="#"&gt;Item 3&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="#"&gt;Item 4&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="#"&gt;Item 5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</code></pre>
</div>
</div>
<p>Ok, jusque là pas de soucis, ajoutons maintenant une classe ou une id CSS à notre liste pour agir plus facilement sur le comportement de notre menu. Ici je vais utiliser une id « menu » (wouh, supra original tout ça).</p>
<p>Notre sélecteur (notre id « menu ») définit, on va pouvoir s’attaquer à l’instanciation de notre menu Lava dans jQuery.</p>
<h2 id="le-code-javascript">Le code Javascript</h2>
<p>Comme tout script jQuery, il est préférable d’attendre que la page soit chargée totalement avant d’agir sur le DOM. Notre javascript débutera donc ainsi :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>$(document).ready(function(){
  //notre code jQuery
});
</code></pre>
</div>
</div>
<p>On ajoute maintenant l’appel au plugin jQuery LavaLamp dans notre script en lui passant les paramètres  souhaités pour l’animation:</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>$(function() {
  $(".menu").lavaLamp({
    fx: "backout",
    speed: 800,
    click: function(event, menuItem) {
      return false;
    }
  });
});
</code></pre>
</div>
</div>
<p>Ici, rien de bien compliqué, on définit l’effet comme étant élastique, et la vitesse d’animation à 800 millisecondes.</p>
<p>La base de notre menu est terminée, maintenant tout est une question de CSS pour styliser votre menu Lava.</p>
<h2 id="la-feuille-de-style">La feuille de style</h2>
<p>Pour un très bel effet Lava je vous propose de reprendre la feuille de style de l’exemple présent sur le site du plugin LavaLamp, qui pour moi reflète bien cet esprit « lampe à lave » avec les petites bulles qui se baladent librement.</p>
<p>Aussi, plutôt que d’utiliser des propriétés de CSS3 qui pourraient nous économiser l’utilisation d’images, je reste en CSS2 et vais réaliser les « bulles » avec des images.</p>
<p>Bon allez, envoi du style Marcel!</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>.menu {
  background-image: url(../img/bg.gif);
  background-position: top;
  background-repeat: no-repeat;
  height: 30px;
  list-style-type: none;
  padding: 15px;
  position: relative;
  width: 421px;
}
.menu li {
  float: left;
}
.menu .back {
  -moz-border-radius: 6px;
  -webkit-border-radius: 6px;
  border-radius: 6px;
  background-image: url(../img/lava.gif);
  background-repeat: no-repeat;
  display: block;
  height: 29px;
  position: absolute;
  width: 62px;
  z-index: 1;
}
.menu a {
  color: #fff;
  display: block;
  float: left;
  font-family: sans-serif;
  font-size: 15px;
  font-weight: bold;
  margin: auto 14px;
  padding: 6px 0;
  position: relative;
  text-decoration: none;
  z-index: 8;
}
</code></pre>
</div>
</div>
<p>Là aussi rien de trop compliqué. Le point important de cette CSS est l’utilisation des propriétés position et z-index.</p>
<p>En définissant position à relative dans l’id #menu ne change rien au menu lui même par rapport au contenu possible qui se trouverai autour, par contre lorsqu’on définit à absolute la position de la classe .back pour les éléments li de la liste #menu permet de bien positionner notre bulle sur le texte.</p>
<p>La propriété z-index:8 utilisée dans la classe .back permet de positionner son contenu au dessus des autre éléments. Enfin, en indiquant un z-index à 10 pour les liens présents dans un élément de liste permet de positionner le texte deux plans au dessus de notre bulle.</p>
<p>Notre menu Lava est terminé.</p>
<p><a href="https://nighcrawl.github.io/lava-lamp-menu/">Voir la démo</a> <a href="https://github.com/nighcrawl/lava-lamp-menu/">Télécharger les fichiers</a></p>
<h2 id="conclusion">Conclusion</h2>
<p>Ici on a pu voir comment animer un élément de navigation afin de rendre plus attrayante l’expérience utilisateur lorsqu’on navigue dans un site. On a vu aussi comment bien utiliser les propriétés CSS position et z-index pour positionner un élément à l’écran.</p></div>
]]></content:encoded>
					
					<wfw:commentRss>https://chierchia.fr/2010/07/menu-lava-lamp-jquery/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
					<title>Créer un panneau de Login coulissant avec jQuery</title>
					<link>https://chierchia.fr/2010/01/creer-un-panneau-de-login-coulissant-avec-jquery/</link>
					<comments>https://chierchia.fr/2010/01/creer-un-panneau-de-login-coulissant-avec-jquery/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Ange Chierchia</span>]]></dc:creator>
		<pubDate>Mon, 11 Jan 2010 16:45:18 +0000</pubDate>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[front-end]]></category>
		<category><![CDATA[jquery]]></category>
		<guid isPermaLink="false">https://nighcrawl.com/blog/2010/01/creer-un-panneau-de-login-coulissant-avec-jquery</guid>

					<description><![CDATA[Comme premier article pour cette nouvelle année 2010 (bonne année à tous d’ailleurs!), j’ai décidé de vous proposer un tutoriel très simple pour créer une zone de login coulissante grâce à la librairie javascript jQuery. L’idée ici, c’est de pouvoir faire apparaitre un panneau au clic sur un bouton. Ce panneau qui coulisserai vers le [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class='e-content'>Comme premier article pour cette nouvelle année 2010 (bonne année à tous d’ailleurs!), j’ai décidé de vous proposer un tutoriel très simple pour créer une zone de login coulissante grâce à la librairie javascript jQuery.</p>
<p><span id="more-1401"></span></p>
<p>L’idée ici, c’est de pouvoir faire apparaitre un panneau au clic sur un bouton. Ce panneau qui coulisserai vers le bas depuis le « header » du site afficherai un formulaire pour permettre aux utilisateurs du site de se connecter à leur espace personnel. On pourrait croire qu’il serai difficile de réaliser un tel effet. Eh bien non! Grâce à notre feuille de style et un tout petit peu de javascript en utilisant jQuery, l’effet est simple à réaliser, et tout n’est ensuite qu’une question de style  .</p>
<p>Avant de commencer, vous pouvez <a title="Démo : Panneau de login coulissant avec jQuery" href="https://nighcrawl.github.io/slide-panel-login/">jeter un oeil sur le rendu final</a> (pour un meilleur rendu, utilisez les navigateurs Chrome, Firefox 3.5 ou Safari 4).</p>
<h2 id="le-marquage-html">Le marquage HTML</h2>
<p>Maintenant qu’on a vu quel était notre but, passons au code HTML de notre panneau de login. Je ne vais pas expliquer le code, c’est un formulaire basique encapsulé dans un bloc, suivi d’un lien lui même encapsulé dans un bloc de paragraphe.</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>&lt;div class="panel"&gt;
  &lt;form action="" class="login" id="login"&gt;
    &lt;label for="username"&gt;Nom d'utilisateur&lt;/label&gt;
    &lt;input type="text" name="username" id="username" /&gt;
    &lt;label for="password"&gt;Mot de passe&lt;/label&gt;
    &lt;input type="password" name="password" id="password" /&gt;
    &lt;input type="submit" name="submit" id="submit" value="Connexion" /&gt;
  &lt;/form&gt;  
&lt;/div&gt;
&lt;button class="slide"&gt;Se connecter&lt;/button&gt;
</code></pre>
</div>
</div>
<p>Voilà, on ne peut vraiment pas faire plus simple.</p>
<h2 id="les-styles-css">Les styles CSS</h2>
<p>Maintenant, passons à notre feuille de style. Je ne mettrai ici que les propriétés importantes à la réalisation de l’effet, pour ne pas vous embêter avec le superflux, cependant le code complet sera disponible au téléchargement à la toute fin de l’article.</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>.panel {
  -moz-border-radius: 0 0 10px 10px;
  -webkit-border-radius: 0;
  border-radius: 0 0 10px 10px;
  background-color: #ccc;
  display: none;
  margin: 0 auto;
  padding: 30px;
  width: 300px;
}

.slide {
  -moz-border-radius: 0 0 10px 10px;
  -webkit-border-radius: 0;
  border-radius: 0 0 10px 10px;
  background: #ff0000;
  color: #fff;
  cursor: pointer;
  display: block;
  margin: 0 auto;
  padding: 10px;
  width: initial;
}
</code></pre>
</div>
</div>
<h2 id="le-script-jquery">Le script jQuery</h2>
<p>Maintenant qu’on a définit notre marquage HTML et les styles à lui appliquer, il ne reste plus qu’à l’animer grâce à jQuery.</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>jQuery(document).ready(function($){
    $(".slide").on("click", function(event) {
        event.preventDefault();
        $(this).prev(".panel").slideToggle("slow");
        $(this).toggleClass("active");
    });
});
</code></pre>
</div>
</div>
<p>Et voilà, votre panneau de login est terminé!</p>
<h2 id="fichiers-sources">Fichiers sources</h2>
<p><a href="https://nighcrawl.github.io/slide-panel-login/">Voir la démo</a> ou <a href="https://github.com/nighcrawl/slide-panel-login">Télécharger les fichiers</a>.</div>
]]></content:encoded>
					
					<wfw:commentRss>https://chierchia.fr/2010/01/creer-un-panneau-de-login-coulissant-avec-jquery/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
					<title>Créer des info-bulles attractives avec jQuery</title>
					<link>https://chierchia.fr/2009/05/creer-des-info-bulles-attractives-avec-jquery/</link>
					<comments>https://chierchia.fr/2009/05/creer-des-info-bulles-attractives-avec-jquery/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Ange Chierchia</span>]]></dc:creator>
		<pubDate>Thu, 28 May 2009 21:05:02 +0000</pubDate>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[front-end]]></category>
		<category><![CDATA[jquery]]></category>
		<guid isPermaLink="false">https://nighcrawl.com/blog/2009/05/creer-des-info-bulles-attractives-avec-jquery</guid>

					<description><![CDATA[Dans cet article nous allons créer un plugin jQuery afin de générer à la volée des info-bulles stylisée en utilisant l’attribut title. Màj: démo et fichiers en téléchargement en fin d’article Introduction à jQuery Avant toute chose, je ne ferai pas d’article pour présenter/apprendre le framework jQuery, Samuel Le Morvan a déjà fait un très [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class='e-content'>Dans cet article nous allons créer un plugin jQuery afin de générer à la volée des info-bulles stylisée en utilisant l’attribut <em>title</em>.</p>
<p><small><span style="color: red;">Màj: démo et fichiers en téléchargement en fin d’article</span></small><span id="more-1418"></span></p>
<h2 id="introduction-à-jquery">Introduction à jQuery</h2>
<p>Avant toute chose, je ne ferai pas d’article pour présenter/apprendre le framework jQuery, <a title="Babylon-Design" href="http://www.babylon-design.com" target="_blank" rel="noopener">Samuel Le Morvan</a> a déjà fait un très bon article sur le sujet, je vous invite donc à aller voir <a title="Apprendre et comprendre jQuery" href="http://www.babylon-design.com/site/index.php/?q=apprendre+jquery" target="_blank" rel="noopener">son billet</a> avant de commencer ici.</p>
<h2 id="mise-en-forme-du-code-html-et-css">Mise en forme du code HTML et CSS</h2>
<p>Après un passage dans Photoshop ou autre logiciel de création graphique, il est tant de découper notre design d’info-bulle afin de l’intégrer en XHTML et CSS.</p>
<p>&nbsp;</p>
<p>Après avoir découpé votre design en trois parties (topBulle.png, bottomBulle.png et fondBulle.png pour mon exemple), il est temps de passé au code HTML et CSS de notre bulle. Nous intégrerons ce code HTML dans notre plugin jQuery ne l’enregistrez donc pas dans un fichiers mais gardez le en-tête.</p>
<p>dans notre fichier index.html, nous allons insérer une simple le ligne de code</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>&lt;a href="#" title="Ici se trouve le texte de notre info-bulle"&gt;Survolez pour afficher l'info-bulle&lt;/a&gt;
</code></pre>
</div>
</div>
<p>Voilà maintenant pour notre feuille de style :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>.bg {
    background: transparent url(images/fondBulle.png) repeat-y;
    padding: 0 25px 20px 25px;
}
.basbulle {
    background: transparent url(images/bottomBulle.png) no-repeat bottom;
    height: 52px;
}
</code></pre>
</div>
</div>
<p>Notre classe <em>bulle</em> permet de garder le tout bien ensemble. Elle nous permet aussi de définir les dimensions et le fond de notre bulle. Les propriétés width et padding-top sont respectivement la largeur et la hauteur de notre image topBulle.png. La classe <em>bg</em> permet de définir des marges intérieures et un fond que l’on répète pour l’ajuster à la taille de notre bloc. Enfin la classe <em>basbulle</em> permet de fermer notre info-bulle.</p>
<h2 id="le-plugin-jquery">Le plugin jQuery</h2>
<p>Voici le code complet du plugin, on vera les détails juste après</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>$.fn.infoBulle = function(options){
    /* options par défaut pour l'info-bulle */
    var defaults = {
        speed: 200,
        delay: 300
    };

    var options = $.extend(defaults, options);

    /* création de la fonction permettant de générer le code HTML de l'info-bulle */
    getBulle = function() {
        var tBulle =
            "&lt;div class='bulle'&gt;" +
            "&lt;div class='bg'&gt;"    +
            "&lt;/div&gt;" +
            "&lt;div class='basbulle'&gt;&lt;/div&gt;" +
            "&lt;/div&gt;";
        return tBulle;
    }
    $("body").prepend(getBulle());

    /* permettre l'appel du plugin */
    $(this).each(function(){

        var $this = $(this);
        var bulle = $('.bulle');
        var bulleInner = $('.bulle .bg');

        var tTitle = (this.title);
        this.title = "";

        var offset = $(this).offset();
        var tLeft = offset.left;
        var tTop = offset.top;
        var tWidth = $this.width();
        var tHeight = $this.height();

        /* fonctions mouse over/out */
        $this.hover(
            function() {
                bulleInner.html(tTitle);
                setBulle(tTop, tLeft);
                setTimer();
            },
            function() {
                stopTimer();
                bulle.hide();
            }
        );

        /* animation de la transition */
        setTimer = function() {
            $this.showBulleTimer = setInterval("showBulle()", defaults.delay);
        }

        stopTimer = function() {
            clearInterval($this.showBulleTimer);
        }

        /* positionnement de l'infobulle */
        setBulle = function(top, left){
            var topOffset = bulle.height();
            var xBulle = (left-30)+"px";
            var yBulle = (top-topOffset-60)+"px";
            bulle.css({'top' : yBulle, 'left' : xBulle});
        }

        /*fonction qui arrete le timer et anime la transition */
        showBulle = function(){
            stopTimer();
            bulle.animate({"top": "+=20px", "opacity": "toggle"}, defaults.speed);
        }
    });
};
</code></pre>
</div>
</div>
<h2 id="définition-de-la-fonction-infobulle">Définition de la fonction infoBulle</h2>
<p>Tout d’abord nommez votre fichier JavaScript comme suit jquery.infoBulle.js ce qui permettra à notre plugin d’être reconnu par jQuery.</p>
<p>Dans ce fichier la définition de notre fonction ce fait ainsi :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>$.fn.infoBulle = function(){
});
</code></pre>
</div>
</div>
<p>Cela permet de définir notre fonction comme étant publique et donc d’être appellée dans d’autre documents. Ceci fait, pour appeller notre plugin il suffira d’insérer le code suivant entre les balise &lt;head&gt; et &lt;/head&gt; de notre page HTML :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>$(document).ready(function(){
    $('.tBulle').infoBulle();
});
</code></pre>
</div>
</div>
<p>Grâce à ce morceau de code notre plugin sera appellé par tout les élements dont la classe est <em>tBulle</em>.</p>
<h2 id="paramétrer-lanimation-du-plugin">Paramétrer l’animation du plugin</h2>
<p>Afin de rendre notre plugin le plus réutilisable possible, il est pratique de créer une fonction permettant de donner les paramètres souhaité à notre animation. Ici nous nous occuperons du temps et de la vitesse de l’animation.</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>$.fn.infoBulle = function(options){
    var defaults = {
        speed: 200,
        delay:300
    };
    var options = $.extend(defaults, options);
});
</code></pre>
</div>
</div>
<p>Ainsi si l’on ne renseigne pas la varialbe options lorsqu’on invoque le plugin, il utilisera les valeurs par défauts. Pour paramétrer le plugin, on écrira la ligne suivante : <code class="language-plaintext highlighter-rouge">$("bBulle").infoBulle({speed:400, delay:600});</code></p>
<h2 id="création-à-la-volée-du-code-htmlcss-de-notre-info-bulle">Création à la volée du code HTML/CSS de notre info-bulle</h2>
<p>C’est ici que le code HTML en début d’article va nous servir.  La fonction prepend() de jQuery va nous permettre d’injecter avant tout contenu existant, notre code HTML afin de positionner notre info-bulle au dessus de tout autre contenu.</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>getBulle = function() {
    var tBulle = "&lt;div class='bulle'&gt;" +
    "&lt;div class='bg'&gt;"    +
    "&lt;/div&gt;" +
    "&lt;div class='basbulle'&gt;&lt;/div&gt;" +
    "&lt;/div&gt;";
    return tBulle;
}
$("body").prepend(getBulle());
</code></pre>
</div>
</div>
<h2 id="la-fonction-thiseach">La fonction $(this).each()</h2>
<p>Cette fonction permet de boucler à travers tout les élements d’une page associés au plugin lorsqu’il est invoqué dans les balises <code class="language-plaintext highlighter-rouge">&lt;head&gt;&lt;/head&gt;</code>. Ici la fonction bouclera sur chaque élément ayant comme classe tTip et appliquera les propriétés et méthodes que l’on va y définir.</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>$(this).each(function(){
    var $this = $(this);
    var bulle = $('.bulle');
    var bulleInner = $('.bulle .bg');

    var tTitle = (this.title);
    this.title = "";

    var offset = $(this).offset();
    var tLeft = offset.left;
    var tTop = offset.top;
    var tWidth = $this.width();
    var tHeight = $this.height();

    /* fonctions mouse over/out */
    $this.hover(function() {
        bulleInner.html(tTitle);
        setBulle(tTop, tLeft);
        setTimer();
    }, function() {
        stopTimer();
        bulle.hide();
    });
});
</code></pre>
</div>
</div>
<p>Ici on a juste défini la position que prendra notre info-bulle, et les paramètre du mouseover et mouseout. De même on met en mémoire la valeur de l’attribut title dans la variable tTitle, et on supprime le texte de l’attribut title pour éviter d’afficher l’info-bulle par défaut et avoir notre info-bulle jQuery accompagnée par l’info-bulle simple. On réalise ceci avec la ligne suivante : <code class="language-plaintext highlighter-rouge">this.title = "";</code></p>
<h2 id="lanimation-de-linfo-bulle">L’animation de l’info-bulle</h2>
<p>Ici on va utiliser deux fonctions setTimer et stopTimer permettant de définir une intervalle de temps entre le survol d’un élement de la classe tTip et l’apparition de notre info-bulle</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>setTimer = function() {
    $this.showBulleTimer = setInterval("showBulle()", defaults.delay);
}

stopTimer = function() {
    clearInterval($this.showBulleTimer);
}
</code></pre>
</div>
</div>
<h2 id="positionnement-de-linfo-bulle">Positionnement de l’info-bulle</h2>
<p>On positionne ensuite notre info-bulle grâce à la fonction setBulle</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>/* positionnement de l'infobulle */
setBulle = function(top, left){
    var topOffset = bulle.height();
    var xBulle = (left-30)+"px";
    var yBulle = (top-topOffset-60)+"px";
    bulle.css({'top' : yBulle, 'left' : xBulle});
}
</code></pre>
</div>
</div>
<h2 id="affichage-de-linfo-bulle">Affichage de l’info-bulle</h2>
<p>On arrive enfin au bout de notre plugin, ici la fonction showBulle permet de définir les paramètres de l’animation qui seront utilisé dans la fonction setTimer.</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>showBulle = function(){
    stopTimer();
    bulle.animate({"top": "+=20px", "opacity": "toggle"}, defaults.speed);
}
</code></pre>
</div>
</div>
<p>C’est tout! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2 id="fichiers-source">Fichiers source</h2>
<p><a href="https://nighcrawl.github.io/jquery-tooltip/">Voir la démo</a> <a href="https://github.com/nighcrawl/jquery-tooltip/">Télécharger les fichiers</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://chierchia.fr/2009/05/creer-des-info-bulles-attractives-avec-jquery/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
