Académique Documents
Professionnel Documents
Culture Documents
CSS3 Pour Les Web Designer PDF
CSS3 Pour Les Web Designer PDF
CSS3 pour les WEB DESIGNERS
Dan Cederholm
Dan Cederholm
12
2
No.
Au sommaire
CSS3 pour les WEB DESIGNERS
Dan Cederholm
Dan Cederholm
2
No.
Dan Cederholm
CSS3.indd 1
20/12/10 0:18:45
ditions Eyrolles
61, bld Saint-Germain
75240 Paris Cedex 05
www.editions-eyrolles.com
CSS3.indd 3
chapitre 1
15
28
53
82
92
116
121
chapitre 2
Transformer le message
chapitre 5
Arrire-plans multiples
chapitre 6
Conclusion
Index
28/12/10 17:53:13
CSS3.indd 4
20/12/10 0:18:46
Avant-propos
Un site Web, ce nest pas la mme chose quun dessin de site
Web. Quand une personne cre un design sous Photoshop
et quune autre personne le traduit en HTML et en CSS, le
programmeur doit essayer de deviner et dapprhender lintention du designer. Ce processus dinterprtation ne va
jamais sans heurts, sauf quand le programmeur sappelle Dan
Cederholm. Quand Dan code le design de quelquun dautre, il
a tout bon, y compris l o le designer a tout faux. Par exemple,
Dan traduit forcment les dimensions fixes du design ralis
sous Photoshop en un code flexible, accessible et pare-balles.
(Dan a invent lexpression Web design pare-balles1 pour
illustrer ses propos.)
Pour Dan, flexible ne veut jamais dire vague. Les dtails ont
toujours leur importance. Car Dan nest pas seulement un dveloppeur dinterfaces brillant au service des utilisateurs, il est
aussi designer jusqu la moelle. Il pense design, rve design,
il a mme offert au monde une nouvelle faon de partager le
design sur dribbble.com. Dan est galement un pdagogue n,
doubl dun type marrant, dont le ton pince-sans-rire ferait
passer Woody Allen pour un joyeux drille. Dan est partout, il
aide les designers se perfectionner, sans se contenter dinstruire: il lve.
Voil pourquoi, chers amis, nous lui avons demand dtre
notre (et votre) guide pour CSS3. On naurait pu rver de
quelquun de plus intelligent, de plus expriment, de plus ax
sur le design et les standards du Web que notre Dan international. Bon voyage!
Jeffrey Zeldman
CSS3.indd 5
28/12/10 17:53:13
CSS3.indd 6
20/12/10 0:18:46
Utiliser CSS3
aujourdhui
CSS3.indd 1
U t i l i s e r C SS 3 au j o u r d h u i
20/12/10 0:18:47
CSS3.indd 2
20/12/10 0:18:47
La bonne nouvelle, cest que CSS3 est en fait une srie de modules,
conus pour tre implments sparment et indpendamment
les uns des autres. Cest une trs bonne chose. Cette approche
segmente a permis certaines parties de la spcification dvoluer plus (ou moins) vite que dautres, tout en encourageant les
crateurs de navigateurs implmenter les morceaux les plus
aboutis avant que CSS3 ne soit prt dans son intgralit.
Le W3C explique le choix de cette approche modulaire:
Plutt que dessayer de faire rentrer des douzaines de mises jour
dans une seule spcification monolithique, il sera bien plus simple
et plus efficace dactualiser sparment diffrents lments de la
spcification. Lutilisation de modules permettra de mettre jour
CSS de manire plus prcise et opportune, permettant ainsi la
spcification dans son ensemble dvoluer de manire plus flexible
et optimale.3
Lavantage de cette approche pour nous autres, Web designers, cest
quen plus de pouvoir exprimenter et de bnficier de cycles de
dveloppement plus rapides, nous pouvons utiliser de nombreuses
proprits CSS3 sans avoir attendre quelles deviennent des
recommandations candidates, ce qui pourrait prendre des annes.
videmment, si vous aimez lire les spcifications, ne vous en
privez surtout pas! Il y a naturellement de nombreux enseignements en retirer, mais il est bien plus pragmatique de sintresser ce qui est dj implment et utilisable aujourdhui, et
cest de cela que traite le reste de ce chapitre. Nous verrons des
exemples dapplication au fil du livre.
Jai toujours appris plus de choses sur le Web design en dissquant des exemples dans leur environnement naturel quen
lisant de la documentation, et cest l-dessus que nous insisterons dans les prochaines pages.
3. http://www.w3.org/TR/css3-roadmap/#whymods
CSS3.indd 3
U t i l i s e r C SS 3 au j o u r d h u i
20/12/10 0:18:47
O appliquer CSS3
Pour dfinir lexprience visuelle dun site Web, on peut tablir
deux catgories: le domaine critique et le domaine non critique
(tableau 1.01).
CSS3.indd 4
20/12/10 0:18:47
CRITIQUE
NON CRITIQUE
Identit visuelle
Interaction
Utilisabilit
Rcompenses visuelles
Accessibilit
Ractivit
Mise en page
Mouvement
tableau 1.01: Lexprience visuelle dun site Web peut tre divise en deux catgories,
critique et non critique. Cette dernire correspond au domaine o nous pouvons appliquer
CSS3 ds aujourdhui.
CSS3.indd 5
U t i l i s e r C SS 3 au j o u r d h u i
20/12/10 0:18:48
CSS3.indd 6
20/12/10 0:18:48
PROPRIT
SUPPORTE PAR
border-radius
9 beta
3+
3+
1+
10.5+
1.1+
2+
3.1+
9.5+
3+
3+
3.5+
10.5+
9 beta
1.3+
2+
3.6+
10.5+
9 beta
1.2+
1+
1.5+
9+
9 beta
3.2+
3+
3+
10+
9 beta
text-shadow
box-shadow
opacity
RGBA
border-radius
Arrondit les coins dun lment selon le rayon spcifi.
Fonctionne dans Safari 3+, Chrome 3+, Firefox 1+, Opera 10.5+
et IE9 Beta. Exemple:
.foo {
border-radius: 10px;
}
U t i l i s e r C SS 3 au j o u r d h u i
Openmirrors.com
CSS3.indd 7
20/12/10 0:18:51
text-shadow
Proprit CSS2 (abandonne en CSS2.1 puis rintroduite en
CSS3) qui ajoute une ombre lhypertexte et dont les options
permettent de dfinir la direction, la quantit de flou et la
couleur de lombre. Fonctionne dans: Safari 1.1+, Chrome 2+,
Firefox 3.1+ et Opera 9.5+. Exemple:
p {
text-shadow: 1px 1px 2px #999;
}
box-shadow
Ajoute une ombre un lment. Syntaxe identique textshadow. Fonctionne dans Safari 3+, Chrome 3+, Firefox 3.5+,
Opera 10.5+ et IE9 Beta. Exemple:
.foo {
box-shadow: 1px 1px 2px #999;
}
opacity
Dfinit lopacit dun lment. Une valeur de 1 signifie compltement opaque, 0 signifie compltement transparent. Fonctionne
dans Safari 1.2+, Chrome 1+, Firefox 1.5+, Opera 9+ et IE9 Beta.
CSS3.indd 8
20/12/10 0:18:51
Exemple:
.foo {
opacity: .5; /* .foo sera transparent 50% */
}
RGBA
RGBA nest pas une proprit CSS, mais plutt un nouveau modle
de couleur introduit dans CSS3, permettant de spcifier un niveau
dopacit en plus dune valeur RVB. Fonctionne dans Safari 3.2+,
Chrome 3+, Firefox 3+, Opera 10+ et IE9 Beta. Exemple:
.foo {
color: rgba(0, 0, 0, 0.75); /* noir opaque 75% */
}
U t i l i s e r C SS 3 au j o u r d h u i
Openmirrors.com
CSS3.indd 9
20/12/10 0:18:51
PRFIXES DE NAVIGATEUR
Je disais prcdemment que la spcification CSS3 tait une srie
de modules qui taient progressivement implments par les
navigateurs. Dans certains cas, cette implmentation passe par
le support exprimental: alors que la spcification est toujours
en cours de construction au W3C, un crateur de navigateur
peut dcider de prendre en charge certaines proprits, quel
quen soit ltat davancement, pour les tester dans un environnement rel. Cest devenu une tape salutaire de la procdure, les
retours dexprience servant souvent ajuster la spcification.
Un crateur de navigateur peut aussi dcider dimplmenter
une proprit exprimentale nappartenant aucune proposition de standard, mais susceptible den faire partie lavenir.
Souvent, ce support exprimental des proprits CSS est gr
par le biais dun prfixe de navigateur de ce genre:
-webkit-border-radius
CSS3.indd 10
10
20/12/10 0:18:52
WebKit
webkit
Mozilla
moz
Opera
Konqueror
khtml
Microsoft
ms
Chrome
chrome
tableau 1.03: Les navigateurs les plus utiliss et les prfixes correspondants.
U t i l i s e r C SS 3 au j o u r d h u i
11
Openmirrors.com
CSS3.indd 11
28/12/10 17:53:24
-moz-border-radius: 10px;
border-radius: 10px;
}
Ordre optimal
Quand vous utiliserez des prfixes de navigateur, faites attention lordre dans lequel vous crivez les rgles de vos dclarations. Vous remarquerez dans lexemple prcdent que nous
avons commenc par crire la proprit avec prfixe, puis la
proprit CSS3 sans prfixe.
Pourquoi mettre la vritable proprit CSS3 en dernier? Parce
que vos styles fonctionneront vraisemblablement dans dautres
navigateurs lavenir, largissant progressivement vos perspectives. Et lorsquun navigateur implmentera enfin la proprit
telle quelle est dfinie dans la spcification, cette vritable
proprit, tant en queue de liste, prendra le pas sur la version
exprimentale. Si la version prfixe diffre de la vritable
proprit, vous garantissez la suprmatie de la norme finale.
CSS3.indd 12
12
20/12/10 0:18:53
retour dexprience non ngligeable aux crateurs de navigateurs avant que la spcification ne soit finalise. Souvenez-vous
galement que les prfixes sont gnralement rattachs des
standards proposs. Cest trs diffrent des bidouillages en CSS
que nous avons tous dj utiliss pour rsoudre des problmes
dinteroprabilit.
Certains compareront les prfixes de navigateur aux petits
dtournements de syntaxe que nous sommes nombreux avoir
utiliss pour cibler des versions particulires dun navigateur
(par exemple, lutilisation de w\idth: 200px ou de _width:
200px pour cibler des versions spcifiques de IE). Au contraire,
ces prfixes sont un aspect important du processus de standardisation, permettant une proprit dvoluer au sein dune
implmentation concrte.
Comme Eric Meyer, expert de CSS, lexplique dans son article
Prefix or Posthack sur A List Apart (http://bkaprt.com/
css3/2/)4:
Les prfixes nous permettent de contrler notre approche du code.
Auparavant, nous devions nous faufiler dans les failles dinterprtation de la syntaxe pour seulement corriger les diffrences dimplmentation que lon rencontrait. Ctait une approche compltement
ractive. Les prfixes sont une approche proactive.
Il poursuit en suggrant que non seulement lutilisation de
prfixes est positive, mais quelle devrait tre au centre du
processus de standardisation, car elle:
... forcerait les crateurs de navigateurs et le groupe de travail
uvrer ensemble afin de concevoir des tests permettant dvaluer
linteroprabilit. Ces tests pourraient alors servir de guide pour
optimiser linteroprabilit plus rapidement. On pourrait littralement livrer limplmentation prfixe dans une bta publique et
supprimer le prfixe dans la version suivante.
4. Adresse complte: http://www.alistapart.com/articles/prefix-or-posthack/
U t i l i s e r C SS 3 au j o u r d h u i
13
Openmirrors.com
CSS3.indd 13
20/12/10 0:18:53
CSS3.indd 14
14
20/12/10 0:18:53
comprendre
les transitions
css
C o m p r e n d r r e l e s t r a n s i t i o n s C SS
15
Openmirrors.com
CSS3.indd 15
20/12/10 0:18:53
CSS3.indd 16
16
20/12/10 0:18:54
C o m p r e n d r r e l e s t r a n s i t i o n s C SS
17
Openmirrors.com
CSS3.indd 17
20/12/10 0:18:54
UN EXEMPLE SIMPLE
Commenons par un exemple simple. Nous allons ajouter une
transition au changement de la couleur darrire-plan dun lien. Au
survol du lien, sa couleur darrire-plan va changer, et nous allons
utiliser une transition pour lisser ce changement. Cet effet qui
ncessitait auparavant lemploi de Flash ou de JavaScript est maintenant ralisable avec seulement quelques lignes de CSS.
Le balisage est celui dun hyperlien classique, du type:
<a href="#" class="foo">Transition-me!</a>
CSS3.indd 18
18
20/12/10 0:18:54
a.foo {
padding: 5px 10px;
background: #9c3;
-webkit-transition-property: background;
-webkit-transition-duration: 0.3s;
-webkit-transition-timing-function: ease;
}
a.foo:hover {
background: #690;
}
fig 2.02: Il est difficile de reprsenter une transition anime sur le papier, mais
cest pourtant lintention de cette image; notez la transition fluide de larrire-plan
vert clair vers le vert sombre.
C o m p r e n d r r e l e s t r a n s i t i o n s C SS
19
Openmirrors.com
CSS3.indd 19
20/12/10 0:18:55
DIFFRER LA TRANSITION
Revenons notre exemple. Les transitions peuvent tre diffres par rapport linstant o lvnement dclencheur se
produit lcran. Admettons par exemple que notre voulions
que la transition darrire-plan se produise une demi-seconde
aprs le survol du lien. Nous pouvons pour cela utiliser la
proprit transition-delay.
a.foo {
padding: 5px 10px;
background: #9c3;
-webkit-transition-property: background;
-webkit-transition-duration: 0.3s;
-webkit-transition-timing-function: ease;
-webkit-transition-delay: 0.5s;
}
a.foo:hover {
background: #690;
}
CSS3.indd 20
20
20/12/10 0:18:55
TRANSITIONS ABRGES
Nous pouvons simplifier de faon consquente la dclaration
de la transition (non diffre) en utilisant la proprit de transition abrge. Cest la syntaxe que nous utiliserons dans les
prochains exemples.
a.foo {
padding: 5px 10px;
background: #9c3;
-webkit-transition: background 0.3s ease;
}
a.foo:hover {
background: #690;
}
C o m p r e n d r r e l e s t r a n s i t i o n s C SS
21
Openmirrors.com
CSS3.indd 21
20/12/10 0:18:56
INTEROPRABILIT
Comme je le disais plus haut, les transitions taient dveloppes lorigine par WebKit et sont implmentes dans Safari et
Chrome depuis la version 3.2, mais Opera les supporte galement dans sa version 10.5 (http://bkaprt.com/css3/4/)2 et Firefox
4.0 devrait franchir le pas (http://bkaprt.com/css3/5/)3.
De ce fait, il est important dajouter les prfixes appropris afin
que nos transitions fonctionnent dans dautres navigateurs au
gr de leur implmentation.
CSS3.indd 22
22
20/12/10 0:18:56
Opera, ainsi que dans les futures versions des navigateurs qui
choisissent de supporter la proprit.
TATS DE TRANSITION
Je me rappelle avoir t un peu troubl quand jai commenc
jouer avec les transitions CSS pour la premire fois. Naurait-il
pas t plus logique de placer les proprits de transition dans
la dclaration :hover, puisque cest elle qui dclenche cette
transition? En fait, outre :hover, il existe dautres tats potentiels, et vous voudrez sans doute que la transition sapplique sur
chacun de ces tats sans avoir la dupliquer.
Par exemple, vous pourriez vouloir que la transition se produise
galement sur les pseudo-classes:focus et:active du lien. Au
lieu dajouter la pile de proprits chacune de ces dclarations,
les instructions de transition sont attaches ltat normal et
ainsi dclares une seule fois.
Lexemple suivant applique le mme changement darrire-plan
ltat:focus. La transition sera ainsi dclenche lors du survol
et de la mise en focus du lien ( laide du clavier par exemple).
a.foo {
padding: 5px 10px;
background: #9c3;
-webkit-transition: background 0.3s ease;
-moz-transition: background 0.3s ease;
-o-transition: background 0.3s ease;
transition: background 0.3s ease;
}
a.foo:hover,
a.foo:focus {
background: #690;
}
C o m p r e n d r r e l e s t r a n s i t i o n s C SS
23
Openmirrors.com
CSS3.indd 23
20/12/10 0:18:56
CSS3.indd 24
24
20/12/10 0:18:57
C o m p r e n d r r e l e s t r a n s i t i o n s C SS
25
Openmirrors.com
CSS3.indd 25
20/12/10 0:18:57
CSS3.indd 26
26
20/12/10 0:18:57
est essentiel de dterminer o les transitions enrichissent lexprience de lutilisateur et o elles ne sont quun bruit superflu.
Il est galement crucial de sassurer que la vitesse de la transition ne ralentit pas une action de lutilisateur qui serait autrement instantane. Utilisez-les avec prudence.
Pour avoir une ide des vitesses appropries pour les transitions et les animations CSS, consultez larticle de Trent Walton
sur le sujet: http://bkaprt.com/css3/7/5.
Maintenant que nous avons une solide connaissance du fonctionnement de base des transitions CSS dun point de vue
technique, nous pouvons les utiliser pour fluidifier la couche
dexprience dans les exemples qui suivent, ds le tout prochain
chapitre. Venons-en au fait.
C o m p r e n d r r e l e s t r a n s i t i o n s C SS
27
Openmirrors.com
CSS3.indd 27
20/12/10 0:18:58
Broder
avec css3
Nous avons pass les deux premiers chapitres nous former,
nous mettre au parfum de ce qui tait utilisable ds prsent dans
CSS3. Nous avons galement dit que la couche dexprience tait
actuellement lendroit le plus appropri pour appliquer CSS3.
Rcapitulons les points importants dont nous avons parl
jusqu prsent. Souvenez-vous:
1. Il existe des proprits CSS3 essentielles qui sont utilisables ds
maintenant.
2. Tout le monde peut utiliser ces proprits dans ses propres projets,
particulirement en ciblant la couche dexprience.
3. Les prfixes de navigateur nous permettent daller de lavant et
daider tester des proprits exprimentales dans un contexte rel.
4. Les transitions CSS ne sont plus une simple exprience propritaire,
mais un brouillon de spcification que dautres navigateurs sont en
train dadopter. Alors utilisons-les!
CSS3.indd 28
28
20/12/10 0:18:58
fig 3.01: Notre tude de cas fictive, Things We Left on the Moon.
B r o d e r av e c c s s 3
29
Openmirrors.com
CSS3.indd 29
20/12/10 0:18:59
fig 3.02: Le petit disque de silicium ( peine plus gros quune pice de 50 cents
amricain) laiss sur la Lune par les astronautes dApollo 11 (Nasa/avec laimable
autorisation de nasaimages.org)
CSS3.indd 30
30
20/12/10 0:18:59
B r o d e r av e c c s s 3
31
Openmirrors.com
CSS3.indd 31
20/12/10 0:18:59
CSS3.indd 32
32
20/12/10 0:19:00
SURPRISE ET MERVEILLEMENT
Un des aspects qui rend le Web si diffrent, si intressant par
rapport aux supports statiques, cest linteractivit. linverse du
papier, les pixels peuvent ragir, bouger, et mme surprendre.
Et cest cette interactivit quil est si facile denrichir avec CSS3
dans les navigateurs qui le supportent, sans que les autres se
sentent flous.
Un excellent exemple de surprise et dmerveillement utilisant
CSS3 se trouve sur le site personnel du designer et dveloppeur
nerlandais Faruk Ate (http://farukat.es). Dans la barre de navigation latrale se trouve une liste de liens vers divers rseaux
sociaux qui, au survol, slargissent et prennent vie grce
plusieurs traitements en CSS3 et une transition fluide (fig 3.04).
B r o d e r av e c c s s 3
33
Openmirrors.com
CSS3.indd 33
20/12/10 0:19:00
fig 3.05: Sous IE7, le site de Faruk Ate ne prsente pas le mme traitement visuel
quavec CSS3, mais cela ne pose aucun problme.
Le survol (ou la mise en focus) dun lment est une occasion idale
pour broder un peu de CSS3. Les utilisateurs dInternet Explorer
recevront une exprience diffrente (jusquau jour ou le support
des proprits CSS3 sera implment), mais cette exprience alternative est tout fait acceptable et habituelle, et franchement les
utilisateurs dIE ne sauront pas quils manquent quelque chose.
CSS3.indd 34
34
20/12/10 0:19:00
Comme avec lexemple de Faruk, les choses deviennent intressantes quand on commence interagir avec le site. la surface, le
site a lair quasiment identique dans la plupart des navigateurs, mais
ds linstant o la souris traverse lcran et survole le texte (fig 3.07),
B r o d e r av e c c s s 3
35
Openmirrors.com
CSS3.indd 35
20/12/10 0:19:01
FIG 3.07: Une exprience enrichie se dvoile ds que lon interagit avec le site.
Merci notre ami CSS3.
PARCOURIR LA LUNE
Prenons maintenant notre tude de cas et utilisons CSS3 pour
grer le traitement du survol. Je vais dtailler les tapes de la
cration de la barre de navigation suprieure du site (fig3.08),
o nous allons combiner border-radius, text-shadow et
RGBA des transitions CSS pour crer une exprience qui
surprend et merveille.
CSS3.indd 36
36
20/12/10 0:19:02
Dabord, le balisage
Comme nous sommes des pros de la smantique, nous allons
baliser la barre de navigation suprieure avec une bonne vieille
liste non ordonne.
<ul id="nav">
<li><a href="#">News</a></li>
<li><a href="#">Things</a></li>
<li><a href="#">Stuff</a></li>
<li><a href="#">Junk</a></li>
<li><a href="#">About</a></li>
</ul>
B r o d e r av e c c s s 3
37
Openmirrors.com
CSS3.indd 37
20/12/10 0:19:02
CSS3.indd 38
38
20/12/10 0:19:02
Ajout de text-shadow
Pour la touche finale, utilisons text-shadow afin dappliquer
une ombre trs lgre. Nous allons nouveau utiliser RGBA
pour dfinir la couleur de lombre, un noir opaque 50% qui va
se mler larrire-plan.
B r o d e r av e c c s s 3
39
Openmirrors.com
CSS3.indd 39
20/12/10 0:19:03
#nav li a {
padding: 5px 15px;
font-weight: bold;
color: #ccc;
color: rgba(255, 255, 255, 0.7);
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.5);
}
CSS3.indd 40
40
20/12/10 0:19:04
#nav li a {
padding: 5px 15px;
font-weight: bold;
color: #ccc;
color: rgba(255, 255, 255, 0.7);
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.5);
}
#nav li a:hover,
#nav li a:focus {
color: #fff;
background: rgba(255, 255, 255, 0.15);
}
Nous colorons donc le texte en blanc et nous ajoutons un arrireplan blanc opaque 15 % au survol. Jai galement dcid de
dclarer ce style pour la mise en focus des liens. Les utilisateurs
qui naviguent au clavier, par exemple, verront alors ce changement quand chaque lien sera slectionn.
La figure 3.13 prsente les nouveaux tats :hover (et :focus)
des liens. Les navigateurs qui supportent RGBA auront droit
larrire-plan blanc semi-transparent derrire un texte blanc
plus visible.
B r o d e r av e c c s s 3
41
Openmirrors.com
CSS3.indd 41
20/12/10 0:19:04
CSS3.indd 42
42
20/12/10 0:19:04
fig 3.15: Imaginez, si vous y parvenez, lanimation une fois la transition en place.
B r o d e r av e c c s s 3
43
Openmirrors.com
CSS3.indd 43
20/12/10 0:19:05
CSS3.indd 44
44
20/12/10 0:19:05
Broder lexprience
Nous venons de dtailler un exemple plutt simple, consistant
ajouter diverses proprits CSS3 la couche dexprience.
Les navigateurs dignes de ce nom afficheront des liens avec
une ombre porte sur un arrire-plan arrondi semi-transparent. Les navigateurs moins dous ne profiteront pas de lexprience enrichie au survol des liens, mais ce nest pas si grave. Ils
verront une liste de liens horizontale smantiquement structure, et cest ce qui compte vraiment.
Je crois que ce petit exercice dmontre galement quel point il
est facile de produire un effet qui aurait auparavant requis lutilisation de Flash et/ou de JavaScript. Les rgles CSS que nous
avons utilises sont simples, sans dtour, et inoffensives pour
les navigateurs qui ne les supportent pas encore.
Nous avons galement rendu notre CSS3 durable en plaant
la proprit de la spcification finale en dernier. Lcriture de
toutes ces rgles avec tous ces prfixes est un effort ncessaire,
dont les bnfices nont pas de prix: pouvoir utiliser CSS3 maintenant pour enrichir lexprience de nombreux utilisateurs.
B r o d e r av e c c s s 3
45
Openmirrors.com
CSS3.indd 45
20/12/10 0:19:05
Nous allons utiliser la proprit opacity pour contrler le traitement de:hover et de:focus, mais galement pour dfinir le niveau
de transparence initial. Une transition CSS se chargera ensuite de
fluidifier et danimer ce changement pour que leffet soit complet.
Le balisage
Comme pour la barre de navigation suprieure, le balisage
utilis pour ces logos de pied de page est simple et smantique;
cest une simple liste non ordonne dimages hyperlies:
CSS3.indd 46
46
20/12/10 0:19:06
<ul id="footer-logos">
<li><a href="#"><img src="img/logo-sb.png"
alt="Logo SimpleBits" /></a>
</li>
<li><a href="#"><img src="img/icon-feed.png"
alt="Flux RSS" /></a>
</li>
<li><a href="#"><img src="img/icon-bitman.png"
alt="BitMan" /></a>
</li>
</ul>
Style de la liste
Les premiers lments de style vont permettre de centrer les images
dans le pied de page, et de les placer lhorizontale (fig3.18).
B r o d e r av e c c s s 3
47
Openmirrors.com
CSS3.indd 47
20/12/10 0:19:06
#footer-logos {
text-align: center;
}
#footer-logos li {
display: inline;
}
CSS3.indd 48
48
20/12/10 0:19:06
fig 3.19: Prsentation de ltat:hover des icnes dans le pied de page obtenu en ajustant
la proprit opacity
La manip pour IE
Heureusement, la proprit opacity est maintenant supporte
par Internet Explorer 9 Beta, mais nous pouvons galement
simuler le mme rsultat dans les versions antrieures dIE en
utilisant une proprit propritaire de Microsoft, filter.
Normalement, je ne conseillerais personne dutiliser la
proprit filter, car linverse des proprits prfixe, elle
ne fait pas partie des standards proposs. De plus, la proprit
filter peut affecter les performances suivant lendroit o elle est
employe. Cest du pur bidouillage, mais a reste une solution.
Gardez tout cela lesprit, placez ventuellement cette proprit
en quarantaine dans une feuille de style spare, ou commentez-la soigneusement, et vous aurez une mthode viable.
La marche suivre:
#footer-logos a img {
border: none;
opacity: 0.25;
-ms-filter: "progid:DXImageTransform.Microsoft.
Alpha(Opacity=25)"; /* Hack IE 8 */
filter: alpha(opacity = 25); /* Hack IE 5-7 */
}
#footer-logos a:hover img,
#footer-logos a:focus img {
opacity: 0.6;
B r o d e r av e c c s s 3
49
Openmirrors.com
CSS3.indd 49
20/12/10 0:19:07
-ms-filter:"progid:DXImageTransform.Microsoft.
Alpha(Opacity=60)"; /* Hack IE 8 */
filter: alpha(opacity = 60); /* Hack IE 5-7 */
}
fig 3.20: Le pied de page sous IE7 avec le bidouillage en place, la proprit filter simulant
la proprit opacity.
CSS3.indd 50
50
20/12/10 0:19:07
-ms-filter: "progid:DXImageTransform.Microsoft.
Alpha(Opacity=25)'; /* Hack IE 8 */
filter: alpha(opacity = 25); /* Hack IE 5-7 */
-webkittransition: opacity 0.2s ease-in-out;
-moz-transition: opacity 0.2s ease-in-out;
-o-transition: opacity 0.2s ease-in-out;
transition: opacity 0.2s ease-in-out;
}
#footer-logos a:hover img,
#footer-logos a:focus img {
opacity: 0.6;
-ms-filter: "progid:DXImageTransform.Microsoft.
Alpha(Opacity=60)"; /* Hack IE 8 */
filter: alpha(opacity = 60); /* Hack IE 5-7 */
}
BRODEZ LA TOILE
Comme je le disais plus haut, cette solution a affect la manire
dont je pense les lments graphiques dun design. Nous
pouvons utiliser opacity pour contrler les images de base, en
les fondant dans larrire-plan, puis appliquer une valeur diffrente aux tats :hover, :focus et :active, le tout li par une
transition pour les navigateurs qui le supportent.
Souvenez-vous de la proprit opacity la prochaine fois
que vous crez un traitement de survol pour les images de
vos propres designs. Vous gagnerez du temps et de la bande
passante, et vous vous pargnerez la complexit inutile dune
quelconque solution alternative.
B r o d e r av e c c s s 3
51
Openmirrors.com
CSS3.indd 51
20/12/10 0:19:08
CSS3.indd 52
52
20/12/10 0:19:08
Transformer
le message
Dans ce livre, nous aborderons uniquement les transformations 2D, qui sont pour le moment les plus fonctionnelles. On
pourrait crire un livre entier sur les transformations 3D; elles
ont vritablement quelque chose de magique. Mais les transformations 2D ont plus davance en matire dinteroprabilit et
fonctionnent sous Safari 3.2, Chrome 3.2, Firefox 4.0 et Opera
10.5 (tout comme les transitions).
Que sont donc ces transformations CSS ? Le W3C les dfinit
ainsi:
t r a n s f o r m e r l e m e s s a g e
53
Openmirrors.com
CSS3.indd 53
20/12/10 0:19:08
TRANSFORMATION DCHELLE
Prenons une liste horizontale de trois photos subtilement encadres, prises lors dun rcent voyage Marthas Vineyard, une
petite le au large du Massachusetts (fig 4.01). Cest un modle
plutt classique: une grille dimages hyperlies.
Nous allons une fois de plus nous servir de notre fidle liste
non ordonne pour programmer cette galerie.
<ul class="galerie">
<li><a href="#"><img src="photo-1.jpg" /></a></li>
<li><a href="#"><img src="photo-2.jpg" /></a></li>
1. http://www.w3.org/TR/CSS3-2d-transforms/#abstract
CSS3.indd 54
54
c s s 3 p o u r l e s W e b D e s i gne r s
20/12/10 0:19:08
Ajout du style
Ajoutons un peu de CSS pour rendre la liste horizontale et
appliquer une bordure dun pixel chaque image (notez galement que larrire-plan de la page est gris clair #eee).
ul.galerie li {
float: left;
margin: 0 10px;
padding: 10px;
t r a n s f o r m e r l e m e s s a g e
55
Openmirrors.com
CSS3.indd 55
20/12/10 0:19:09
CSS3.indd 56
56
20/12/10 0:19:09
Une valeur de 2 donnerait une photo deux fois plus grande, 0,5
deux fois plus petite, etc.
La figure 4.03 prsente le rsultat, ici sous Safari. Vous noterez
que la transformation ne perturbe pas le reste des lments du
document et agrandit la photo partir du centre sans affecter la
mise en page environnante.
fig 4.03: La photo du milieu survole par la souris, agrandie laide dune transformation
CSS.
Vous pouvez galement utiliser la proprit optionnelle transform-origin pour dcaler lorigine de la transformation avec
les valeurs top, bottom, center ou encore un pourcentage
(consultez http://bkaprt.com/CSS3/8/)2.
Par exemple, pour que la photo sagrandisse partir du coin infrieur gauche de son contenant au lieu du centre, on crirait ceci:
ul.galerie li a:hover img {
-webkit-transform-origin: bottom left;
-moz-transform-origin: bottom left;
-o-transform-origin: bottom left;
transform-origin: bottom left;
-webkit-transform: scale(1.5);
-moz-transform: scale(1.5);
-o-transform: scale(1.5);
transform: scale(1.5);
}
2. Adresse complte : http://www.w3.org/TR/css3-2d-transforms/#transformorigin
t r a n s f o r m e r l e m e s s a g e
57
Openmirrors.com
CSS3.indd 57
20/12/10 0:19:10
CSS3.indd 58
58
20/12/10 0:19:10
t r a n s f o r m e r l e m e s s a g e
59
Openmirrors.com
CSS3.indd 59
20/12/10 0:19:11
ul.galerie li a img {
float: left;
width: 200px;
-webkittransition: -webkit-transform 0.2s ease-in-out;
-moz-transition: -moz-transform 0.2s ease-in-out;
transition: transform 0.2s ease-in-out;
}
ul.galerie li a:hover img {
-webkittransform: scale(1.5);
-moz-transform: scale(1.5);
-o-transform: scale(1.5);
transform: scale(1.5);
-webkit-box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.5);
-moz-box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.5);
box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.5);
}
TRANSFORMER LEXPRIENCE
Maintenant que tout est en place, le rsultat est plutt impressionnant pour quelques lignes CSS ! Nous avons charg les
navigateurs compatibles de grer les effets au lieu dinjecter du
Flash ou du JavaScript.
Une fois de plus dans cet exemple particulier, cest dans la
couche dexprience que nous avons choisi dutiliser pleinement CSS3: quand la photo est survole, nous offrons une vue
amliore. Les navigateurs qui ne supportent pas ces proprits
nen mourront pas.
Les utilisateurs dInternet Explorer, par exemple, verront simplement une galerie de miniatures cliquables, et cest tout fait suffisant.
CSS3.indd 60
60
20/12/10 0:19:11
fig 4.05: Une photo survole, agrandie et pivote sur la gauche laide dune
transformation rotate.
t r a n s f o r m e r l e m e s s a g e
61
Openmirrors.com
CSS3.indd 61
20/12/10 0:19:12
fig 4.06: Lutilisation de rotate donne limpression que les photos sont disperses au
hasard sur la page.
CSS3.indd 62
62
20/12/10 0:19:12
t r a n s f o r m e r l e m e s s a g e
63
Openmirrors.com
CSS3.indd 63
20/12/10 0:19:13
fig 4.09: Lapplication iPhone Outside utilise une rotation pour faire tourner le soleil.
CSS3.indd 64
64
20/12/10 0:19:14
La transformation skew
La transformation skew prend deux coordonnes x et y et
dforme un lment sur deux axes. Par exemple, si lon voulait
appliquer une transformation skew aux photos de notre galerie,
on utiliserait le code CSS suivant (avec -5deg sur laxe des
abscisses et 30deg sur laxe des ordonnes) (fig 4.11):
ul.galerie li a:hover img {
-webkit-transform: scale(1.5) skew(-5deg, 30deg);
-moz-transform: scale(1.5) skew(-5deg, 30deg);
-o-transform: scale(1.5) skew(-5deg, 30deg);
transform: scale(1.5) skew(-5deg, 30deg);
}
t r a n s f o r m e r l e m e s s a g e
65
Openmirrors.com
CSS3.indd 65
20/12/10 0:19:14
Bon, je vois bien que ce que nous venons de faire subir cette
pauvre photo nest pas franchement attrayant, et dailleurs
javoue que je nutilise pas skew trs souvent; pourtant, je suis
convaincu quon peut lui trouver une utilit.
Par exemple, on pourrait utiliser skew sur des blocs de texte
pour crer des graphismes en 3D, uniquement avec du HTML
smantique et schma CSS3 (fig. 4.13 et 4.14).
La transformation translate
Enfin, la transformation translate vous permet de dplacer
un lment depuis sa position dorigine lcran, selon des
coordonnes x et y.
CSS3.indd 66
66
20/12/10 0:19:15
fig 4.13: Une dmo de Paul Hayes utilisant skew et des transitions pour crer plusieurs
cubes en 3D partir de simples blocs dhypertexte.
(http://www.paulrhayes.com/experiments/cube/multiCubes.html).
fig 4.14: Web Trend Map utilise skew pour placer des avatars sur une grille isomtrique,
crant un mode de visualisation unique partir dlments normalement aligns
(http://webtrendmap.com).
t r a n s f o r m e r l e m e s s a g e
67
Openmirrors.com
CSS3.indd 67
20/12/10 0:19:16
CSS3.indd 68
68
20/12/10 0:19:16
TRANSFORMER LA LUNE
Revenons notre site exemple sur la Lune, o jai utilis
plusieurs transformations et transitions pour gayer un peu la
galerie des miniatures (fig 4.16).
t r a n s f o r m e r l e m e s s a g e
69
Openmirrors.com
CSS3.indd 69
20/12/10 0:19:17
tayer le message
En rflchissant au sens de chaque objet, on peut appliquer
une transformation et/ou une transition qui taye lhistoire de
lobjet en question.
Comment ragiraient un gros donut ou un fauteuil inclinable
linteraction? Nous pouvons utiliser des transformations CSS3
adaptes pour enrichir lexprience (fig 4.17).
CSS3.indd 70
70
20/12/10 0:19:17
Le balisage
Pour programmer ce curieux assemblage, la smantique est
plutt simple: une simple liste ordonne dimages hyperlies
accompagnes de lgendes.
<ol id="things">
<li id="things-1">
<a href="#"><img src="img/doughnut.png" /></a>
<h2>1 big doughnut</h2>
</li>
<li id="things-2">
<a href="#"><img src="img/mower.png" /></a>
<h2>1 lawnmower</h2>
</li>
<li id="things-3">
<a href="#"><img src="img/cat.png" /></a>
<h2>1 astro cat</h2>
</li>
<li id="things-4">
<a href="#"><img src="img/recliner.png" /></a>
<h2>1 recliner</h2>
</li>
<li id="things-5">
<a href="#"><img src="img/gnome.png" /></a>
<h2>1 magic gnome</h2>
</li>
</ol>
Vous remarquerez que nous avons ajout un id #trucs la liste ellemme, ainsi quun id chaque lment de la liste, afin de pouvoir
appliquer des transformations diffrentes chaque lment.
t r a n s f o r m e r l e m e s s a g e
71
Openmirrors.com
CSS3.indd 71
20/12/10 0:19:18
ol#things li {
position: relative;
float: left;
margin: 0 15px 0 0;
padding: 10px;
background: #444; /* couleur de secours non RGBA */
background: rgba(255, 255, 255, 0.1);
list-style: none;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
-o-border-radius: 4px;
border-radius: 4px;
}
Nous allons maintenant mettre limage du sol lunaire en arrireplan de chaque lment, et dfinir une largeur et une hauteur
spcifiques pour chaque lien (fig 4.18).
ol#things li a {
float: left;
width: 137px;
height: 91px;
background: url(../img/moon-137.jpg)
no-repeat top left;
}
CSS3.indd 72
72
20/12/10 0:19:18
Dclaration fourre-tout
Ltape suivante consiste crer une dclaration fourre-tout
qui active le positionnement absolu des images dans chaque
lment de la liste, donc par dessus larrire-plan du sol lunaire.
Nous allons positionner chaque lment diffremment selon
lobjet et utiliser diverses transformations, mais nous pouvons
dclarer position: absolute; pour toutes les images afin
de ne pas avoir dupliquer cette rgle pour chaque lment.
Nous allons galement ajouter une pile de transitions utilisant
la valeur all. Ainsi, toute transformation ou changement que
nous souhaitons appliquer sera liss par une transition, quelle
que soit la proprit CSS que nous dcidons de faire varier.
ol#things li a img {
position: absolute;
-webkit-transition: all 0.2s ease-in;
-moz-transition: all 0.2s ease-in;
-o-transition: all 0.2s ease-in;
transition: all 0.2s ease-in;
}
t r a n s f o r m e r l e m e s s a g e
73
Openmirrors.com
CSS3.indd 73
20/12/10 0:19:18
CSS3.indd 74
74
20/12/10 0:19:18
transform: scale(1.25);
}
fig 4.19: Le gros donut est encore plus gros au survol grce la transformation scale.
Ces deux changements combins la transition donnent limpression que la tondeuse vous fonce dessus (attention!). Leffet
est trs subtil, mais simple et efficace.
Nous allons ajouter un dplacement de cinq pixels vers le
bas et de 10 pixels vers la droite par rapport la position par
dfaut, ainsi que notre pile de transformations pour agrandir
la tondeuse de 20%.
t r a n s f o r m e r l e m e s s a g e
75
Openmirrors.com
CSS3.indd 75
20/12/10 0:19:19
fig 4.20: Sur la tondeuse gazon, un scale et un dplacement crent un effet pseudotridimensionnel.
La figure 4.20 illustre ltat par dfaut et ltat au survol, lillusion quune tondeuse vous fonce dessus est complte.
Linsaisissable astrochat
Nous pouvons ajouter des transitions sur des proprits de
toute sorte (pas seulement des proprits CSS3); le simple fait
de lisser un dplacement de position peut donner limpression
que lastrochat vite la souris.
En ajustant la position left de limage au survol, la dclaration
fourre-tout lisse ce mouvement, donnant limpression que le
chat glisse dun ct lautre.
CSS3.indd 76
76
20/12/10 0:19:19
fig 4.21: Le matou glisse dun ct lautre, comme font souvent les chats.
Incliner le fauteuil
Un bon fauteuil est inclinable, et nous pouvons simuler cette
fonction du monde rel laide de la transformation rotate.
Ajoutons une pile de transformations pour faire lgrement
pivoter le fauteuil sur la gauche. Nous utiliserons les rgles
prfixe pour les navigateurs utilisant les moteurs WebKit,
Mozilla et Opera, en finissant par la vritable proprit transform lintention des futures implmentations.
ol#things li#things-4 a:hover img {
-webkit-transform: rotate(-15deg);
-moz-transform: rotate(-15deg);
t r a n s f o r m e r l e m e s s a g e
77
Openmirrors.com
CSS3.indd 77
20/12/10 0:19:20
-o-transform: rotate(-15deg);
transform: rotate(-15deg);
}
Nous avons utilis une valeur ngative pour incliner limage vers
la gauche (dans le sens antihoraire), et la transition se chargera une
fois de plus de fluidifier cette subtile rotation, parachevant lillusion dun fauteuil confortable et moelleux sur la Lune (fig 4.22).
fig 4.22: Le fauteuil sincline vers la gauche grce une transformation rotate utilisant
une valeur ngative.
CSS3.indd 78
78
20/12/10 0:19:20
fig 4.23: Le nain de jardin disparat presque au survol en rduisant son opacit.
Dgradation harmonieuse
Comme pour la galerie de photos tudie au dbut de ce
chapitre, la pince de CSS3 que nous ajoutons ici naffectera
pas les navigateurs non compatibles.
Au fond, ce qui compte vraiment, cest que chacun de ces
lments soit un lien cliquable. Le reste, cest du bonus pour
ceux qui peuvent bnficier dune exprience enrichie.
t r a n s f o r m e r l e m e s s a g e
79
Openmirrors.com
CSS3.indd 79
20/12/10 0:19:20
CSS3.indd 80
80
20/12/10 0:19:21
Le pire, cest quil y a des clients et des chefs qui risquent dadorer a.
Super! Jachte!
Soupir.
t r a n s f o r m e r l e m e s s a g e
81
Openmirrors.com
CSS3.indd 81
20/12/10 0:19:21
Arrire-plans
multiples
Si vous maviez demand il y a deux ans quelle nouveaut
de CSS3 jattendais le plus fivreusement, jaurais sans doute
rpondu avec ferveur: Les images darrire-plan multiples!
cette poque, la possibilit dappliquer plus dune image darrire-plan au mme lment aurait pargn de srieux maux de
tte plus dun Web designer.
Pour crer une solution flexible et pare-balles ce problme
de conception, il nous faut trouver un moyen dappliquer
plusieurs arrire-plans en utilisant moins dimages et moins
de code. Nous avons jusqu prsent fait au mieux avec ce que
nous avions, mais la possibilit dappliquer plusieurs images
darrire-plan un mme lment en CSS3 laisse prsager des
jours plus heureux et moins de code taper.
La ralit, cest quentre temps, les navigateurs ont implment
lessentiel du module CSS3 sur les arrire-plans et les bordures
CSS3.indd 82
82
20/12/10 0:19:21
DFILEMENT PARALLAXE
Revenons notre site sur la Lune. Jai plac plusieurs images
darrire-plan dans llment body pour crer un environnement
spatial sur plusieurs couches. Au lieu dune seule image plate, jai
empil quatre PNG semi-transparents. Chacun dentre eux a son
propre positionnement horizontal afin de crer un effet danimation quand la fentre du navigateur est redimensionne (fig 5.01).
A r r i r e - p l a n s mu lt i p l e s
83
Openmirrors.com
CSS3.indd 83
20/12/10 0:19:23
CSS3.indd 84
84
20/12/10 0:19:24
A r r i r e - p l a n s mu lt i p l e s
85
Openmirrors.com
CSS3.indd 85
20/12/10 0:19:24
body {
background: url(vines-back.png) repeat-x 20% 0;
}
#midground {
background: url(vines-mid.png) repeat-x 40% 0;
}
#foreground {
background: url(vines-front.png) repeat-x 150% 0;
}
CSS3.indd 86
86
20/12/10 0:19:24
fig 5.03: Les quatre PNG semi-transparents empils pour former larrire-plan du site.
A r r i r e - p l a n s mu lt i p l e s
87
Openmirrors.com
CSS3.indd 87
20/12/10 0:19:25
fig 5.04: Les quatre PNG empils les uns sur les autres avec la couleur darrire-plan noir
charbon.
Et voil (fig 5.04). Ce qui est gnial, cest quil ny a pas de code
superflu. Nous plaons toutes les images dans llment body
pour quelles apparaissent en arrire-plan du contenu de la
page, mais nous navons pas eu besoin de crer des div vides
pour appliquer les diffrentes couches.
CSS3.indd 88
88
20/12/10 0:19:25
fig 5.05: IE7 ignore la rgle qui dclare plusieurs images darrire-plan, nutilisant que la
couleur darrire-plan noir charbon.
A r r i r e - p l a n s mu lt i p l e s
89
Openmirrors.com
CSS3.indd 89
20/12/10 0:19:26
Le site est toujours fonctionnel, mais la perte de notre arrireplan spatial est contrariante. La solution consiste spcifier une
image darrire-plan unique au dbut de la dclaration, pour les
navigateurs (comme IE7 et 8) qui ne supportent pas les images
multiples. Nous pouvons ensuite outrepasser cette rgle avec
nos arrire-plans multiples (qui seront ignors par IE).
body {
background: url(../img/space-bg.png)
repeat-x fixed -80% 0;
background:
url(../img/stars-1.png) repeat-x fixed -130% 0,
url(../img/stars-2.png) repeat-x fixed 40% 0,
url(../img/space-bg.png) repeat-x fixed -80% 0,
url(../img/clouds.png) repeat-x fixed 100% 0;
background-color: #1a1a1a;
}
CSS3.indd 90
90
20/12/10 0:19:26
fig 5.06: Une fois limage de secours en place, IE7 retrouve un peu de sa prestance
spatiale.
A r r i r e - p l a n s mu lt i p l e s
91
Openmirrors.com
CSS3.indd 91
20/12/10 0:19:27
enrichir les
formulaires
Sur un site Web, les formulaires sont galement un point
dinteraction important, et leurs nombreux vnements visuels
font deux dexcellents candidats un enrichissement en CSS3.
Par dfaut, les lments de formulaire eux-mmes peuvent
prendre une apparence radicalement diffrente selon le navigateur ou le systme dexploitation. Rien ne nous empche den
prendre notre parti et mme daller dans le sens de ces variations, en enrichissant lexprience laide de portions de CSS3
dj fonctionnelles.
Il est important de concilier modifications subtiles et environnement familier, afin que vos formulaires restent faciles daccs.
Pour faire court, un champ de saisie doit ressembler un champ
de saisie. Maintenant que CSS est capable daltrer profondment le style des lments de formulaire (dans la plupart des
navigateurs), nous devons faire attention ne pas nuire leur
aspect le plus important: la fonctionnalit.
CSS3.indd 92
92
20/12/10 0:19:27
En r i c h i r l e s f o r mu l a i r e s
93
Openmirrors.com
CSS3.indd 93
20/12/10 0:19:27
CSS3.indd 94
94
20/12/10 0:19:28
#thing-alerts label {
display: block;
font-weight: bold;
line-height: 1.4;
color: #666;
color: rgba(0, 0, 0, 0.6);
text-shadow: 0 1px 1px #fff;
}
En r i c h i r l e s f o r mu l a i r e s
95
Openmirrors.com
CSS3.indd 95
20/12/10 0:19:28
CSS3.indd 96
96
20/12/10 0:19:28
En r i c h i r l e s f o r mu l a i r e s
97
Openmirrors.com
CSS3.indd 97
20/12/10 0:19:29
CSS3.indd 98
98
20/12/10 0:19:29
En r i c h i r l e s f o r mu l a i r e s
99
Openmirrors.com
CSS3.indd 99
20/12/10 0:19:29
100
CSS3.indd 100
20/12/10 0:19:30
En r i c h i r l e s f o r mu l a i r e s
101
Openmirrors.com
CSS3.indd 101
20/12/10 0:19:30
102
CSS3.indd 102
20/12/10 0:19:31
En r i c h i r l e s f o r mu l a i r e s
103
Openmirrors.com
CSS3.indd 103
20/12/10 0:19:31
#thing-alerts input[type="submit"] {
padding: 8px 15px;
font-family: Helvetica, Arial, sans-serif;
font-weight: bold;
line-height: 1;
color: #444;
border: none;
background-color: #fff;
}
104
CSS3.indd 104
20/12/10 0:19:31
En r i c h i r l e s f o r mu l a i r e s
105
Openmirrors.com
CSS3.indd 105
20/12/10 0:19:32
106
CSS3.indd 106
20/12/10 0:19:32
En r i c h i r l e s f o r mu l a i r e s
107
Openmirrors.com
CSS3.indd 107
20/12/10 0:19:33
-webkit-border-radius: 23px;
-moz-border-radius: 23px;
-o-border-radius: 23px;
border-radius: 23px;
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
-moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
}
La figure 6.14 prsente le rsultat dans Safari aprs avoir ajout une
ombre 1px en dessous du bouton avec un flou de 2px. Comme
couleur, nous avons choisi un noir opaque 50% laide de RGBA,
afin que lombre se fonde lgrement dans larrire-plan.
Et non seulement nous en avons fini avec notre bouton, mais
notre formulaire est enfin prt tre utilis. En quelques lignes
de CSS3, nous avons transform un triste formulaire par dfaut
en un lment dinterface bien plus lgant, et qui plus est assorti
au reste du design de notre page. Nous avons choisi dutiliser
CSS3 plutt que des images, solution qui se dgrade harmonieusement dans les navigateurs qui ne supportent pas encore ces
fonctions avances. Vrifions si vous ne me croyez pas.
108
CSS3.indd 108
20/12/10 0:19:33
(fig 6.15). Cest une trs bonne nouvelle! Toutes les amliorations que nous avons ajoutes laide dune poigne de rgles
CSS3 dans la feuille de style ont t ignores sans problme, ne
laissant quun squelette de formulaire qui remplit parfaitement
sa fonction. Mission accomplie.
En r i c h i r l e s f o r mu l a i r e s
109
Openmirrors.com
CSS3.indd 109
20/12/10 0:19:33
110
CSS3.indd 110
20/12/10 0:19:34
En r i c h i r l e s f o r mu l a i r e s
111
Openmirrors.com
CSS3.indd 111
20/12/10 0:19:34
@-webkit-keyframes pulse {
0% {
-webkit-box-shadow: 0 0 12px rgba(51, 204, 255, 0.2);
}
50% {
-webkit-box-shadow: 0 0 12px rgba(51, 204, 255, 0.9);
}
100% {
-webkit-box-shadow: 0 0 12px rgba(51, 204, 255, 0.2);
}
}
Rfrencer la keyframe
La seconde tape de la cration dune animation CSS consiste
rfrencer la keyframe laide de la proprit animation.
Dans le cas prsent, nous voulons que le clignotement de
lombre se dclenche lorsquun utilisateur slectionne un
champ de saisie. Nous allons appeler la keyframe par son nom,
dfinir la dure de lanimation, activer une boucle infinie, et
enfin choisir une fonction de timing qui acclre puis dclre
(ease-in-out). Vous remarquerez que la syntaxe de lanimation
est semblable celle dune transition.
#thing-alerts input[type="text"]:focus {
-webkit-animation: pulse 1.5s infinite ease-in-out;
}
112
CSS3.indd 112
20/12/10 0:19:34
En r i c h i r l e s f o r mu l a i r e s
113
Openmirrors.com
CSS3.indd 113
20/12/10 0:19:35
114
CSS3.indd 114
20/12/10 0:19:35
En r i c h i r l e s f o r mu l a i r e s
115
Openmirrors.com
CSS3.indd 115
20/12/10 0:19:35
conclusion
Bon, revenons sur Terre et dcompressons un peu.
Nous avons voqu quantit de techniques gniales (si jose
dire) nous permettant dutiliser CSS3 ds maintenant dans
notre travail quotidien. Jespre quen dmontrant quel point
ces techniques peuvent enrichir la couche dexprience dans
les navigateurs qui les supportent tout en se dgradant harmonieusement dans les autres, je vous aurai donn envie de les
utiliser tous les jours, dans tous vos projets.
La vraie promesse de CSS3, cest de pouvoir rsoudre des
problmes de conception courants plus efficacement, avec
moins de code et plus de flexibilit. Du moment que vous (ainsi
que vos clients et vos chefs) acceptez quun site Web puisse tre
rendu diffremment par diffrents navigateurs et appareils, le
monde est vous. Bienvenue bord.
116
CSS3.indd 116
20/12/10 0:19:36
c o nc lu s i o n
117
Openmirrors.com
CSS3.indd 117
20/12/10 0:19:36
LE FUTUR DE CSS3
Et lavenir alors ? CSS3 englobe beaucoup, beaucoup plus de
choses, qui sont impossibles traiter dans un si petit livre. Je
voulais mintresser tout particulirement ce qui tait applicable ds aujourdhui et laisser de ct les modules plus exprimentaux qui ne bnficient pas dune implmentation aussi
consquente.
Mais lavenir sannonce radieux. De nouvelles proprits
sont implmentes chaque itration ou presque de WebKit,
Mozilla et Opera. Cette adoption rapide grce aux prfixes de
navigateur pousse linnovation. Restez la page et tenez-vous
au courant des dernires implmentations de ces navigateurs
pour mieux connatre la ralit du terrain.
Le futur dIE9 Beta sannonce galement trs intressant. Oui,
vous mavez bien lu. De plus en plus de proprits CSS3 sont
supportes par Internet Explorer, ce qui laisse prsager plein
de bonnes choses.
Un jour, nous pourrons nous servir de CSS3 non seulement
pour enrichir lexprience, mais galement pour les concepts
visuels critiques (la mise en page en particulier). Lattente est
longue, mais ncessaire pour que tout se droule correctement.
Pour patienter, nhsitez pas vous servir de ce qui fonctionne
dj. Vous, vos clients, et les citoyens du Web en tireront
profit.
118
CSS3.indd 118
20/12/10 0:19:36
LECTURES ET RESSOURCES
COMPLMENTAIRES
CSS3.info prsente lactualit et les derniers dveloppements de
CSS3 ainsi que des exemples:
http://www.CSS3.info
Visitez galement leur section preview pour voir les dmos de
proprits spcifiques:
http://www.CSS3.info/preview
Je vous ai dit de ne pas lire les spcifications, mais pour avoir
une vue densemble, vous prparer pour la suite et voir le statut
actuel des diffrents modules (brouillon de travail, recommandation candidate, etc.), visitez cette adresse:
http://www.w3.org/Style/CSS/current-work
Ou allez ici pour plus dinformations sur les modules eux-mmes,
voir comment ils sont rpartis et ce quils contiennent:
http://www.w3.org/TR/CSS3-roadmap
Les blogs de dveloppement de tous les principaux navigateurs sont le lieu idal pour se tenir au courant des dernires
implmentations. Je vous recommande chaudement de vous y
abonner pour savoir ce qui est adopt, rejet ou test:
http://webkit.org/blog
http://blog.mozilla.com
http://dev.opera.com/articles/css
http://blogs.msdn.com/b/ie
Plusieurs sites ont t crs sur le thme de linteroprabilit et
vous aideront dterminer dans quels navigateurs fonctionne
telle ou telle proprit:
http://caniuse.com
http://www.quirksmode.org/css/contents.html
http://html5readiness.com Ne vous laissez pas tromper par
lURL, ce site contient galement des infos sur CSS3!
c o nc lu s i o n
119
Openmirrors.com
CSS3.indd 119
20/12/10 0:19:36
120
CSS3.indd 120
20/12/10 0:19:36
index
Symboles
\
last-child 96
-chrome 11
-khtml 11
-ms 11
-o 11
ease 19
ease-in 19
ease-in-out 19, 50, 112
ease-out 19
Aldrin, Buzz 29
all 24, 25, 44, 45, 73
Allsopp, John 100
animations CSS 16, 93, 110, 111,
115
Annett, Paul 85
Apollo 11 29
Armstrong, Neil 29
arrire-plans multiples 7, 8, 86,
87, 89, 90
Ate, Faruk 33
B
border-radius 7, 11, 36, 41, 42,
83, 98, 104
boutons 103, 106, 107
box-shadow 7, 8, 58, 83, 107,
109, 110, 111, 114
C
Chrome 7, 8, 9, 12, 18, 22,
35, 39, 40, 42, 43, 48, 53,
56, 58, 62, 80, 83, 89, 90,
99, 105, 111, 112, 113
couche d'exprience 4, 6, 16, 27,
28, 34, 36, 45, 52, 62,
69, 116
cubic-bezier 19
D
dclaration abrge 21
dclaration fourre-tout 73
dfilement parallaxe 83, 89
dgrads 83, 93, 99, 101, 102,
105
G
Gecko 12
Golden Record 31, 32
I
IE6 98
IE7 34, 89, 98
IE8 et infrieur 96
IE9 Beta 7, 8, 9, 49, 58, 83,
89, 90, 118
Internet Explorer 2, 9, 13, 34,
39, 49, 50, 60, 79, 97,
108, 118
interoprabilit 22, 89
J
JavaScript 4, 15, 16, 18, 26,
45, 59, 60, 64, 120
Johansson, Roger 97
jQuery 26
K
keyframes 111, 114
Koch, Peter-Paul 97
Konqueror 11
In d e x
121
Openmirrors.com
CSS3.indd 121
28/12/10 17:54:47
L
linear 19
list-style 56
M
Media Queries 10
Microsoft 11
modules 3
Mozilla 11, 18, 58, 77, 100, 118
multicolonne 10
NASA 125
Panic Software 63
prfixes de navigateur 10, 11, 12,
13, 14, 28, 42, 58, 100, 118
Prototype 26
pulse 111, 114
Voyager 1 et Voyager 2 31
R
RGBA 7, 9, 36, 38, 39, 40,
83, 95, 106, 108
rotate 61, 63, 64, 69, 70, 77
W
W3C 3
Web fonts 10
WebKit 11, 12, 16, 18, 21, 22,
53, 58, 64, 77, 100, 110,
111, 112, 115, 118
S
Safari 2, 7, 8, 9, 12, 16, 17,
18, 22, 35, 39, 40, 42, 43,
122
CSS3.indd 122
28/12/10 17:54:51
Openmirrors.com
CSS3.indd 123
28/12/10 17:54:51
PROPOS DE LAUTEUR
Web designer, auteur, mari
et pre, Dan Cederholm
vit Salem dans le
Massachusetts. Il est le
fondateur de SimpleBits,
un petit studio de design.
Expert reconnu dans le
domaine du Web design
standardis, Dan a travaill
avec YouTube, MTV,
Google, Yahoo, ESPN,
Fast Company, Blogger et
bien dautres. Il promeut
sa vision dun design
flexible et standardis travers son travail, ses crits et ses
confrences.
Dan est le cofondateur et le designer de Dribbble, une communaut pour les designers qui souhaitent partager en temps rel
leurs projets du moment. Avant cela, il a cofond Corkd, le
premier rseau social du Web destin aux amateurs de vin.
Dan est lauteur de trois best-sellers : Handcrafted CSS (New
Riders), Bulletproof Web Design, deuxime dition (New Riders)
et Web Standards Solutions, dition spciale (Friends of ED). Il est
accessoirement virtuose du ukull et friand de voyage spatial.
CSS3.indd 124
28/12/10 17:54:52