Css Pratique Dessin Web
Css Pratique Dessin Web
Css Pratique Dessin Web
H. Giraudel
R. Goetter
Raphaël Goetter
Préface de Chris Coyier
Vingt ans après sa conception, le langage CSS n’en est plus à ses balbutiements et n’est plus optionnel en ce qui concerne la conception web
moderne. Sans le moindre concurrent en vue, CSS a encore de belles années devant lui. Et pour cause, il est toujours en perpétuelle évolution !
CSS3
Ce livre n’a pas pour prétention d’être le guide ultime de l’intégrateur dans la mesure où il ne reprend pas les bases. Il offre simplement une
mise à niveau en levant le voile sur tous les modules CSS, afin d’offrir dès aujourd’hui les connaissances nécessaires à la réalisation de sites
et d’applications web. En effet, les enjeux comme les objectifs ne sont plus les mêmes qu’il y a quelques années, aussi est-il important que
les intégrateurs, designers et développeurs s’arment face aux nouvelles problématiques que sont le Responsive Web Design, le rétrécissement
de l’écart entre le Web et le natif, et la course à la performance.
Qu’il s’agisse de mise en page avec Flexbox ou Grid Layout, d’embellissement des interfaces, d’élaboration d’animations ou même de design
fluide avec les Media Queries, vous devriez être capable de maîtriser tous ces sujets au sortir de votre lecture.
Au-delà de l’aspect purement didactique de l’ouvrage, vous trouverez un grand nombre d’exemples et de mises en pratique, ainsi que tout
Au sommaire
L’état actuel du W3C et des standards CSS • Les sélecteurs : l’accès au DOM • Positionnement et layout : les nouvelles techniques de mise en page
• Interfaces graphiques et amélioration visuelle • De nouvelles unités et valeurs • Contrôle du texte • Variables natives • Styles conditionnels •
Transformations : un nouveau monde en 2D et en 3D • Animations et transitions : pour des interfaces moins statiques
près aux domaines des normes du Web et de l’accessibilité. Il fait partie du collec- 34,90 E
tif Openweb.eu.org, référence francophone en matière de standards du Web.
BONUS EN LIGNE - 1 heure de formation video pour :
Studio Eyrolles © Éditions Eyrolles
• Apprendre à créer une feuille de styles de A à Z
• Débugger votre feuille de styles
H. Giraudel
R. Goetter
Raphaël Goetter
Préface de Chris Coyier
Vingt ans après sa conception, le langage CSS n’en est plus à ses balbutiements et n’est plus optionnel en ce qui concerne la conception web
moderne. Sans le moindre concurrent en vue, CSS a encore de belles années devant lui. Et pour cause, il est toujours en perpétuelle évolution !
CSS3
Ce livre n’a pas pour prétention d’être le guide ultime de l’intégrateur dans la mesure où il ne reprend pas les bases. Il offre simplement une
mise à niveau en levant le voile sur tous les modules CSS, afin d’offrir dès aujourd’hui les connaissances nécessaires à la réalisation de sites
et d’applications web. En effet, les enjeux comme les objectifs ne sont plus les mêmes qu’il y a quelques années, aussi est-il important que
les intégrateurs, designers et développeurs s’arment face aux nouvelles problématiques que sont le Responsive Web Design, le rétrécissement
de l’écart entre le Web et le natif, et la course à la performance.
Qu’il s’agisse de mise en page avec Flexbox ou Grid Layout, d’embellissement des interfaces, d’élaboration d’animations ou même de design
fluide avec les Media Queries, vous devriez être capable de maîtriser tous ces sujets au sortir de votre lecture.
Au-delà de l’aspect purement didactique de l’ouvrage, vous trouverez un grand nombre d’exemples et de mises en pratique, ainsi que tout
Au sommaire
L’état actuel du W3C et des standards CSS • Les sélecteurs : l’accès au DOM • Positionnement et layout : les nouvelles techniques de mise en page
• Interfaces graphiques et amélioration visuelle • De nouvelles unités et valeurs • Contrôle du texte • Variables natives • Styles conditionnels •
Transformations : un nouveau monde en 2D et en 3D • Animations et transitions : pour des interfaces moins statiques
près aux domaines des normes du Web et de l’accessibilité. Il fait partie du collec-
tif Openweb.eu.org, référence francophone en matière de standards du Web.
BONUS EN LIGNE - 1 heure de formation video pour :
Studio Eyrolles © Éditions Eyrolles
• Apprendre à créer une feuille de styles de A à Z
• Débugger votre feuille de styles
www.editions-eyrolles.com
Préface
CSS occupe une place étrange dans le monde du développement. Il y a des développeurs qui
dédaignent ce langage, ne le jugeant pas digne de leur temps ou de leurs compétences. Et, en
même temps, ils en ont peut-être peur. Voyez-vous, CSS est à la fois très simple et très com-
pliqué. Après tout, c’est essentiellement une suite de déclarations composées de paires de
clés/valeurs : color: red, width: 50%, display: inline-block. Rien de bien compliqué en
soi. Mais la façon dont ces déclarations interagissent les unes avec les autres peut être aussi
complexe et casse-tête que n’importe quel autre langage de programmation. Ajoutez à cela les
problèmes d’incompatibilité entre les navigateurs, et vous pourriez presque en venir à dire que
le rôle d’intégrateur est l’un des plus difficiles qui soit !
Il y a aussi le fait que CSS évolue à une vitesse sans précédent. Ce que nous connaissons sous
le terme de « CSS 3 » est à la fois amusant et puissant, mais rend aussi les choses plus com-
plexes. Il existe désormais de nouveaux systèmes de mise en page comme Flexbox, des possi-
bilités d’animation, et même de la 3D entièrement réalisée avec CSS ! Êtes-vous parfaite-
ment au fait de position: sticky ? Qu’en est-il des unités de dimensionnement vis-à-vis du
viewport ? Savez-vous que l’on peut tester le support des propriétés directement au sein des
feuilles de styles ? C’est un nouveau monde plein de possibilités qui s'offre à vous !
Hugo Giraudel est la personne idéale pour vous présenter ces nouveaux concepts. Il parvient en
effet à appréhender ces idées, puis à les expliquer de manière pédagogique et compréhensible. Je
peux vous l’affirmer, non seulement parce que c’est ce qu’il fait dans ce livre, mais aussi parce
que je lis ses articles techniques depuis des années. Il est parfait quand il s’agit d’expliquer des
concepts bien spécifiques, et parvient à couvrir tous les détails nécessaires à la compréhension de
ceux-ci. J’ai même fait appel à ses services pour m’aider à rechercher et à écrire des contenus
pour mon propre site web (CSS-Tricks) ! C’est une chance que d’avoir Hugo à la tête de ce
livre, réunissant autant d’informations intéressantes et pertinentes en un même ouvrage.
Chris Coyier,
auteur du site CSS-Tricks,
développeur en chef à CodePen,
podcasteur à Shop Talk Show
CSS 3 – Pratique du Design Web_.book Page VI Saturday, December 20, 2014 3:48 PM
CSS 3 – Pratique du Design Web_.book Page VII Saturday, December 20, 2014 3:48 PM
Avant-propos ................................................................................. 1
CSS, un langage en perpétuelle évolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Pourquoi cet ouvrage ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
À qui s’adresse cet ouvrage ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
La structure de l’ouvrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Compléments vidéo à consulter en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
CHAPITRE 1
L’état actuel du W3C et des standards CSS ................................. 5
Une évolution implacable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Un tour d’horizon des navigateurs d’aujourd’hui . . . . . . . . . . . . . . . . . . . . . . . . . . 7
L’état actuel des standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
L’aventure des préfixes constructeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
La standardisation des CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Étape 1. Trouver une idée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Étape 2. Editor’s Draft (ED) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Étape 3. Working Draft (WD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Étape 4. Candidate Recommendation (CR) . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Étape 5. Recommendation (REC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
CHAPITRE 2
Les sélecteurs : l’accès au DOM .................................................. 15
Les opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Opérateur d’adjacence directe (CSS 2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Compatibilité des navigateurs pour l’opérateur d’adjacence directe . . . . . . . . . . 16
Opérateur d’adjacence générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Compatibilité des navigateurs pour l’opérateur d’adjacence générale. . . . . . . . . 18
Les sélecteurs d’attribut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Sélecteur d’attribut simple (CSS 2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Compatibilité des navigateurs pour les sélecteurs d’attribut . . . . . . . . . . . . . . . 19
CSS 3 – Pratique du Design Web_.book Page VIII Saturday, December 20, 2014 3:48 PM
CHAPITRE 3
Positionnement et layout : les nouvelles techniques
de mise en page .......................................................................... 53
Le modèle de boîte : retour aux sources avec box-sizing . . . . . . . . . . . . . . . . . . . . 54
Cas pratique : simplifier les calculs de dimensions . . . . . . . . . . . . . . . . . . . . . . 56
Compatibilité des navigateurs pour box-sizing . . . . . . . . . . . . . . . . . . . . . . . . 57
Le multicolonne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Comment ça marche ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Largeur des colonnes avec column-width . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Nombre de colonnes avec column-count. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Déclaration raccourcie avec columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Gestion de la gouttière avec column-gap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Séparation des colonnes avec column-rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Interruption des colonnes avec break-* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Envahissement des colonnes avec column-span . . . . . . . . . . . . . . . . . . . . . . . . . 64
Équilibrage des colonnes avec column-fill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Cas pratique : alléger une liste chargée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Cas pratique : utiliser les colonnes comme grille . . . . . . . . . . . . . . . . . . . . . . . 66
Compatibilité des navigateurs pour le multicolonne . . . . . . . . . . . . . . . . . . . . . 69
Les modèles de boîtes flexibles avec Flexbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Comment ça marche ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Initialisation avec display: flex | inline-flex . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Direction générale avec flex-direction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
CSS 3 – Pratique du Design Web_.book Page X Saturday, December 20, 2014 3:48 PM
CHAPITRE 4
Interfaces graphiques et amélioration visuelle...................... 129
Des couleurs plus colorées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
De nouvelles couleurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
La notation rgba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Compatibilité des navigateurs pour rgba . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
La notation hsla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Compatibilité des navigateurs pour hsla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
L’opacité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
opacity et l’héritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
opacity et les contextes d’empilement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
CSS 3 – Pratique du Design Web_.book Page XII Saturday, December 20, 2014 3:48 PM
CHAPITRE 5
De nouvelles unités et valeurs ................................................. 185
Le Saint-Graal des calculs : calc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
À propos de la syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Pourquoi pas un préprocesseur ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Cas pratique : utiliser calc pour le layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Cas pratique : position de l’arrière-plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Cas pratique : centrage absolu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Compatibilité des navigateurs pour calc . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Root em : l’évolution de l’unité em . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Pourquoi rem et pas simplement em ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
CSS 3 – Pratique du Design Web_.book Page XIV Saturday, December 20, 2014 3:48 PM
CHAPITRE 6
Contrôle du texte ...................................................................... 211
La gestion des débordements avec overflow-wrap . . . . . . . . . . . . . . . . . . . . . . . 212
Compatibilité des navigateurs pour overflow-wrap . . . . . . . . . . . . . . . . . . . . 212
La gestion des espaces avec white-space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Cas pratique : affichage de code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Compatibilité des navigateurs pour white-space . . . . . . . . . . . . . . . . . . . . . . 216
Les débordements de texte et text-overflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Cas pratique : des lignes de tableau de même hauteur . . . . . . . . . . . . . . . . . . 218
Compatibilité des navigateurs pour text-overflow . . . . . . . . . . . . . . . . . . . . . 221
Les césures avec hyphens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
none . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
manual (valeur initiale) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
auto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
CSS 3 – Pratique du Design Web_.book Page XV Saturday, December 20, 2014 3:48 PM
CHAPITRE 7
Variables natives ....................................................................... 237
Comment ça marche ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
La syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Les variables invalides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Les valeurs de recours en cas d’invalidité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Cas particuliers et clarifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Variables qui se référencent mutuellement . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Propriété all et propriétés personnalisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Animations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
La compatibilité des navigateurs pour les variables natives . . . . . . . . . . . . . . . . 242
CHAPITRE 8
Styles conditionnels .................................................................. 243
Feature Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
De la notion de « support » . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
API JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
@supports et préfixes constructeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Cas pratique : header fixe à compter d’une certaine position
avec position: sticky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Cas pratique : carrousel de Bootstrap 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Compatibilité des navigateurs pour les Feature Queries . . . . . . . . . . . . . . . . . 250
Media Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Conjonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
CSS 3 – Pratique du Design Web_.book Page XVI Saturday, December 20, 2014 3:48 PM
Condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Négation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Restriction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Que peut-on détecter ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Les dimensions : width et height . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
L’orientation de l’appareil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Le ratio hauteur/largeur de l’écran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
La résolution de l’écran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Futur : davantage de contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Présence de JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Luminosité ambiante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Système de pointage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Capacité de survol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Fréquence de mise à jour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Gestion des débordements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Futur : Media Queries et variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Cas pratique : le design Mobile First . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Compatibilité des navigateurs pour les Media Queries . . . . . . . . . . . . . . . . . . 262
CHAPITRE 9
Transformations : un nouveau monde en 2D et en 3D........... 263
À quoi servent les transformations CSS ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Les transformations 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Cas pratique : réaliser des flèches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Émulation de rotation avec les filtres propriétaires . . . . . . . . . . . . . . . . . . . . . 269
Conversion d’angle avec un préprocesseur (Sass) . . . . . . . . . . . . . . . . . . . . . . . 269
Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
À propos des offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Cas pratique : centrage absolu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Mise à l’échelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Cas pratique : agrandissement au survol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Émulation de mise à l’échelle avec zoom sur Internet Explorer 8. . . . . . . . . . . 273
Bug d’Android 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Inclinaison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Cas pratique : un menu incliné . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Compatibilité des navigateurs pour les transformations 2D . . . . . . . . . . . . . . 277
L’origine de transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Tester et débugger transform-origin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
L’ordre des transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
CSS 3 – Pratique du Design Web_.book Page XVII Saturday, December 20, 2014 3:48 PM
CHAPITRE 10
Animations et transitions : pour des interfaces
moins statiques ......................................................................... 289
À quoi servent les animations ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Animation ou transition ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
À propos de l’accélération matérielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Compatibilité des navigateurs pour will-change . . . . . . . . . . . . . . . . . . . . . . 293
JavaScript ou CSS ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Les transitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
« Quoi ? » avec transition-property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
« Comment ? » avec transition-timing-function . . . . . . . . . . . . . . . . . . . . . . 296
« Combien de temps ? » avec transition-duration . . . . . . . . . . . . . . . . . . . . . . 299
« Quand ? » avec transition-delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Quelques informations complémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Cas pratique : une sidebar plus légère . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Cas pratique : changement de vue sur mobile . . . . . . . . . . . . . . . . . . . . . . . . 304
Cas pratique : animation d’une pop-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
Compatibilité des navigateurs pour les transitions . . . . . . . . . . . . . . . . . . . . . 309
Transitions et pseudo-éléments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Les animations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
« Quoi ? » avec animation-name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
« Comment ? » avec animation-timing-function . . . . . . . . . . . . . . . . . . . . . . 311
« Combien de temps ? » avec animation-duration . . . . . . . . . . . . . . . . . . . . . 312
« Combien de fois ? » avec animation-iteration-count . . . . . . . . . . . . . . . . . . 313
« Dans quel sens ? » avec animation-direction . . . . . . . . . . . . . . . . . . . . . . . . 313
« Quel état ? » avec animation-play-state . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
« Quand ? » avec animation-delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
« Quel impact ? » avec animation-fill-mode . . . . . . . . . . . . . . . . . . . . . . . . . 315
La définition d’une animation : @keyframes . . . . . . . . . . . . . . . . . . . . . . . . . 316
Animations et performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
CSS 3 – Pratique du Design Web_.book Page XVIII Saturday, December 20, 2014 3:48 PM
ANNEXE A
Liste des propriétés CSS et de leur valeur par défaut............ 335
ANNEXE B
Liste des propriétés CSS qui peuvent être animées ............... 341
Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Ce que l’on aimerait pouvoir animer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
ANNEXE C
Ressources et liens .................................................................... 345
Sites francophones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Sites anglophones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Newsletters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Comptes Twitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Avant-propos
Comme son fier ancêtre, cet ouvrage n’a pas de prétentions audacieuses ; il ne cherche qu’à
apporter des éléments de réponse et des bases solides pour que vous soyez en mesure d’atta-
quer vos projets courants et futurs avec les technologies actuelles.
La structure de l’ouvrage
Ce livre a pour vocation de faire un tour d’horizon des modules CSS émergents ; autant dire
qu’il y a de quoi faire ! Du coup, il n’a pas été simple de définir un ordre logique à tout cela.
Et pourtant, il y en a bien un !
Tout d’abord, Raphaël nous régalera d’une introduction sur l’état actuel des CSS, des stan-
dards et du marché des navigateurs. On y abordera la formidable épopée des préfixes cons-
tructeurs, l’arrivée astucieuse des flags et le chemin parsemé d’embûches qu’emprunte une
fonctionnalité avant d’être standardisée.
Ensuite, nous débuterons en douceur avec un chapitre intégralement dédié aux nouvelles
façons d’accéder au DOM (Document Object Model), c’est-à-dire aux éléments HTML.
Effectivement, avant de pouvoir appliquer des styles aux éléments, il faut pouvoir les cibler !
CSS 3 – Pratique du Design Web_.book Page 3 Saturday, December 20, 2014 3:48 PM
Avant-propos
3
Une fois que vous serez en pleine mesure de cibler n’importe quel élément dans le DOM
grâce aux sélecteurs avancés, il sera temps de s’attaquer au plat de résistance avec les nouvelles
techniques de mise en page : Flexbox, Grid Layout, multicolonne… Il y a beaucoup de choses
à voir, et ce ne sont pas les plus simples.
La structure mise en place, on pourra alors se pencher sur l’habillage des documents. Il s’avère
que CSS 3 apporte énormément de nouveautés en la matière : ombres, bords arrondis,
dégradés, manipulation des arrière-plans…
Après quoi, nous irons faire un tour du côté des nouvelles unités et fonctions, qui peuvent s’avérer
très pratiques en association avec les notions abordées dans les deux chapitres précédents.
L’un des aspects souvent bien méconnus des CSS concerne le niveau de contrôle que l’on peut
avoir sur les contenus textuels. Il s’avère que nous avons à notre disposition de plus en plus
d’outils pour s’approcher de la typographie « print », à défaut d’être en mesure de véritable-
ment rivaliser. Ce sera justement le sujet de notre sixième chapitre.
Ensuite, j’ai souhaité que vous vous familiarisiez avec les variables natives qui sont tout ce
qu’il y a d’imminentes. Vu qu’il s’agit d’un élément incontournable du futur de CSS, j’ai jugé
bon de lui dédier un chapitre, somme toute assez court.
Le chapitre suivant ne sera sûrement pas une totale découverte pour vous puisqu’il traitera des
styles conditionnels : les Feature Queries (via la directive @supports) et les fameuses Media
Queries. Nous en profiterons même pour faire un tour d’horizon du futur de ces dernières et,
qui sait, peut-être serez-vous surpris ?!
Pour la fin de l’ouvrage, j’ai décidé d’aborder des notions un peu plus originales, avec notam-
ment les transformations CSS, y compris celles 3D, et la façon dont vous pouvez en tirer parti
dans vos créations. Seront également traitées les animations et comment les utiliser à bon
escient pour améliorer vos interfaces.
Dans les annexes, vous trouverez un certain nombre d’informations supplémentaires pour
aller plus loin, notamment une bibliographie ou encore la liste des propriétés CSS pouvant
faire l’objet d’une animation.
Remerciements
Avant tout, je souhaite remercier infiniment ma compagne, Alexandra, pour avoir fait preuve
d’une patience à toute épreuve et d’un soutien sans faille au cours de ces longs mois d’écriture
à l’humeur parfois difficile, et aussi pour ses belles photographies qui illustrent ce livre.
Un grand merci également aux personnes que j’ai sollicitées au cours de la rédaction de cet
ouvrage pour des avis et des questions techniques : Rachel Andrew, Tab Atkins Jr., Dave
DeSandro, Paul Irish, Paul Lewis, Rachel Nabors, Sara Soueidan et Ana Tudor, ainsi que
Chris Coyier qui nous fait l’honneur de sa préface.
Bien évidemment, je souhaite remercier chaleureusement les relecteurs techniques Geoffrey
Crofte et Thomas Zilliox, et surtout Raphaël Goetter qui a su m’accompagner et me faire
part de son expérience au cours de cette aventure.
Enfin, merci à toute l’équipe des éditions Eyrolles, notamment Alexandre Habian et Muriel
Shan Sei Fan qui ont su m’aiguiller dans la rédaction de ce livre, mais aussi tous les relecteurs
qui sont parvenus à corriger mes tournures pas toujours heureuses, de sorte que ce livre soit
agréable à lire.
CSS 3 – Pratique du Design Web_.book Page 5 Saturday, December 20, 2014 3:48 PM
1
L’état actuel du W3C
et des standards CSS
Inventé au début des années 1990, CSS a connu une route longue et parsemée d’embûches pour
arriver au langage de styles tel qu’on le connaît aujourd’hui. Débutons avec un état des lieux et une
mise en situation.
• industrialisation ;
• stabilisation.
HTML 5 et CSS 3, véritables fleurons du Web moderne, apportent de nouvelles couches et
améliorations considérables aux versions précédentes. Voici les principales innovations appor-
tées par ces technologies :
• de multiples possibilités graphiques (arrondis, ombrages, opacité, dégradés, arrière-plans
multiples, pour ne citer que les plus connus) ;
• de nouveaux types de positionnements (Flexbox, Grid Layout, multicolonne) ;
• de nombreuses façons de cibler les éléments ;
• des transformations (rotation, zoom, déformation, translation) ;
• enfin, des animations pour que les interfaces deviennent un peu moins figées.
Et je ne viens d’évoquer que des fonctionnalités CSS 3 ! En vérité, ce sont tous les domaines
du Web qui ont bénéficié de spectaculaires avancées techniques : HTML 5, mais aussi
WebGL, SVG, Canvas, etc.
En parallèle, cette décennie marque l’avènement d’un monde « mobile ». En 2007 en effet,
l’iPhone d’Apple débarque et provoque un raz-de-marée : il est enfin possible (et pratique) de
se servir d’un téléphone portable pour surfer sur le Net. Le smartphone est né.
Avec le Web mobile s’est ouvert un formidable nouveau marché à conquérir, avec son lot de com-
bats de titans sans merci dans lesquels certains, tels que Google et Apple, en sont sortis grandis et
où d’autres, tels que BlackBerry, Motorola et Nokia, y ont laissé des plumes. Ou pire…
Notre activité professionnelle se doit d’accompagner cette révolution mobile : « Responsive Web
Design » a été élu mot-clé buzz de l’année 2013, il en découle que les notions de performance et
de temps d’affichage deviennent essentielles et, enfin, une remise en question radicale de l’ergo-
nomie d’un site web est nécessaire dans un monde connecté que l’on peut tenir dans sa main.
L’industrialisation apparaît elle aussi telle une évidence depuis plusieurs années. Le métier
d’intégrateur s’est en effet radicalement transformé en peu de temps, agrégeant des con-
traintes jusqu’alors inédites. Aujourd’hui, il ne suffit plus de rédiger du code HTML et CSS
valide, mais bien de réaliser de nombreuses tâches simultanément :
• produire du code lisible et maintenable dans la durée ;
• tester sur plusieurs périphériques et formats différents ;
• ajouter les préfixes nécessaires aux propriétés CSS 3 non finalisées ;
• versionner ses fichiers de travail ;
• gagner en performance en compressant les images ainsi que CSS et JavaScript ;
• ne pas réinventer la roue à chaque projet et automatiser le maximum de tâches.
Autant dire que les outils mis à notre disposition pour pallier les lacunes de CSS ou accélérer
notre méthode de production sont très rapidement devenus une béquille indispensable à
notre quotidien. Je pense notamment aux préprocesseurs, dont Sass est l’un des plus célèbres
porte-parole, ou encore aux planificateurs de tâches (task runners) tels que Grunt ou Gulp.
Et, chaque jour, on peut assister à la naissance (ou la mort) de l’un de ces outils.
CSS 3 – Pratique du Design Web_.book Page 7 Saturday, December 20, 2014 3:48 PM
La bonne nouvelle est que tout cela s’accompagne d’une relative mais générale stabilisation
du côté des standards qui régissent le Web. La présence de nouveaux acteurs dans le monde
des navigateurs web, notamment Chrome de Google né en 2008, ainsi que la fin de l’hégé-
monie d’Internet Explorer et la mort programmée de Windows XP favorisent en réalité
l’action menée par des organismes mondiaux régulateurs tels que le W3C ou le WHATWG.
Les standards, quoi.
D’une manière générale, nous pouvons observer que certains consensus s’établissent plus faci-
lement qu’auparavant entre les forces en présence (par exemple, l’idée de laisser tomber les
préfixes constructeurs au profit des flags – nous y reviendrons un peu plus loin).
Autre point extrêmement positif dans ce constat : le « dinosaure » Internet Explorer rattrape
rapidement son retard et offre enfin la possibilité de concevoir des pages web sans bricolages
farfelus et aléatoires. La preuve en est qu’Internet Explorer a désormais un developer channel
public.
Le design web est dorénavant une affaire de règles HTML et CSS établies, qui s’appliquent à
la grande majorité des navigateurs actuels.
RESSOURCE HTML5Test
HTML5Test est un outil en ligne qui évalue la capacité d’un navigateur (le vôtre) à supporter les fonction-
nalités HTML 5 et CSS 3. Il dispose également d’un classement des meilleurs navigateurs en termes de
support.
B http://bit.ly/html5-test
Les navigateurs mobiles ont également bénéficié d’un large essor durant ces dernières années.
Certains, à l’instar de Safari et Chrome (encore lui !), se sont taillé la part du lion, tandis que
de nouveaux challengers, comme UC Browser, Silk d’Amazon, Dolphin ou encore Coast
d’Opera, débarquent fraîchement dans l’arène.
CSS 3 – Pratique du Design Web_.book Page 8 Saturday, December 20, 2014 3:48 PM
Figure 1–1
UC Browser
Figure 1–3 Page dédiée aux flags dans Google Chrome (chrome://flags)
L’article « There is no such thing as CSS 4 » par Tab Atkins Jr., éditeur principal des spécifications CSS,
explique très bien les raisons pour lesquelles le CSSWG (CSS Working Group) a décidé de livrer CSS en
modules indépendants.
B http://bit.ly/css-4
Mais comment un module change-t-il de niveau ? Pour répondre à cette question, il faut lor-
gner du côté de son processus de standardisation, qui est long et parsemé d’embûches. Et
pour cause, celui-ci passe par cinq étapes majeures.
d’entamer les premières implémentations. Et pour cause, ceux-ci – entre autres – sont
chargés de tester la fonctionnalité de fond en comble. Une fois que le groupe de travail est en
mesure de justifier de la robustesse de la spécification grâce à deux implémentations fonction-
nelles solides (de la part de deux moteurs de rendu différents), le module est en passe de fran-
chir la dernière étape.