Effet encadrement photo avec ombre sur vos images
Je vous propose de découvrir dans cet article comment donner à vos images un encadrement blanc, un contour gris et enfin une ombre. L'objectif est de leur donner l'apparence d'une photo papier surélevée par rapport à votre page. La technique qui sera présenté ici ne nécessitera aucune modification de vos images, et pourra donc s'appliquer à n'importe laquelle de façon automatique.
Notre objectif est de créer un système qui mettra en place, sur vos images, le cadre et l'ombre sans modifier l'image originale. Nous n'utiliserons ici que du CSS et une image.
Le principe
Il est possible d'afficher une image dans un bloque. On peut donc très facilement appliquer à ce bloque une marge interne (padding) de plusieurs pixels. Ceci créer une première bordure de la couleur de fond de notre bloque. Nous pouvons alors exploiter la propriété CSS border pour ajouter une seconde bordure d'un pixel de large et grise par exemple. Il ne nous manquera alors plus que l'ombre.
Impossible en CSS de générer une ombre. C'est pourquoi nous allons simplement utiliser une image en PNG. C'est le seul format adapté au web qui gère très bien la couche alpha (transparence). Cette image nous fournira une ombre à droite et en bas (à adapter pour des ombres orientés différemment). Finalement, on essaiera simplement de fusionner deux images.
Une image quelconque :

Et l'image qui nous fournit l'ombre :

Mise en œuvre
Pour que les images puissent se superposer, l'une d'entre elles doit être placée en arrière plan d'un bloque. Nous exploiterons l'arrière plan du bloque de l'image (pour obtenir une bordure blanche). Nous devrons donc placer autour de l'image un autre bloque chargé de contenir l'ombre. Nous utiliserons alors le code html suivant :
<p><span class="shadowImage"><img src="montagnes.png" alt="montagnes" /></span></p>
Le span encadrant l'image n'a pas d'autre but que de créer le second bloque dont nous aurons besoin pour placer l'image générant l'ombre en arrière plan. Dans notre fichier CSS, on utilisera le code suivant :
.shadowImage { /* On met notre span en bloque */ display:block; /* On lui applique un float left, il sort ainsi du flux standard et n'occupera pas toute la largeur disponible comme il l'aurait fait normalement */ float:left; /* On place notre ombre en arrière plan en bas à droite */ background: url('images/shadowAlpha-mini.png') no-repeat bottom right; /* Quelques marges pour le style... */ margin: 10px 0 0 10px; } .shadowImage img { /* On fixe notre image en format bloque */ display: block; /* On définit sa position à relative pour plus de liberté */ position: relative; /* Son fond est blanc pour obtenir une bordure de cette couleur*/ background-color: #fff; /* Une autre bordure */ border: 1px solid #a9a9a9; /* Les marges positives servent à aficher les ombres, les marges négative sortent l'image de son coteneur */ margin: -6px 6px 6px -6px; /* Marge interne pour la bordure blanche */ padding: 4px; }
Notez qu'il faudra utiliser une image assez grande pour produire une ombre sur des images de plus grande taille. Vous pouvez maintenant admirer le résultat.
Conclusion
Le seul problème que pose vraiment la méthode utilisée, c'est qu'il est impératif d'ajouter un conteneur supplémentaire à l'image. L'article dont je me suis inspiré pour ma rédaction proposait de l'encadrer d'un div. Je pense que pour respecter la valeur sémantique des éléments de la page, il est préférable d'utiliser le span. D'autre part, si vous utilisez cet effet sur une image encadrée par un lien, vous pouvez utiliser ce lien comme conteneur supplémentaire.
Sources
Cet article est inspiré d'un article sur alistapart.com. Si l'anglais ne vous pose pas de problème, je vous invite à le lire pour plus de détails sur la méthode utilisée.
Je profite de l'occasion pour signaler l'existence du site freemages.fr qui propose des tonnes d'images sous Licence Art Libre. C'est de là que vient la photo de montagnes utilisée en exemple dans cet article.


Je ne pense pas que le ou le influent
informatique & web | dimanche 5 octobre 2008 | 15:00

Je ne pense pas que le <div> ou le <span> influent sur la sémantique de la page, ce qui compte c'est de ne pas oublier l'attribut "alt" sur vos images hé hé
Bonjour, je suis très interressé par ce type
djodjo | mercredi 1 avril 2009 | 06:04Bonjour,
je suis très interressé par ce type d'ombre mais je me demande comment les générer pour un fond avec motif.
Un cas concret :
http://joel.evert.free.fr/Liens/mel...
j'ai deux images de tailles différentes qui apparaissent sur un motif (vous aurez reconnu le fond photoshop ou illustrator) et je me demande comment m'y prendre dans ce cas de figure.
Que me conseilleriez-vous ?
Merci de vos bons conseils, le cas échéant.
Présentation rapide. Je suis de formation "print" et c'est mon premier site. Ma première motivation est la curiosité. La seconde est mon manque de moyens financiers pour m'offrir un site clé en main. J'ai commencé ce site il y a un peu moins d'un an (je suis dur à la comprenure, notamment dans un domaine où je n'ai jamais été formé).
Salutations graphiques.
Joël Evert
http://joel.evert.free.fr
A ce moment là, il faut utiliser un PNG qui
Thierry | mercredi 1 avril 2009 | 08:43A ce moment là, il faut utiliser un PNG qui exploite les différents niveaux de transparence pour former l'ombre. Ainsi elle sera calculée en fonction du fond.
A noter quand même que Internet Explorer 6 ne gère pas la transparence dans les PNG, il existe différents palliatifs à ce problème : Google vous en dira plus à ce propos.
ok pour le png; c'est bien ce que j'avais perçu.
djodjo | mercredi 1 avril 2009 | 19:21ok pour le png; c'est bien ce que j'avais perçu.
Merci et bonne continuation.
joel
oui enfin, j'ajoute que en général Explorer ne
djodjo | mercredi 1 avril 2009 | 19:30oui enfin, j'ajoute que en général Explorer ne gère pas grand chose
Les plus gros soucis rencontrés pour mon site ont été relatifs à la gestion (ou plutôt la non-gestion) des différentes balises, ou différents formats, dont explorer ne sait que faire.
Pour s'en convaincre, il n'y a qu'a regarder l'ensemble de mes fichiers css...
Allez a +
djo
On écrit "bloc" et pas "bloque".
m | samedi 16 janvier 2010 | 20:46On écrit "bloc" et pas "bloque".
Hey! Your blog is totally awesome, I enjoy reading
seo analysis tool | vendredi 29 juillet 2011 | 20:40Hey! Your blog is totally awesome, I enjoy reading it since I founded it in google on the first place. But why you are so deep for other search queries? It’s really unfair. I recommend you to use ProChecker to improve your Google rankings (you can explore more about it clicking on the link in the URL field - it’s not a spam, of course, just a friendly advice). Please Keep writing! Best regards, Steve.