Regardez ce genre de design :
Pour un navigateur "ancien" (c'est à dire qui ne connaît pas CSS3), réaliser un cadre de ce genre, avec coins arrondis, dégradés, etc, est un très dur labeur. Ça se joue à coup de multiples <div /> imbriqués dont les background sont les coins de l'image savamment découpée, le tout en deux version : une pour IE, la seconde pour les autres… C'est à cause de ça que le web2.0 a beaucoup été designé (du verbe to design :p) à coup d'aplat de couleur.
Et bien avec Safari 3, finie l'usine à gaz ! Une propriété magique, propriétaire pour le moment, mais en cours de validation par le W3C fait des miracles. Il s'agit de -webkit-border-image.
Pour faire une bulle comme sur le screenshot, nous n'avons besoin que d'une image :
Et de la css suivante :
.bulle { border-width: 16px 8px 8px 8px; -webkit-border-image: url('bubbleWhite.png') 16 8 8 8; }
Appliqué au XHTML suivant :
<div class="bulle"> Je suis dans une bulle \o/ </div>
Et c'est tout. La bulle pourra s'agrandir en hauteur et en largeur sans aucun étirement ou décalage.
Comment cela fonctionne-t-il ?
On définit tout d'abord l'épaisseur de chaque bordure du cadre :
border-width: haut droite bas gauche;
Dans mon cas, la bordure du haut sera plus épaisse car il faut y faire rentrer la flèche de la bulle.
Ensuite, on indique quelles zones de l'image de fond seront appliquées dans les bordures :
-webkit-border-image: url('bubbleWhite.png') haut droite bas gauche;
On prends la zone de l'image de 0px du haut à 16px et on la met sur la bordure du haut, la zone de 0 pixel de droite à 8px et on la calle à droite, etc. Tout le reste fait partie du centre du contenant qui s'étirera selon le contenu. Tout ce qui est dans les bordure gardera sa taille initiale.
Les zones rouges sont les parties de l'images qui seront placées en tant que bordure, le reste sera étirée en tant que background :
C'est magnifique !
PS : DaScritch nous indique que ça marche aussi de la même façon sur Firefox 3 :D
Commentaires