18
oct 07
Afficher grace aux CSS une icone en fonction du type de fichier lié
Par Guillaume BIZET | Lien permanent
Je continue avec les promesses, dans le billet de présentation de mon nouveau thème je vous expliquais que j'avais réussi à trouver le moyen d'identifier le type de fichier d'un lien et à en afficher l'icone correspondante.
Cette technique que j'ai découverte en surfant sur le web est simple mais ... ne fonctionne pas sous la version Internet Explorer 6. Allez je vous ressort ma petite phrase habituelle.
Je ne saurais que trop vous conseiller de naviguer sur internet avec un navigateur respectueux des standards tel que Firefox
Ca, c'est fait ;)
Voilà ce que cela peut donner
![]()
et voici le code css qui permet de réaliser cela
[css]
a[href $='.pdf'] { padding-left: 22px; background: transparent url(img/pdf.png) no-repeat center left;}
a[href $='.gif'] { padding-left: 22px; background: transparent url(img/image.png) no-repeat center left;}
a[href $='.png'] { padding-left: 22px; background: transparent url(img/image.png) no-repeat center left;}
a[href $='.jpg'] { padding-left: 22px; background: transparent url(img/image.png) no-repeat center left;}
a[href $='.doc'] { padding-left: 22px; background: transparent url(img/word.png) no-repeat center left;}
a[href $='.xls'] { padding-left: 22px; background: transparent url(img/excel.png) no-repeat center left;}
a[href $='.css'] { padding-left: 22px; background: transparent url(img/texte.png) no-repeat center left;}
a[href $='.txt'] { padding-left: 22px; background: transparent url(img/texte.png) no-repeat center left;}
a[href $='.php'] { padding-left: 22px; background: transparent url(img/php.png) no-repeat center left;}
a[href $='.zip'] { padding-left: 22px; background: transparent url(img/compress.png) no-repeat center left;}
a[href $='.rar'] { padding-left: 22px; background: transparent url(img/compress.png) no-repeat center left;}
a[href $='.tar.gz'] { padding-left: 22px; background: transparent url(img/package.png) no-repeat center left;}
a[href $='.pkg.gz'] { padding-left: 22px; background: transparent url(img/package.png) no-repeat center left;}
etc ...
Mais cela fonctionne aussi pour identifier des services de messagerie tels que Aim, Msn, Yahoo messenger, ICQ, etc ...
[css]
a[href ^="aim:"] { padding-left: 22px; background: transparent url(img/aim.png) no-repeat center left;}
a[href ^="msnim:"] { padding-left: 22px; background: transparent url(img/msn.png) no-repeat center left;}
a[href ^="xmpp:"] { padding-left: 22px; background: transparent url(img/jabber.png) no-repeat center left;}
a[href *="icq.com"] { padding-left: 22px; background: transparent url(img/icq.gif) no-repeat center left;}
a[href *="edit.yahoo.com/config/send_webmesg?"] { padding-left: 22px; background: transparent url(img/yahoo.gif) no-repeat center left;}
a[href ^="skype:"] { padding-left: 22px; background: transparent url(img/skype.png) no-repeat center left;}
Je pense même que l'on peut détourner l'identification des vidéos pour identifier les services web où sont hébergés ces vidéos. Ainsi vous pourriez mettre une icône qui identifie une vidéo de youtube, de Dailymotion ou bien encore une image de Flickr, etc ...
Je l'ai testé et ça fonctionne parfaitement
[css]
a[href *="youtube.com/"] { padding-left: 22px; background: transparent url(img/youtube.png) no-repeat center left;}
a[href *="metacafe.com/"] { padding-left: 22px; background: transparent url(img/metacafe.png) no-repeat center left;}
a[href *="flickr.com"] { padding-left: 22px; background: transparent url(img/flickr.png) no-repeat center left;}
a[href *="zooomr.com"] { padding-left: 22px; background: transparent url(img/zooomr.png) no-repeat center left;}
a[href *="imageshack.us"] { padding-left: 22px; background: transparent url(img/imageshack.png) no-repeat center left;}
a[href *="bubbleshare.com"] { padding-left: 22px; background: transparent url(img/bubbleshare.png) no-repeat center left;}
Tous les exemples que je vous ai mis quelques exemples, mais il en existe bien d'autres, sont extraits de ce site : pooliestudios. Vous y trouverez tous les exemples en image ainsi quun package à télécharger comprenant :
- un fichier html
- un fichier css
- un dossier avec les icônes correspondantes
Alors à vos fichiers CSS
Enjoy ...





























Commentaires
Julien
18/10/2007 - 09:51
Oui effectivement c'est sympa
Vivement le jour où tous les navigateurs supporteront pleinement le CSS !
En attendant, grâce à jquery tu peux très facilement palier ce manque avec un truc du style: $("ahref $='.pdf'").css({padding-left: "22px"; background: "transparent url(img/pdf.png) no-repeat center left";});
Vive javascript ^^
giz404
18/10/2007 - 09:53
Cette technique semble être la même que celle mise en oeuvre par Alexandre Balmes dans son framework BIC : http://www.alexandrebalmes.fr/webde...
Julien
18/10/2007 - 09:54
Petit bug, il faut évidement laisser les autour de href $='.pdf'
Groumphy
18/10/2007 - 10:26
Ah oui... Super sympathique !!
A utiliser impérativement !
RpGmAx
18/10/2007 - 11:17
Yes niquel merci d'avoir relayé l'info !
hapax
18/10/2007 - 14:57
Ah si tout le monde surfait avec Firefox notre vie serait tellement plus simple et plus belle...
En tout cas c'est une belle trouvaille, merci !
Matt
21/10/2007 - 00:10
Génial! J'étais pas du tout au courant qu'on pouvait faire ça en css! Merci pour l'info! =).
Guillaume
22/10/2007 - 19:53
merci du tuyau !!
note à moi-même : trouver du temps pour utiliser tous les t¸rouvailles de Guillaume Bizet sur mes sites web...
Rwick
24/10/2007 - 17:46
Bonjour à tous,
J'ai un soucis lors de l'implémentation de cette technique css
( c'est là que mon moi intérieur se dit : "Pk moa ? :S" ^^ )
a[href $='.pdf'] {padding-left: 22px; background: transparent url("../images/icon_pdf.gif") no-repeat center left;}Voici le seul ( pour l'instant
) exemple qui pourrai me servir.
L'image est bien stocker au bonne endroit ( j'ai même essayer avec le chemin absolu => Pas mieu :/ )
Anticipation de question Inside xD Oui, je modifie bien le bon fichier css ( de tte façon je n'en ai que un :P )
je ne comprends pas pourquoi cela ne marche pas. Si quelqu'un à une suggestion ? *-)
Voici mon lien au cas il serait mal formaté.
<?php <a href=\"http://www.geodd.com/".$PathFichierEncours."\">".$FichierLivraisonEncours."</a>?>
Guillaume
24/10/2007 - 18:13
@Rwick : peux tu me fournir une page online sur laquelle tout est en place et où cela devrait marcher.
Merci
Rwick
25/10/2007 - 09:39
Salut guillaume.
Désolé c'est sur le back-office :S v faire une page test sur le site de prod atta.. je revien vers toa dans 10 min
Rwick
25/10/2007 - 09:52
Voilou, c'est fait => http://fr.geodd.com/include/test.ph...
et le css => http://fr.geodd.com/include/icone_c...
et l'image de l'icone => http://fr.geodd.com/images/icon_pdf...
je vais chercher en attendant.. ( je ne décrocherait tant que je 'ny arriverai pas de toute façon. ( c'est sa d'être breton => un peu tête de con xD ), mais ton aide ou celle d'autres participant sera grandement apprécié
Rwick
25/10/2007 - 10:04
C'est bon sa marche. Merci kan meme. j'avais même pas vu qu'il me manquai le "$" dans le CSS donc forcément sa marchait moins bien

Bonne journée à tous et merci encore à toi, guillaume de ce tips css