Docsmartinez

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

Mot-clé - SVG

Fil des billets

mercredi, octobre 1 2008

CSS et coins arrondis

Les webmestres attendent depuis longtemps une fonctionalité du CSS 3 qui tardent à venir : les coins arrondis !

Oh, il y a bien des solutions pour faire cela, qui passent toutes par des images si on veut être sûr de la compatibilité la plus grande, mais c'est une chose complexe, puisqu'il s'agit de faire des images pile à la bonne taille et que, par conséquent, on perd tout dynamisme des conteneurs qui ne peuvent s'adapter à la fenêtre sans se désolidariser de l'image. :(

Le CSS 3, toujours dans les cartons du W3C, prévoie quelque chose comme cela : -border-radius: 10px;

Mieux encore, on peut décider de faire un ou plusieurs coins arrondis en déclinant : -border-radius-bottomleft: 10px;

Voilà qui est simple et pratique !

Devant l'empressement des webmestres à pouvoir utiliser cette fonctionnalité nouvelle, certains moteurs d'affichage web, devancent la CSS 3 en proposant leur propre style :

  • -moz-border-radius-bottomleft: 10px; pour les naviagteurs basés sur Gecko (Firefox par ex.),
  • -webkit-border-radius-bottomleft: 10px; pour les navigateurs basés sur Webkit (Safari par ex.).

Opera, un temps, a envisagé également de proposer lui-aussi une balise propre en attendant le CSS3 puis a abandonné cette idée.

Oui mais voilà, en tant qu'aficionado d'Opera, je trouvais désespérant de ne pouvoir afficher mes coins arrondis que sur les navigateurs concurrents.

Ah oui, oubliez Internet Explorer, lui ne comprend pas le CSS 3, ne développe pas de balise propre (pour une fois !), ne supporte pas les images vectorielles, et n'est capable de fonctionner qu'avec des images matricielles de taille adéquate. Ceci étant dit, passons aux navigateurs plus respectueux des standards...

Donc comment afficher des coins arrondis avec Opera ?

Tout simplement en profitant d'une de ses forces : l'affichage de qualité des SVG !

On va utiliser ce format d'image vectoriel pour créer une image qui s'adaptera toute seule à la taille de son conteneur !

Soit une <div> quelconque pour laquelle nous souhaitons afficher deux coins arrondis en bas.

Tout d'abord, dans notre feuille de style, nous allons embarquer les balises propres au différents navigateurs et même prévoir une compatibilité CSS3 dès maintenant. De toute façon, toute balise inconnue d'un navigateur sera ignorée par lui.

-moz-border-radius-bottomleft: 10px;-webkit-border-radius-bottomleft: 10px;-border-radius-bottomleft: 10px;
-moz-border-radius-bottomright: 10px;-webkit-border-radius-bottomright: 10px;-border-radius-bottomright: 10px;

Et voilà, notre conteneur dispose de coins arrondis sous Gecko, Webkit, et tout moteur d'affichage embarquant le CSS3 !

Mais Opera et Internet Explorer ne comprennent rien à ce charabia :(

Créons le SVG spécifique à Opera.

Que veut-on ? Un rectangle dont les coins arrondis sont en bas !

Comment faire ?

Le plus simple est de créer trois rectangle en SVG :

alt : code_svg_3couches.svg

Remontons le code précédent, depuis la fin :

  • Le premier rectangle est un rectangle qui occupera tout l'espace du conteneur mais qui a tous ses coins arrondis,
  • Le second est de la couleur du fond de ma page et permet de bien mettre en évidence les coins arrondis du bas du précédent,
  • Le dernier, enfin, permet de cacher les coins arrondis en haut de mon image (que je ne veux pas voir).

Voilà c'est prêt, plus qu'à l'ajouter à ma feuille de style :

#madiv {
 background: #f4a80a url(../images/roundedcorners.svg) repeat scroll 0% 50%;
 display: block;
 -moz-border-radius-bottomleft: 10px;
 -webkit-border-radius-bottomleft: 10px;
 -border-radius-bottomleft: 10px;
 
 -moz-border-radius-bottomright: 10px;
 -webkit-border-radius-bottomright: 10px;
 -border-radius-bottomright: 10px;
}
Grâce à cette méthode, les coins arrondis apparaissent sur la plupart des navigateurs respectant les standards du W3C. Pour Internet Explorer, le choix de la couleur de fond fait qu'un rectangle de la bonne couleur mais aux coins carrés apparaîtra.

J'ai cependant noté que sous Firefox, je ne parviens pas à afficher le SVG en fond si j'enlève ses balises spécifiques -moz o_O

vendredi, juillet 11 2008

Vive le SVG !

alt : test.svg

Le futur de l'image et de l'animation web est dans le SVG.

Ce format permet d'afficher des images indépendamment de la résolution de votre écran ou de votre zoom.

Que ce soit sur votre TV 16/9 ou sur votre mobile, elle apparaît de la même façon. Mieux encore, lorsque vous zoomez, aucun "effet pixel" ne vient vous perturber.

En revanche, bien sûr, il y a encore des navigateurs incapables d'afficher nativement ces images-là. Toujours les mêmes aurais-je tendance à dire !


Pour ceux qui n'ont pas d'image qui appararît au-dessus, vous devriez obtenir quelque chose de ce style :

Mais bien sûr avec les propriétés indiquées ci-dessus !

Ceux qui disposent d'un navigateur "moderne" peuvent s'amuser à zoomer ou à récupérer le texte ;)

jeudi, juin 22 2006

À quoi çà sert le SVG ?

Le Scalable Vector Graphics (SVG) est un format d'image vectoriel.

Pour simplifier, disons qu'il y deux façons de rendre une image, soit en procédant points par points, soit en repérant des vecteurs, des objets géométriques simples (rectangle, ronds, etc ...)

L'image bitmap est dessinée à partir d'instructions du style : - Place un point noir en (1,1) -Place un point vert en (2,1) -Place un point ..., - etc.

Plus l'image est grande, plus il y a de points à placer.

L'image vectorielle est elle obtenue à partir d'instructions du style : - Trace un rectangle vert depuis (1,1) jusqu'à (3,2) - Trace un rond rouge en (3,3) de rayon 4, - etc.

Les instructions ne dépendent pas de la taille de l'image !

L'avantage est immédiat pour toutes les fonctions de Zoom : on ne perd pas en qualité puisque que l'on trace des éléments et non des points.

L'inconvénient est qu'une image vectorielle implique plus de calculs à votre processeur. Particulièrement si votre image est complexe, et donc difficilement simplifiable en figures géométriques simples.

L'avenir est immanquablement au SVG, surtout pour le Web. Parce qu'avec le format vectoriel, les soucis de résolution de l'écran des visiteurs s'estompent encore un peu plus.