Posté le par dans la catégorie JQuery.

Powertip est un plugin JQuery qui permet de faire des tooltips. La dernière mise à jour date du 8 août 2012, autant dire que le créateur continu de l’améliorer.

L’avantage de ce plugin par rapport à d’autre est la notion de « smart placement » (placement intélligent) qui permet de placer les tooltips de manière à ce que les tooltips ne dépassent pas de la page.

Voici ce qui peut arriver sans le smart placement :

Et la correction que ce système fait :

Pour mettre ce système en place il suffit de définir l’ordre des préférences des positions pour la tooltip

$.fn.powerTip.smartPlacementLists = {
	n: ['n', 'ne', 'nw', 's'],
	e: ['e', 'ne', 'se', 'w', 'nw', 'sw', 'n', 's', 'e'],
	s: ['s', 'se', 'sw', 'n'],
	w: ['w', 'nw', 'sw', 'e', 'ne', 'se', 'n', 's', 'w'],
	nw: ['nw', 'w', 'sw', 'n', 's', 'se', 'nw'],
	ne: ['ne', 'e', 'se', 'n', 's', 'sw', 'ne'],
	sw: ['sw', 'w', 'nw', 's', 'n', 'ne', 'sw'],
	se: ['se', 'e', 'ne', 's', 'n', 'nw', 'se']
};

C’est la configuration qui est proposée sur le site officiel du plugin.

Et voici un exemple d’utilisation du plugin :

<a class="powertip" href="monsuperlien" title="Le contenu de ma tooltip">Un lien</a>
<script>
$(function(){
    $('.powertip').powerTip({
	placement: 'n',
	smartPlacement: true
    });
});
</script>

Pour des besoins plus compliqué vous pouvez ajouter des traitements sur différents events :

Nom de l’event Description
powerTipPreRender Avant que le contenu de la tooltip soit mis en place
powerTipRender Après que le contenu de la tooltip soit mis en place mais avant sont affichage
powerTipOpen Une fois que la tooltip est affichée (après l’effet fade)
powerTipClose A la fermeture de la tooltip
$('.tips').on({
	powerTipPreRender: function() {
		console.log('powerTipRender', this);

		// generate some dynamic content
		$(this).data('data-powertip' , '<h3 class="title">Default title</h3><p>Default content</p>');
	},
	powerTipRender: function() {
		console.log('powerTipRender', this);

		// change some content dynamically
		$('#powerTip').find('.title').text('This is a dynamic title.').
	},
	powerTipOpen: function() {
		console.log('powerTipOpen', this);

		// animate something when the tooltip opens
		$('#powerTip').find('.title').animate({ opacity: .1 }, 1000).animate({ opacity: 1 }, 1000);
	},
	powerTipClose: function() {
		console.log('powerTipClose', this);

		// cleanup the animation
		$('#powerTip').find('.title').stop(true, true);
	}
});

Et enfin un petit exemple :

Site officiel ou Télécharger