Le blog de Guillaume Bizet

Le blog de Guillaume BIZET : Blogging, iPhone, Webdesign, XHTML, CSS, Web2.0, Dotclear et Dotclear2, ...

Aller au contenu | Aller au menu | Aller à la recherche

Afficher grace aux CSS une icone en fonction du type de fichier lié

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

Icones et types de fichier

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 ...

Guillaume BIZET

Auteur: Guillaume BIZET

Restez au courant de l'actualité et abonnez-vous au Flux RSS du blog ou du Flux RSS de cette catégorie

Julien Julien ·  18 octobre 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 giz404 ·  18 octobre 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 Julien ·  18 octobre 2007, 09:54

Petit bug, il faut évidement laisser les autour de href $='.pdf' ;)

Groumphy Groumphy ·  18 octobre 2007, 10:26

Ah oui... Super sympathique !!
A utiliser impérativement !

RpGmAx RpGmAx ·  18 octobre 2007, 11:17

Yes niquel merci d'avoir relayé l'info !

hapax hapax ·  18 octobre 2007, 14:57

Ah si tout le monde surfait avec Firefox notre vie serait tellement plus simple et plus belle... 8-|

En tout cas c'est une belle trouvaille, merci !

Matt Matt ·  21 octobre 2007, 00:10

Génial! J'étais pas du tout au courant qu'on pouvait faire ça en css! Merci pour l'info! =).

Guillaume Guillaume ·  22 octobre 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 Rwick ·  24 octobre 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 Guillaume ·  24 octobre 2007, 18:13

@Rwick : peux tu me fournir une page online sur laquelle tout est en place et où cela devrait marcher.

Merci

Rwick Rwick ·  25 octobre 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 Rwick ·  25 octobre 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 Rwick ·  25 octobre 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 :)

aucune annexe



À Voir Également

Prpriétés CSS texte et police

La propriété CSS de texte à la loupe

J'ai découvert hier cette fiche récapitulative de toutes les valeurs et options pour les propriétés ...

Lire la suite

Menu pointillé

[CSS] Enlever les pointillés des liens

Dans l'optimisation d'un site web ou d'un blog, il faut parfois penser aux petits détails qui font ...

Lire la suite