Shadowise : mon premier plugin Jquery
Par ephase le lundi, janvier 26 2009, 23:38 :: Création :: Lien permanent
C'est Bastien qui m'a parlé de jQuery, et en juste retour des choses, c'est pour son blog (en cours de peinture) que j'ai créé mon premier plugin pour ce fabuleux framework javascript.
Shadowise permet d'ajouter une ombre, ou plutôt 4, derrière une image. Pourquoi 4, tout simplement parce que l'effet recherché est le suivant :

Changelog
- v1.0 du 15/03/2009 :
- Les balises rajoutées autour de l'images sont maintenant des
spanavec l'attributdisplaymis àinline-blockpour améliorer la compatibilité avec les différentes mises en pages possibles de l'image. - Un CSS pour les thèmes graphiques sombres a été ajouté
shadowise_dark.css
- Les balises rajoutées autour de l'images sont maintenant des
- v0.95 du 29/01/2009 : le chargement est maintenant déterminer grâce à l'attribut 'complete'... Les images chargée depuis le cache ou depuis internet sont bien 'shadowisées'
- v0.94 du 29/01/2009 : correction d'un bug : l'ombrage des images chargées depuis le cache ne fonctionnait pas correctement.
- v0.9 du 27/01/2009 : Surpression d'un
console.logqui empêchait le fonctionnement du plugin sauf avec Mozilla Firefox équipé de Firebug
Fonctionnement
Le plugin fonctionne sans problèmes avec jQuery version 1.2 et supérieure.
Décompressez l'archive shadowise dans le répertoire de votre choix sur votre serveur web. Dans l'exemple, je vais l'extraire dans le répertoire js.
Pour utiliser shadowise, il suffit d'ajouter jquery, le fichier du plugin jquery.shadowise.js mais aussi le fichier css shadowise.css dans le <head></head> de votre fichier XHTML comme ci dessous :
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript" src="js/jquery.shadowise.js"></script> <style type="text/css" media="screen">@import url(js/shadowise/css/shadowise.css);</style>
Si le thème graphique de votre site / blog est sombre, il faut alors utiliser le css shadowize_dark.css, les balises à rajouter dans la section <head></head>
sont alors :
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript" src="js/jquery.shadowise.js"></script> <style type="text/css" media="screen">@import url(js/shadowise/css/shadowise_dark.css);</style>
Et enfin, toujours dans la section <head></head> de votre fichier (X)HTML, à la suite des lignes ci-dessus :
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() { $("#content .post img").shadowise(); });
//]]>
</script>
Toute les images contenu dans #content .post seront alors ombrées.
Les entrailles du script.
Le script attends tout d'abord le chargement de l'élément à ombrer. Si ta taille de l'image est trop petite la classe css tooShort-sw est appliquée. Si la taille est plus grand mais en dessous d'une valeurs moyenne, alors deux coins opposées de l'image sont ombré. Enfin, si l'image est plus grande que la valeur moyenne, les 4 coins sont ombrés.
Dans les deux derniers cas, le script entoure l'image de deux ou quatre <div></div> (en fonction du nombre de coins ombrés), la classe css image-sw est appliquée, et la classe layout-sw est appliquée sur le dernier <div></div>.
Le plugin
Il est téléchargeable ici, sous licence GPL 2.0. Ce script est fait à l'origine pour un blog Dotclear 2.0, il devrait fonctionner sur d'autres C.M.S comme Wordpress, Spip, Joomla... Je suis ouvert à tout commentaires, remarques, problèmes, rapport de bug...
Commentaires
J'adore.
(comme beaucoup de choses ici par ailleurs)
Sinon :
1) ça te dérange pas que j'en face un plugin pour Dotclear 2 ?
2) S'agit il de la version 0.1 ou 0.9 ? le fichier js donne deux valeurs.
3) Je vais tester le rendu sur un fond noir par curiosité, tu penses que ça passe ?
4) Quelle la version requise pour jQuery ? la 1.2 suffit elle ? (je regarde, mais c'est bon à savoir)
Je suis vraiment fan mais je crois que je l'ai déjà dit
Bonjour Osku,
Pas de soucis pour en faire un plugin pour Dotclear 2, j'y ai pensé mais j'ai pas assez de compétences en la matière...
C'est bien la version 0.9, le 0.1 est un vieux reste de debugage (avec firebug) qui doit d'ailleurs empêcher le bon fonctionnement du script.
Je ne pense pas que les ombres soient visibles sur fond noir.
J'ai develloppé Shadowise avec jQuery 1.3, mais fonctionne à partir de jQuery 1.2
Qu'est-ce que ça a de photo-réaliste avoir 4 ombres dans les 4 coins ?
Bonjour Yoho,
Je n'ai pas dit que l'effet est photo-réaliste... Mais imaginons une image avec les 4 coins légèrement cornés, alors on vera distinctement les ombres des 4 coins...
Yorick