Académique Documents
Professionnel Documents
Culture Documents
5 LEÇON
notions essentielles
sur les feuilles de
style en cascade CSS :
Dispositions
M AT R I C E D ' O B J E C T I F S D ' E X A M E N
TERMES CLÉS
boîte flexible marge
bordure marge intérieure
contenu modèle de boîte flexible (Flexbox)
disposition en grille modèle de disposition en grille
élément block-level modèle de grille
élément de grille préfixe du fournisseur
élément flexbox relation parent/enfant
élément inclus requêtes multimédias
interface utilisateur (UI)
Stacey est gestionnaire de site Web chez Media Malted Milk. Elle a appris que vous
travaillez avec l'équipe de développement d'application cliente et que vous étudiez
HTML5 et CSS3. Stacey développe également ses compétences en HTML5 et
aimerait tout d'abord commencer par incorporer la boîte flexible et les dispositions en
grille dans le site Web Malted Milk, une fois que les spécifications seront plus
largement utilisées. Elle aimerait rassembler des informations sur les dispositions en
grille et en boîte flexible, y compris leur compatibilité avec les navigateurs actuels et
créer un petit aide-mémoire à propos de leurs propriétés CSS.
110
Présentation des notions essentielles sur les feuilles de style en cascade CSS : Dispositions | 111
Les interfaces utilisateur peuvent être simples et directes ou être plus complexes avec
plusieurs sections, boutons et contrôles. La conception d'une interface qui s'affiche bien
sur les grands écrans de PC et sur les petits appareils mobiles exigeait auparavant
beaucoup de balises et de code. Aujourd'hui, le modèle de boîte flexible et le modèle de
disposition en grille en CSS réduisent la quantité de code nécessaire pour la
compatibilité inter-périphériques. Les boîtes flexibles contiennent du texte, des images
L'ESSENTIEL et d'autres contenus, et le navigateur ajuste automatiquement la taille de la zone selon
la taille de l'écran utilisé pour afficher le document HTML. Le même principe
s'applique aux dispositions en grille, qui sont tout simplement des colonnes et des
lignes qui contrôlent la mise en page du contenu dans un document HTML. Comme les
spécifications CSS ne sont pas encore définitives, vous devrez utiliser des préfixes
spécifiques au fournisseur avant les noms de propriétés CSS pour tout faire fonctionner.
L'interface utilisateur ou IU est la partie d’un site Web ou d’une application avec laquelle
l'utilisateur peut interagir. La disposition de l'interface utilisateur peut être ultra simple
avec juste un bouton ou deux ou très complexe avec beaucoup de parties et chaque partie
peut contenir un ou plusieurs boutons, menus, barres d'outils, formulaires etc.
Avec un tel éventail de dispositions, il est difficile de créer des interfaces utilisateur qui
fonctionnent bien pour des applications et des sites Web affichés sur des appareils
mobiles. Le positionnement et le redimensionnement automatique des éléments d'une
interface utilisateur sont essentiels à une conception de qualité. Par exemple, le
positionnement relatif des éléments d'interface utilisateur convient à de nombreuses pages
Web et les développeurs Web ont utilisé la propriété float pendant des années pour avoir
de la souplesse dans leurs conceptions. (Vous avez découvert la propriété float dans la
leçon 4.) Toutefois, le positionnement relatif ne fonctionne pas pour la plupart des
applications Web mobiles car il produit un chevauchement inapproprié des éléments ou
des éléments apparaissent au mauvais endroit.
Une combinaison de positionnement absolu et de boîtes flexibles (conteneurs) fonctionne
beaucoup mieux pour les applications Web mobiles et les parties de pages Web en général.
Par exemple, un élément d'interface utilisateur qui doit toujours figurer au même endroit
sur l'écran, par exemple un en-tête ou un pied de page, devrait utiliser le positionnement
PRÊT POUR LA CERTIFICATION absolu. Pour plus de flexibilité, le modèle de boîte flexible CSS3 convient parfaitement
Comment CSS est
aux éléments qui sont redimensionnés ou repositionnés automatiquement (horizontalement
ou verticalement) en fonction de la taille de l’écran. Le modèle de disposition en
utilisé pour contrôler la grille CSS3 est un autre modèle d'interface utilisateur. Il vous donne une plus grande
disposition d'une interface maîtrise des dispositions complexes que le modèle de boîte flexible. Cette leçon porte sur
utilisateur ? les modèle de boîte flexible et les modèles de disposition en grille.
3.2
Avant de nous plonger dans les sujets de cette leçon, vous devez comprendre quelques
petites choses sur la compatibilité entre CSS3 et un navigateur. Comme pour HTML5, la
spécification CSS3 est en cours de développement et fait l'objet de modifications
constantes. Le nom de certaines propriétés peut changer d’une version à l’autre dans le
projet de spécification CSS3, et de nouvelles valeurs de propriété peuvent être créées et
d’autres supprimées.
Pour s’assurer que les styles CSS3 fonctionnent correctement pendant cette phase de
transition, la plupart des principaux navigateurs Web offrent des noms de propriété de
remplacement. Ces solutions permettent simplement d’ajouter un préfixe de fournisseur,
mot clé placé entre tirets, devant un nom de propriété CSS3. Gardez ce qui suit à l'esprit
quand vous utilisez les propriétés CSS3 :
• Internet Explorer utilise le préfixe -ms-.
• Firefox prend en charge le préfixe -moz-.
• Opera utilise le préfixe -o-.
• Chrome et Safari prennent en charge le préfixe -webkit-.
Par exemple, la propriété flexbox est une propriété CSS3 que vous apprendrez dans cette
leçon. Pour appliquer le style flexbox aux éléments et les afficher dans Firefox, vous
devez actuellement utiliser la propriété -moz-flexbox.
112 | Leçon 5
Il est recommandé d'inclure les préfixes des quatre fournisseurs de fonctionnalités CSS3
qui sont encore émergents. De cette façon, votre page Web a les meilleures chances d'être
affichée correctement, quels que soient les principaux navigateurs utilisés. Cependant, le
fait d'inclure les préfixes des quatre fournisseurs dans votre code le rend plus long, et cela
ne garantit pas que la fonction CSS3 fonctionne dans tous les navigateurs. Si un
navigateur ne prend pas en charge la fonctionnalité ou la propriété prefix du fournisseur,
la fonctionnalité ne s'affiche pas correctement. Le site Web « Can I use » à l'adresse
caniuse.com vous aide à déterminer quels navigateurs prennent en charge des
fonctionnalités CSS3 et HTML5 spécifiques.
Une autre pratique à suivre, surtout pendant la transition à CSS3, consiste à utiliser des
familles de polices génériques pour éviter les éventuels problèmes d'affichage entre
différents navigateurs. Une famille de polices à espacement fixe, soit serif ou sans
REMARQUE
* serif, est la meilleure façon d'éviter des résultats inattendus. Cependant, CSS3 offre
également la possibilité d'utiliser n'importe quelle police. Il faut cependant savoir
quand utiliser une police à espacement fixe et quand il est possible d'utiliser une police
fantaisiste. Vous en apprendrez plus sur la typographie et polices Web dans la leçon 7.
Figure 5-1
Modèle de boîte CSS
traditionnel
La marge est transparente et se situe sur le bord extérieur d’une boîte, formant l’espace
qui sépare les boîtes du document. La bordure entoure la boîte. Une bordure peut être
transparente, en couleurs ou avec un motif, par exemple des pointillés. La marge
intérieure représente l’espace compris entre la bordure de la boîte et son contenu. En
règle générale, la marge intérieure adopte la même couleur que la couleur d’arrière-plan
de la boîte. Le contenu correspond à tout ce qui figure à l’intérieur de la boîte, par
exemple du texte et des images. Vous pouvez utiliser les propriétés CSS border, margin,
padding, height et width pour modifier les diverses parties du modèle de boîte.
Un problème majeur avec le modèle de boîte CSS, c'est que les différents navigateurs
Web appliquent les propriétés CSS différemment. Par exemple, bien que le W3C indique
que les propriétés height et width définissent la hauteur et la largeur du contenu d'une
boîte, les anciennes versions d'Internet Explorer appliquent les mêmes propriétés à la
hauteur et la largeur de la bordure, ce qui comprend les marges intérieures et le contenu.
Présentation des notions essentielles sur les feuilles de style en cascade CSS : Dispositions | 113
Les concepteurs d'applications Web et de page Web utilisent souvent des hacks (valeurs
de propriétés CSS personnalisées) pour forcer Internet Explorer à utiliser des balises
REMARQUE
* CSS que les autres navigateurs vont ignorer. Ce concept est similaire aux préfixes
fournisseurs pour les propriétés CSS mentionnées dans la section précédente.
Il faut comprendre deux autres concepts sur le modèle de boîte CSS : les éléments de
niveau bloc et inclus. Un élément de niveau bloc permet de créer des boîtes qui facilitent
la mise en page du document. Les sections, les articles, les paragraphes, les listes et les
images sont des exemples d’éléments de niveau bloc. Les éléments inclus sont conçus
pour agencer le texte sans nuire à la structure du document. L’application de caractères
gras et le nouvel élément HTML5 mark sont des exemples d’éléments inclus.
Enfin, il est important de comprendre la relation parent/enfant lorsque vous travaillez
avec le CSS. Globalement, une boîte parent peut contenir une ou plusieurs boîtes enfants.
Les boîtes contenues dans une boîte parent sont également appelées boîtes enfants. La
figure 5-2 montre un exemple simple d'une boîte parent avec une boîte enfant imbriquée.
Un enfant peut hériter des styles CSS d'un parent, ce qui signifie que les styles appliqués
à un parent s'appliquent également à un enfant. Les propriétés CSS ne peuvent pas toutes
être héritées. Lorsque vous appliquez des styles, vous devez vérifier les spécifications
CSS pour déterminer l'héritage de propriété.
Figure 5-2
Boîtes parents et enfants
Ce qu'il manquait à CSS depuis sa création c'était un moyen facile pour organiser les
PRÊT POUR LA CERTIFICATION
éléments horizontalement et verticalement dans un document HTML : afin que CSS soit
Qu'est-ce que le modèle utilisé pour vérifier que la disposition est correcte dans les différents navigateurs et dans
de boîte flexible ? les différentes tailles d'écran. Les modèles de boîte flexible et de disposition en grille en
3.2 CSS3 ont permis de régler ce problème.
Le modèle de boîte flexible CSS est un mode de disposition qui permet d’utiliser des boîtes
flexibles dans les interfaces utilisateur. Ce modèle fait partie du projet de spécification CSS3.
Une boîte flexible offre des dispositions flexibles pour créer une interface utilisateur. Vous
pouvez créer des pages Web et des applications mobiles à partir d'éléments, de contrôles, de
barres d’outils, de menus et de formulaires qui sont automatiquement redimensionnés et
repositionnés lorsque l’utilisateur change la taille de la fenêtre du navigateur. Le navigateur
prend en compte l’espace libre disponible et calcule automatiquement les dimensions, ce qui
active les tailles relatives et le positionnement.
Par exemple, la figure 5-3 montre une barre d'outils horizontale avec des icônes dans une
boîte flexible. La boîte flexible parent est indiquée par l'arrière-plan ombré et les icônes sont
les boîtes enfants. Lorsque l'utilisateur élargit horizontalement la taille de l'écran, la boîte
flexible s'étend également et répartit l'espace de manière uniforme entre les boîtes enfants.
Figure 5-3
Barre d'outils flexible
114 | Leçon 5
Vous pouvez présenter le contenu d'une boîte flexible dynamiquement dans n'importe
quelle direction, à gauche, à droite, en haut ou en bas. Vous pouvez aussi échanger l'ordre
des boîtes et modifier leurs tailles et leurs positions pour remplir l'espace disponible. Une
boîte flexible multiligne renvoie le contenu automatiquement sur plusieurs lignes, comme
un traitement de texte qui gère du texte dans un paragraphe.
La disposition en boîte flexible est similaire à la disposition en bloc, mais la boîte flexible
n'utilise pas de colonnes ou d'éléments flottants. En outre, une disposition en bloc dispose
REMARQUE
* généralement le contenu verticalement (et une disposition en ligne dispose généralement le
contenu horizontalement), une boîte flexible quant à elle redimensionne dans les deux sens.
Alors que le modèle de boîte flexible convient parfaitement à des éléments simples,
PRÊT POUR LA CERTIFICATION
comme les boutons, les barres d’outils et de nombreux formulaires, vous pouvez utiliser le
Qu'est-ce que la
modèle de disposition en grille CSS pour les dispositions plus complexes. Le modèle de
disposition en grille ?
disposition en grille permet de contrôler la création de sections de documents HTML ou
3.2
de documents entiers avec CSS3. Comme son nom l’indique, un modèle de grille utilise
des lignes et des colonnes pour donner un aspect plus clair et structuré (voir la figure 5-4).
Figure 5-4
Illustration d'une disposition
en grille
La disposition en grille offre aussi de la modularité. Vous pouvez donc facilement déposer
des éléments dans une grille ou déplacer des sections vers une autre zone d'un document.
Les grilles sont beaucoup plus souples et plus faciles à manipuler que des tableaux HTML
ou même des colonnes ou des éléments flottants pour structurer la disposition.
Une boîte flexible et son contenu peuvent être configurés pour modifier la taille, horizontalement
L'ESSENTIEL et verticalement, lorsque la taille de l'écran sur lequel ils sont affichés change. Vous pouvez
également inverser le sens et l'ordre des boîtes flexibles avec une ligne de code.
PRÊT POUR LA CERTIFICATION Vous devez définir un élément en tant que boîte flexible à l'aide des propriétés CSS
Comment une boîte display:flexbox ou display:inline-flexbox, qui sont décrites comme suit :
flexible est-elle utilisée
• flexbox: définit la boîte flexible comme un élément de niveau bloc
pour établir l'orientation,
la direction et l'alignement • inline-flexbox: définit la boîte flexible comme un élément inclus
du contenu ? Une boîte à l’intérieur d’une autre boîte est une boîte enfant et peut être flexible ou non.
3.2 Une boîte enfant est également appelée élément flexbox.
Présentation des notions essentielles sur les feuilles de style en cascade CSS : Dispositions | 115
La boîte flexible introduit également neuf autres propriétés, indiquées dans le tableau 5-1. Vous
apprendrez à utiliser la plupart de ces propriétés et les valeurs dans les sections suivantes.
Tableau 5-1
Valeurs et propriétés d'une Propriété Valeur Description
boîte flexible
flex pos-flex Rend les boîtes enfants flexibles en
neg-flex hauteur et en largeur
preferred-size
none
flex-align start Définit l'alignement par défaut pour les
end boîtes enfants. Si l'orientation de la boîte
center parent est horizontale, flex-aligne détermine
baseline l'alignement vertical des boîtes enfants et
stretch vice versa
flex-direction row Contrôle l'orientation des boîtes enfants
row-reverse dans la boîte parent, ce qui affecte
column également la propriété flex-pack
column-reverse
flex-flow flex-direction Définit simultanément les propriétés
flex-wrap flex-direction et flex-wrap
flex-item-align auto Remplace l'alignement par défaut des
start boîtes enfants auxquelles la propriété
end flex-align a été appliquée
center
baselinebstretch
flex-line-pack start Définit l'alignement de la boîte enfant
end dans la boîte parent lorsqu'il existe un
center espace supplémentaire
justify
distribute
stretch
flex-order number Affecte les boîtes enfants aux groupes et
contrôle l'ordre dans lequel elles apparaissent
dans une mise en page, en commençant
par le groupe ayant le plus petit numéro.
flex-pack start Justifie l'alignement des boîtes enfants
end dans une boîte flexible et réduit l'espace
center disponible dans la boîte parent.
flex-wrap nowrap Indique si les boîtes enfants s’agencent
wrap automatiquement sur plusieurs lignes ou
wrap-reverse dépassent de la boîte flexible.
Utilisez le tableau précédent comme référence pour apprendre à créer les éléments
flexboxes et flexbox.
✚ PLUS D’INFORMATIONS
Pour plus d'informations sur les boîtes flexibles, visitez le « Module Disposition de boîte flexible CSS »
W3C sur http://www.w3.org/TR/css3-flexbox/.
116 | Leçon 5
Une boîte flexible peut contenir des boîtes enfants flexibles en hauteur et en largeur.
La propriété flex permet de rendre les boîtes enfants flexibles. La propriété flex-flow
définit les propriétés flex-direction et flex-wrap d'une boîte flexible (la boîte parent) en
même temps.
Observons une boîte flexible en action. Supposons qu'une entreprise fournisse trois
principaux types de services, qui sont indiqués et décrits brièvement en trois paragraphes
sur une page Web. Les trois paragraphes forment trois conteneurs d'informations, comme
illustré dans la figure 5-5.
Figure 5-5
Une boîte flexible parent
avec trois boîtes enfants
(éléments flexbox)
Notez l'espace supplémentaire à droite de la dernière boîte enfant, nommée Enfant3. Vous
pouvez modifier le CSS qui contrôle les boîtes afin que les trois boîtes enfants étendent
automatiquement leur taille uniformément pour remplir l'espace disponible dans la boîte
flexible. Vous pouvez également modifier une boîte enfant, telle que Enfant3, pour qu'elle
puisse remplir l'espace, comme illustré dans la figure 5-6.
Figure 5-6
Modification de la troisième
boîte enfant pour remplir
l'espace vide disponible
La valeur de taille préférée peut être une valeur valide pour la propriété height et width
CSS, comme 100px. Si vous ne spécifiez pas de valeur de taille préférée, la valeur par
défaut est 0px. Vous pouvez également définir la valeur size souhaitée sur auto, qui utilise
la valeur de la propriété width ou height en tant que la taille par défaut.
Le mot clé none équivaut à 0 0 auto.
PRÊT POUR LA CERTIFICATION La puissance des éléments flexbox réside dans le fait qu'ils peuvent évoluer librement ou
Comment une boîte ajuster de façon dynamique leurs principales dimensions. La taille de ces éléments
flexible fournit-elle la mise augmente ou diminue selon l'espace disponible dans la boîte flexible dans laquelle ils
à l'échelle proportionnelle résident.
des éléments ?
3.2 Dans le code CSS et le balisage HTML suivants, la boîte flexible contient quatre éléments
flexbox. Chaque enfant a une valeur flex de 1 et est défini sur auto. Lorsque l'utilisateur
modifie la taille de la fenêtre du navigateur, les boîtes enfants doivent se développer et se
réduire en même temps que la boîte parent.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Exemple de boîte flexible enfant</title>
<style>
div { display: flexbox;
outline: 2px solid silver
}
p { flex: 1 auto; margin: 1em;
font-family: sans-serif;
color: white;
background: tomato;
font-weight: bold;
text-align: center;
}
</style>
</head>
<body>
<div>
<p>Il s’agit de la boîte enfant1.</p>
<p>Il s’agit de la boîte enfant2.</p>
<p>Il s’agit de l’enfant3.</p>
<p>Il s’agit de l’enfant4.</p>
</div>
</body>
</html>
Figure 5-7
Boîtes enfants flexibles dans
une boîte parent
<body>
<div>
<p>Il s’agit de la boîte enfant1.</p>
<p>Il s’agit de la boîte enfant2.</p>
<p>Il s’agit de l’enfant3.</p>
</div>
</body>
</html>
La propriété display: La propriété flexbox CSS permet de créer la boîte parent : la boîte
flexible. Un contour argenté est créé pour la boîte flexible, cela vous permet simplement
de la voir dans la fenêtre du navigateur pour les besoins de cet exercice. Les styles de
paragraphe (p) s'appliquent aux éléments flexbox (les boîtes enfants). La propriété flex
applique la flexibilité à chaque boîte enfant. Les éléments ont une largeur de 75 pixels
par défaut. S'il reste de l'espace dans la boîte flexible lorsque la taille de l'écran
augmente, les éléments flexbox s'étendent horizontalement pour remplir l'espace.
L'utilisation d'un contour autour de la boîte flexible (boîte parent) consiste à rendre
l'identification des frontières de la boîte flexible plus facile. Vous n'avez pas à inclure
REMARQUE
* de contour autour des boîtes flexibles dans vos applications ou pages Web.
Figure 5-8
Création d'une boîte flexible
avec des éléments flexbox,
Vous pouvez aussi utiliser la fonction CSS flex avec la propriété CSS height ou width pour
contrôler la hauteur et la largeur des éléments flexbox. La propriété flex et la fonction flex
ont le même comportement, mais utilisent une syntaxe légèrement différente (une fonction
utilise des valeurs entre parenthèses).
L'exercice suivant vous montre comment utiliser la fonction flex et introduit la propriété
flex-wrap. La propriété flex-wrap indique si les boîtes enfants s’agencent automatiquement
sur plusieurs lignes (comme illustré dans la figure 5-9). La propriété flex-wrap utilise les
valeurs nowrap, wrap et wrap-reverse.
Figure 5-9
Exemple d'habillage en
utilisant le flex-wrap :
propriété wrap
Illustration: © MightyIsland/iStockphoto
Comme vous allez le voir, le code CSS utilise les préfixes fournisseurs (-ms-, -moz-, -o- et
-webkit-), qui sont obligatoires pour que la propriété flex-wrap fonctionne. N'oubliez pas, les
préfixes fournisseurs sont fréquemment utilisés pendant la transition à CSS3 pour rendre
le code compatible avec le plus de navigateurs possible.
display: -o-flexbox;
display: -webkit-flexbox;
flex-wrap: wrap;
-ms-flex-wrap: wrap;
-moz-flex-wrap: wrap;
-o-flex-wrap: wrap;
-webkit-flex-wrap: wrap;
height: 200px;
padding: 1em;
color: white;
outline: 2px solid silver;
}
div>div {
width: 75px;
width: -ms-flex(1 75px);
width: -moz-flex(1 75px);
width: -o-flex(1 75px);
width: -webkit-flex(1 75px);
margin: 1em;
height: 100px;
background-color: #b200ff;
font-family: sans-serif;
text-align: center;
line-height: 100px;
font-size: xx-large;
}
</style>
</head>
<body>
<div>
<div>Service 1</div>
<div>Service 2</div>
<div>Service 3</div>
</div>
</body>
</html>
Comme dans le dernier exercice, la propriété display: La propriété flexbox CSS permet de
créer la boîte parent : la boîte flexible. Le deuxième ensemble de styles div (div>div, qui
est simplement une façon abrégée d'appliquer des styles à un groupe d'éléments HTML
sans attribuer de classes) s'applique aux éléments flexbox : dans le code, la propriété
width et la fonction flex contrôlent la largeur des éléments flexbox qui possèdent une
largeur préférée de 75 pixels, mais qui occupent tout l’espace libre disponible lorsque la
taille d’écran augmente. La propriété flex-wrap avec la valeur wrap force les éléments
flexbox à s’agencer automatiquement sur plusieurs lignes dans la boîte flexible.
2. Enregistrez le fichier sous le nom L5-flexfunction-exercise.html et ouvrez-le dans le
navigateur Web. N'oubliez pas de maximiser la fenêtre. Le fichier doit ressembler à la
figure 5-10.
Figure 5-10
Éléments flexbox dans une
boîte flexible parent
122 | Leçon 5
Figure 5-11
La boîte flexible et les
éléments flexbox rétrécissent
lorsque la taille de la fenêtre
du navigateur est réduite
Voici quelques autres propriétés que vous pourriez utiliser assez souvent avec les boîtes flexibles :
• flex-pack : justifie l'alignement des boîtes enfants dans une boîte flexible et réduit
l'espace disponible dans la boîte parent. Cette propriété adopte l’une des quatre
valeurs suivantes : start, end, justify ou center.
• flex-align : définit l'alignement par défaut pour les boîtes enfants, mais avec une
torsion. Si l’orientation de la boîte parent est horizontale, la propriété flex-align
détermine l’alignement vertical des boîtes enfants, et vice-versa.
Une fois que les enfants d'une boîte flexible ont terminé la flexion et si l'espace est
toujours disponible dans la boîte flexible, les enfants peuvent être alignés avec les
propriétés flex-pack et flex-align (ou flex-item-align). La chose la plus importante à retenir est
que vous devez appliquer la propriété flex-pack à la boîte flexible parent dans votre code
CSS et appliquer flex-align aux éléments enfants.
display: -moz-flexbox;
display: -o-flexbox;
display: -webkit-flexbox;
flex-flow: column;
-ms-flex-flow: column;
-moz-flex-flow: column;
-o-flex-flow: column;
-webkit-flex-flow: column;
height: 400px;
padding: 1em;
outline: 2px solid silver;
color: white;
font-family: sans-serif;
font-weight:bold;
}
p{
width: 100px;
margin: 1em;
height: 100px;
background-color: dodgerblue;
text-align: center;
line-height: 100px;
}
</style>
</head>
<body>
<div>
<p>Enfant1</p>
<p>Enfant2</p>
<p>Enfant3</p>
</div>
</body>
</html>
Le résultat du rendu de ce code et le balisage dans le navigateur Web sont illustrés dans la
figure 5-12.
Figure 5-12
Trois boîtes enfants dans
l'ordre numérique
124 | Leçon 5
Pour inverser l'ordre des boîtes enfants, remplacez chacune des valeurs de la colonne
flex-flow par colonne-reverse, comme suit :
flex-flow : column-reverse;
ms-flex-flow : column-reverse;
-moz-flex-flow : column-reverse;
-o-flex-flow : column-reverse;
webkit-flex-flow : column-reverse;
Comparez la figure 5-13 à la figure 5-12 pour voir les effets de la valeur reverse.
Figure 5-13
Les mêmes boîtes enfants
dans l'ordre inverse
-webkit-flex-flow: column;
height: 400px;
padding: 1em;
outline: 2px solid silver;
color: white;
font-family: sans-serif;
font-weight: bold;
}
p{
width: 300px;
margin: 1em;
height: 100px;
background-color: olive;
text-align: center;
line-height: 100px;
}
</style>
</head>
<body>
<div>
<p>Pierre</p>
<p>Papier</p>
<p>Ciseaux</p>
</div>
</body>
</html>
Figure 5-14
Boîte flexible avec des
éléments flexbox orientée
verticalement
3. Ouvrez le fichier dans chacun des autres principaux navigateurs Web pour voir s'il se
restitue correctement.
126 | Leçon 5
4. Dans le fichier HTML, inversez l'ordre des colonnes à l'aide de la valeur flex-flow:
column-reverse, comme suit :
flex-flow : column-reverse;
ms-flex-flow : column-reverse;
-moz-flex-flow : column-reverse;
-o-flex-flow : column-reverse;
-webkit-flex-flow: column-reverse;
Figure 5-15
Les éléments flexbox sont
dans l'ordre inverse
6. Ouvrez le fichier dans chacun des autres principaux navigateurs Web pour voir s'il se
restitue correctement.
7. Fermez le fichier, mais laissez l'outil d'édition et le navigateur Web ouverts si vous passez
à l'exercice suivant au cours de cette session.
display: -moz-flexbox;
display: -o-flexbox;
display: -webkit-flexbox;
flex-flow: row;
-ms-flex-flow: row;
-moz-flex-flow: row;
-o-flex-flow: row;
-webkit-flex-flow: row;
height: 200px;
padding: 1em;
background-color: palegoldenrod;
font: bold 100%/1 sans-serif;
}
div>div {
width: 100px;
margin: 1em;
height: 100px;
background-color: dodgerblue;
text-align: center;
color: white;
font-size: x-large;
line-height: 100px;
}
</style>
</head>
<body>
<div>
<div>Clés</div>
<div>Téléphone</div>
<div>Portefeuille</div>
</div>
</body>
</html>
L'ouverture du fichier dans le navigateur affiche les résultats indiqués la figure 5-16.
Figure 5-16
Trois boîtes enfants dans
une boîte flexible avec une
orientation horizontale
L'élément de style HTML précédent comprend l'attribut media=screen, qui est une
requête de média. Les requêtes de média vous permettent d'adapter un document
HTML aux périphériques des utilisateurs Parmi les types d'élément multimédia HTML
REMARQUE
* on trouve aural, braille, handheld, print, projection, screen, tty et tv. La même syntaxe
peut également être utilisée avec les règles CSS @media et @import. La règle @media all
indique que le CSS doit être appliqué à tous les médias de sortie.
La propriété flex-order place les boîtes enfants dans des groupes ordonnés. Le groupe par
défaut est 0. Vous devez déclarer des groupes et leur assigner un numéro en CSS en
utilisant la propriété flex-order et tous les éléments enfants qui ne sont pas explicitement
affectés à un groupe restent dans le groupe 0. Les groupes déclarés apparaissent avant le
128 | Leçon 5
groupe 0. Donc, pour réorganiser les boîtes enfants afin que les boîtes Clés et Portefeuille
apparaissent avant la boîte Téléphone, ajoutez ce code au bas de la section de style :
div>div:first-child,
div>div:last-child {
flex-order: 1;
-ms-flex-order: 1;
-moz-flex-order: 1;
-o-flex-order: 1;
-webkit-flex-order: 1;
}
L'ouverture du fichier dans le navigateur Web donne les résultats indiqués dans la
figure 5-17.
Figure 5-17
Réorganisation des boîtes
enfants dans une boîte
parent
EXPLORER LA PROPRIÉTÉFLEX-ORDER
PRÉPAREZ-VOUS. Pour explorer la propriété flex-order, procédez comme suit :
1. Dans un outil d'édition ou un outil de développement d'application, créez un
document HTML basé sur le code précédemment illustré dans la figure 5-16.
2. Enregistrez le fichier sous le nom L5-flexorder-exercise.html.
3. Ajoutez le code suivant à la fin de la section de style :
div>div:first-child,
div>div:last-child {
flex-order: 1;
-ms-flex-order: 1;
-moz-flex-order: 1;
-o-flex-order: 1;
-webkit-flex-order: 1;
}
4. Enregistrez le fichier et affichez-le dans un navigateur Web. Il devrait ressembler à
celui de la figure 5-17.
5. Ouvrez le fichier dans chacun des autres principaux navigateurs Web pour voir s'il se
restitue correctement. Notez les navigateurs qui prennent en charge les propriétés
flex-flow et flex-order.
6. Fermez le fichier, mais laissez l'outil d'édition et le navigateur Web ouverts si vous
passez à l'exercice suivant au cours de cette session.
Les dispositions en grille sont plus adaptées à des dispositions plus complexes qu'une boîte
flexible peut facilement gérer. Les interfaces de jeu sont de bonnes candidates pour les grilles,
Présentation des notions essentielles sur les feuilles de style en cascade CSS : Dispositions | 129
tout comme les mises en page de journal (voir la figure 5-18). Une disposition en grille permet
de positionner des lignes et des colonnes pour un contrôle précis de la mise en page et
nécessite une fraction du code CSS comme avec les anciennes techniques. La modularité est
un autre avantage des grilles. Pour déplacer des blocs de contenu d'un côté d'une page ou d'une
application à un autre, il vous suffit de déplacer certaines lignes de code dans CSS.
Figure 5-18
Mise en page de journal
à l'aide d'une grille
Vous devez définir un élément grid (layout) en utilisant la propriété CSS grid display:grid
ou display:inline-. Cela crée le conteneur pour la disposition.
Les éléments enfants d'une grille sont appelés éléments de grille, vous pouvez les
PRÊT POUR LA CERTIFICATION positionner et dimensionner en fonction de ce qui suit :
Comment une disposition • Tracés de la grille : les colonnes et les lignes de la grille ; vous devez définir les
en grille est-elle utilisée tracés de la grille à l'aide des propriétés grid-rows et grid-columns
pour établir l'orientation,
la direction et l'alignement • Lignes de la grille : lignes horizontales et verticales qui divisent les colonnes ou les lignes
du contenu ? • Cellules de la grille : espace logique utilisé pour organiser les éléments de grille,
3.2 semblable à une cellule dans une feuille de calcul
Les propriétés grid et leurs valeurs sont répertoriées dans le tableau 5-2.
Tableau 5-2
Valeurs et propriétés Propriété Valeur Description
d'une grille
Propert grid-columns length Spécifie les paramètres pour
ou percentage une ou plusieurs colonnes ou
grid-rows fraction lignes dans une grille
max-content
min-content
minmax
(min, max)
auto
grid-template string+ Offre une visualisation de la
none structure de l'élément grid et
définit les cellules de la grille
grid-cell string Positionne un élément enfant à
none l'intérieur d'une cellule de grille
nommée
grid-column [integer or Place des éléments enfants dans
ou string start] une grille
grid-row [integer or
string end]
auto
grid-column-span integer Définit les dimensions d'une
ou cellule de grille en spécifiant la
grid-row-span distance (en lignes) entre la
ligne de début à la ligne de fin
(suite)
130 | Leçon 5
Tableau 5-2
(suite) Propriété Valeur Description
grid-column-sizing track-minmax Modifie la taille des colonnes ou des
ou lignes implicites, qui sont dimensionnés
grid-row-sizing automatiquement par défaut
grid-flow none Crée des colonnes ou des lignes
rows supplémentaires pour recevoir du
columns contenu
grid-column-align start Contrôle l'alignement de l'élément
ou end enfant dans une cellule
grid-row-align center
stretch
Avec toutes les propriétés disponibles il est donc évident que vous pouvez spécifier la
structure de l'élément grid, positionner et dimensionner des éléments de grille de plusieurs
façons.
Création d'une grille à l'aide de propriétés CSS pour les lignes et colonnes
Les principales propriétés qui créent une grille sont display:grid (ou display:inline-grid), grid-
columns et grid-rows.
Vous pouvez définir une taille fixe pour les colonnes et les lignes, ainsi elles ne sont pas
redimensionnées lorsque la taille de l'écran change, ou définir une taille fractionnaire par
rapport à la grille. Les tailles fractionnaires sont définies avec fr, ainsi, une ligne définie
avec 2fr présentera une taille deux fois supérieure à la taille d’une ligne définie avec 1fr.
La valeur 1fr est l'abréviation de « une fraction ». Vous pouvez également utiliser la valeur « auto »
PRÊT POUR LA CERTIFICATION
pour que des colonnes ou des lignes s'adaptent à leur contenu.
Quelles sont les propriétés Le code CSS suivant et le balisage HTML fournissent un exemple de présentation de la
CSS pour les colonnes et grille. Le préfixe fournisseur - ms- est inclus au début de toutes les constructions liées à la
les lignes de la grille ?
grille parce que, à ce jour, seul Microsoft Internet Explorer 10 prend en charge les disposi-
3.2
tions en grille. Ceci est illustré dans la figure 5-19.
Figure 5-19
Disposition en grille simple
Présentation des notions essentielles sur les feuilles de style en cascade CSS : Dispositions | 131
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Exemple de grille</title>
<style type="text/css">
#grid {
background: palegoldenrod;
border: silver;
display: -ms-grid;
color: white;
font-family: sans-serif;
font-weight: bold;
-ms-grid-columns: 150px auto 2fr;
-ms-grid-rows: 50px 6em auto;
}
#logo {
background: dodgerblue;
-ms-grid-row: 1;
-ms-grid-column: 1;
}
#item {
background: olive;
-ms-grid-row: 2;
-ms-grid-column: 2;
}
</style>
</head>
<body>
<div>
<div id="grid">
<div id="logo">Logo</div>
<div id="item">Article</div>
</div>
</div>
</body>
</html>
Dans cet exemple, la structure de la grille a trois colonnes et trois lignes. La première
colonne a une largeur fixe de 150 pixels. La largeur de la deuxième colonne s'ajuste en
fonction du contenu, comme indiqué par le mot clé auto. La troisième colonne correspond
à deux unités de fraction de l’espace restant dans la grille.
La première ligne est de 50 pixels de haut, la deuxième ligne est de 6 ems de haut, et la
troisième ligne s'ajuste en fonction du contenu.
4. Ajoutez un autre élément à la grille afin qu'une cellule s'affiche dans la troisième ligne
et la troisième colonne. Pour ce faire, insérez le texte suivant à la fin de la section de
style :
#item2 {
background: orange;
-ms-grid-row: 3;
-ms-grid-column: 3;
}
5. Insérez le texte suivant après l'élément div dans la section body :
<div id="item2">Article2</div>
6. Réenregistrez le fichier et affichez-le dans un navigateur Web. La disposition doit se
présenter comme dans la figure 5-20.
Figure 5-20
Troisième élément ajouté
à la grille
✚ PLUS D’INFORMATIONS
Pour plus d'informations sur les dispositions en grille, visitez la page « Disposition en grille CSS » sur
http://www.w3.org/TR/css3-grid-layout/.
Bien que cet exemple utilise le mot clé auto, vous pouvez utiliser les valeurs grid-rows et
grid-colums comme indiqué dans le tableau 5-2.
Les spécifications pour les dispositions de modèle de grille sont semblables à des ébauches
et ne sont pas prises en charge par les navigateurs Web au moment de la rédaction de ce
document. Cependant, vous pourriez rencontrer des modèles de grille pour l'examen MTA
98-375. Vous devriez donc vérifier la dernière spécification du module des modèles de
disposition en grille CSS du groupe W3C lors de la préparation de l'examen.
6. Quelle propriété flexbox permet d’affecter des éléments enfants à des groupes pour
contrôler la disposition à l’intérieur d’une boîte flexible ?
a. flex
b. flex-group
c. flex-direction
d. flex-order
7. Parmi les propriétés suivantes, laquelle permet de placer des éléments enfants dans
une grille ?
a. grid-columns
b. grid-column
c. grid-flow
d. grid-pack
8. Parmi les propositions suivantes, laquelle permet d’adapter un document HTML aux
périphériques des utilisateurs ?
a. Requêtes multimédias
b. Modèle de boîte CSS
c. Propriété grid-template
d. @import
9. Parmi les propositions suivantes, laquelle correspond à la meilleure utilisation d’une
disposition en grille ?
a. Menu
b. Barre d’outils
c. Pied de page
d. Interface de jeu
10. Quelle est la fonction principale d’un modèle de grille ?
a. Appliquer un style à une grille
b. Créer une table pour recueillir des données
c. S’assurer que la grille possède un nombre égal de colonnes et de lignes
d. Aucune des réponses ci‑dessus
Vrai/Faux
Entourez la lettre V si l'affirmation est vraie ou la lettre F si elle est fausse.
V F 1. Une boîte flexible est définie par un élément avec les propriétés CSS
display:boxflex ou display:inline-boxflex.
V F 2. Une boîte parent peut contenir une ou plusieurs boîtes enfants.
V F 3. Vous ne pouvez pas inverser l’ordre des boîtes enfants à l’intérieur d’une boîte
flexible.
V F 4. Une boîte flexible nécessite un contour ou une couleur d’arrière-plan.
V F 5. Une disposition en grille convient davantage à un journal en ligne ou un jeu vidéo.
questions. Elle décide d’utiliser une disposition flexible, mais n’a aucune expérience
avec HTML5 ou CSS. Elle est assez frustrée de ne pas comprendre les détails des boîtes
flexibles et des éléments flexbox. Que pouvez-vous dire à Mlle Takeet ?
TERMES CLÉS
césure flow-into
conteneur de contenu flux nommé
disposition multicolonne iframe
élément flottant positionné régions CSS
exclusions CSS source de contenu
flow-from
137
138 | Leçon 6
Les éditeurs de logiciels comme Adobe et Microsoft ont su paramétrer avec une grande
précision la mise en page complexe de publications imprimées telles que les magazines, les
journaux et les livres. Adobe InDesign, Microsoft Publisher et même Microsoft Word 2010
gèrent de manière efficace l'enchaînement du contenu dans les colonnes. InDesign et
Publisher sont particulièrement efficaces lorsqu'il s'agit de répartir le contenu dans les zones
non contiguës (adjacentes) d'un document, parfois séparées par des images, des boîtes de
contenu voire des pages. Les logiciels de publication assistée par ordinateur permettent
d'enchaîner facilement le contenu entre les différentes zones. Ainsi, lorsqu'une zone est
modifiée, le contenu est correctement redistribué dans les autres zones connectées.
Depuis des années, l'enchaînement du contenu de documents HTML représentait un
véritable défi pour les concepteurs Web et les concepteurs d'applications. Dans un document
HTML, l'affichage d'une disposition complexe requiert le même positionnement flexible de
boîtes que celui offert par les logiciels de publication assistée par ordinateur, mais les outils
nécessaires pour ce type d'enchaînement ne sont disponibles que depuis très peu de temps.
PRÊT POUR LA CERTIFICATION Microsoft et Adobe ont collaboré avec le groupe W3C pour créer le concept de régions CSS
Comment faut-il pour l'enchaînement de contenu Web. Les régions CSS permettent aux développeurs d'organiser
utiliser CSS pour gérer le de manière dynamique le contenu de plusieurs boîtes, ou conteneurs, dans les documents HTML
flux de contenu de texte avec des dispositions fluides. Le contenu s'adapte et s'affiche correctement, que l'utilisateur
dans un document HTML ? consulte le document sur un moniteur d'ordinateur de grand format ou sur l'écran d'une tablette.
3.3 Si CSS3 permet d'utiliser la disposition multicolonne pour répartir le contenu dans
plusieurs colonnes (voir la figure 6-1), les régions CSS permettent de mieux contrôler
l'enchaînement du contenu dans le cas de dispositions plus complexes. Pour combiner
les régions CSS, vous devez utiliser des techniques de disposition CSS, notamment les
colonnes, les boîtes flexibles et les dispositions en grille.
Figure 6-1
Disposition Web avec des
colonnes
✚ PLUS D’INFORMATIONS
Pour plus d'informations sur les régions CSS, la césure et la disposition à plusieurs colonnes, Microsoft
et Adobe proposent des ressources qu'il est utile de consulter. Rich page layout with HTML et CSS3 »
(Régions CSS3 : Mise en page enrichie avec HTML et CSS3) à l'adresse http://adobe.ly/kN7MUy. Pour
accéder aux informations fournies par Microsoft, consultez la page Web « CSS » à l'adresse http://
msdn.microsoft.com/fr-fr/library/hh673536(v=VS.85).aspx.
Gestion de l’enchaînement du texte avec CSS | 139
Dans un document HTML standard, vous pouvez afficher le contenu dans différentes sections
ou zones, mais chaque zone est indépendante. Pour faire passer le texte de débordement
d'une zone à l'autre, l'opération est généralement manuelle. Cette méthode ne convient pas
vraiment à une situation dans laquelle un utilisateur redimensionne l'écran ou utilise des outils
d'accessibilité, par exemple une loupe. Cette méthode ne permet pas non plus de basculer
automatiquement entre le mode portrait et le mode paysage sur les tablettes et les smartphones.
Les régions CSS représentent une solution à ce problème.
Les régions CSS représentent des zones (régions) définies d'un document HTML dans
lesquelles le contenu peut être réparti. Comme pour les programmes de mise en page, lorsque
le contenu est trop volumineux pour s’insérer dans une région, le reste du contenu passe
automatiquement dans la région suivante. (Voir la figure 6-2.) Si un utilisateur redimensionne
PRÊT POUR LA CERTIFICATION
l'écran sur lequel le document est affiché, ou s'il affiche le document sur un écran plus petit ou
Que sont les régions CSS ? plus grand, le contenu est redimensionné et se redéroule automatiquement dans les diverses
3.3 régions.
Figure 6-2
Flux de contenu avec les
régions CSS
Il n'est pas nécessaire que les régions soient adjacentes dans le document, et vous
pouvez contrôler l'ordre dans lequel le contenu inséré s'affiche. La figure 6-3 illustre
l'enchaînement d'un contenu dans des régions non contiguës. Ce type d'enchaînement
est semblable à l'« enchaînement d'un article » ; il permet d'ajouter des citations et des
encadrés à un document sans affecter l'enchaînement du contenu.
Figure 6-3
Flux de contenu non contigu
entre les régions
140 | Leçon 6
Pour implémenter des régions CSS, vous devez spécifier une source de contenu et
des conteneurs de contenu. Ces deux tâches sont effectuées à l'aide des propriétés CSS
flow-into et flow-from .
.region {
flow-from: main;
background: #9ACD32;
}
</style>
<body>
<div id="source">
<p>Lorem ipsum dolor ...</p>
</div>
<div id="region1" class="region"></div>
<div id="region2" class="region"></div>
<div id="region3" class="region"></div>
</body>
Le W3C définit les régions CSS dans la spécification relative aux régions CSS, encore
en cours de rédaction à ce jour. Ainsi, à l'instar des boîtes flexibles et des grilles décrites
REMARQUE
* dans la leçon 5, il convient d'utiliser le préfixe du fournisseur avec les noms de propriétés.
L'utilisation du préfixe de fournisseur est abordée dans l'exercice étape par étape suivant.
les conteneurs de contenu se trouvent dans le même document HTML pour plus de
commodité. Dans une application réelle, vous utiliserez probablement un document
HTML distinct pour la source et les conteneurs.)
Lorsqu'un navigateur affiche la page avec les conteneurs de contenu, le contenu est
réparti dans les conteneurs et s'affiche à l'écran, comme illustré à la figure 6-4. Si vous
redimensionnez l'écran, le contenu se redéroule tel qu'illustré à la figure 6-5.
Figure 6-4
Flux de contenu dans des
conteneurs
Figure 6-5
Le redimensionnement de
l'écran redéroule le contenu
Vous pouvez également utiliser plusieurs sources et affecter la propriété flow-into à plusieurs
éléments. Le contenu est extrait de la source dans l'ordre dans lequel il apparaît dans le
modèle DOM (Document Object Model). C'est ce que l'on appelle l'ordre des documents.
Le modèle DOM a été présenté dans la leçon 1, mais il est utile d'y revenir ici. Le
modèle DOM est une spécification du W3C qui décrit la structure des documents
HTML et XML (Extensible Markup Language) de manière à permettre à un navigateur
REMARQUE
* Web de les manipuler. Le modèle DOM permet aux programmes et aux scripts de
mettre à jour le contenu, la structure et les styles à la volée ; n'importe quel élément
d'un fichier HTML ou XML peut ainsi être modifié.
142 | Leçon 6
DÉBORDEMENT DU TEXTE
Afin que les régions CSS fonctionnent, l'enchaînement du contenu ne doit pas affecter la
hauteur d'une région ; vous devez définir la hauteur des régions dans CSS de manière à ce
qu'elles ne soient pas flexibles. Une région reçoit autant de contenu que possible, puis le
reste du contenu est inséré dans la région suivante.
S'il reste du contenu une fois toutes les régions remplies, l'un des trois scénarios suivants
peut se produire. L'excès de contenu de la dernière région peut :
• Être tronqué
• Continuer à déborder et être visible
• Continuer à déborder, mais être masqué
Vous pouvez contrôler la façon dont la dernière région gère le débordement du contenu
à l'aide des propriétés region-overflow et overflow.
region-overflow a la valeur auto ou break. À l'aide de la valeur auto, vous définissez la
propriété overflow du contenu selon que celui-ci doit être visible ou masqué. Par exemple,
si vous souhaitez que le contenu continue à déborder et qu'il soit visible, utilisez la
syntaxe suivante :
.region {
region-overflow:auto;
Débordement visible
}
La figure 6-6 montre le contenu visible qui déborde au-delà de la dernière région.
Figure 6-6
Débordement de contenu
visible
L'exemple suivant illustre un élément iframe avec un ID unique, que vous ajoutez à une
page maître :
Ensuite, vous créez le flux nommé à l'aide d'un sélecteur CSS qui spécifie la source de
données :
Pour créer des conteneurs de contenu, assignez un nom de classe aux éléments que vous
souhaitez utiliser en tant que conteneurs :
<div class="region"></div>
<div class="region"></div>
L'utilisation de region dans les deux cas n'est pas une erreur ! Tout comme pour
l'application d'une règle CSS, vous pouvez identifier les régions à l'aide d'un nom de
REMARQUE
* classe partagé (comme dans cet exemple) ou les répertorier à l'aide d'ID individuels
(comme dans le premier exemple).
Si vous comparez ces code et balisage spécifiques à Microsoft à l'exemple général illustré
précédemment, il est possible d'identifier assez aisément les similitudes.
Il convient de noter plusieurs autres éléments se rapportant à la version de Microsoft des
régions CSS, certains pouvant figurer dans l'examen 98-375 :
Vous rencontrerez peut-être ces éléments lorsque vous recherchez ou développez des
régions CSS pour Windows 8 ou Internet Explorer 10.
body{
famille de polices sans serif;
color: black;
font-size: large;
}
#source{
-webkit-flow-into: main;
}
.region{
-webkit-flow-from: main;
margin: 0 25px 0 0;
background: #EEE8AA;
padding: 20px;
}
#region1{
width: 20%;
height: 50%;
float: left;
}
#region2{
width: 20%;
height: 50%;
float: left;
}
#workarea{
position: absolute;
padding: 25px;
}
</style>
</head>
<body>
<div id="source">
<p>Lorem ipsum dolor . . . mollis a ipsum.</p>
</div>
<div id="workarea">
<div id="region1" class="region"></div>
<div id="region2" class="region"></div>
</div>
</body>
</html>
Les points de suspension (. . .) du paragraphe Lorem ipsum signifient qu'une partie du
contenu a été omise à des fins de présentation. Dans votre document HTML, incluez
un paragraphe de texte factice comportant entre 8 et 10 lignes.
2. Enregistrez le fichier sous L6-regions-exercise.html.
3. Appliquez le style gras à quelques mots, au milieu du paragraphe environ.
4. Réenregistrez le fichier.
Gestion de l’enchaînement du texte avec CSS | 145
5. Notez que le code CSS utilise le préfixe de fournisseur -webkit- . Vous devez utiliser un
indicateur de ligne de commande pour activer les régions CSS dans le navigateur. Pour ce
faire, sélectionnez Démarrer, tapez le nom du navigateur dans la zone Rechercher, cliquez
avec le bouton droit de la souris sur le nom du navigateur dans la liste de résultats, puis
sélectionnez Propriétés. La boîte de dialogue Propriétés s'affiche. Dans le champ Cible,
positionnez le curseur à la fin du champ, entrez un espace et tapez --enable-css-regions.
6. Cliquez sur OK.
7. Ouvrez le fichier L6-regions-exercise.html dans le navigateur Web. Redimensionnez la
fenêtre du navigateur de façon à ce que le contenu s'affiche dans les conteneurs et
que le contenu en gras soit positionné dans le conteneur de gauche. Les résultats
doivent ressembler à ceux de la figure 6-7.
Figure 6-7
Enchaînement de contenu
dans des conteneurs de
régions CSS
✚ PLUS D’INFORMATIONS
Reportez-vous à la page Web « CSS Regions Module Level 3 » du W3C à l'adresse http://www.w3.org/
TR/2012/WD-css3-regions-20120823// pour obtenir les dernières informations sur l'implémentation
des régions CSS. Vous pouvez réaliser un exercice pratique à l'aide des régions CSS sur le site Web de
Microsoft à l'adresse http://bit.ly/veOZX2. Cette page peut nécessiter l'utilisation d'Internet Explorer 10
pour un rendu correct).
CSS3 vous permet de créer des dispositions à plusieurs colonnes dont le fonctionnement est
similaire à celui de la fonctionnalité de colonnes de Microsoft Word. Vous pouvez également
activer la césure afin de couper correctement les mots à la fin des lignes. Ceci évite que les
longs mots sautent à la ligne suivante, laissant un espace à la fin de la ligne précédente.
Parmi les nouvelles fonctionnalités de CSS3 figurent la césure et les dispositions à plusieurs
colonnes. À l'instar des journaux, vous pouvez maintenant créer des documents HTML
comportant plusieurs colonnes qui sont redimensionnées en fonction de la taille de l'écran de
l'utilisateur. La césure permet de couper les mots entre les syllabes en fin de ligne, de façon
à créer une marge droite plus uniforme et éliminer les espaces vides dans les paragraphes.
146 | Leçon 6
CRÉATION DE COLONNES
Les propriétés CSS3 d’une disposition multicolonne permettent de créer des colonnes
en répartissant le texte sur plusieurs colonnes, de spécifier l’espace entre les colonnes
(espacement), d'afficher des lignes verticales (règles) entre les colonnes et de définir la
position des sauts de colonne.
Les principales propriétés CSS utilisées pour créer et manipuler plusieurs colonnes d'un
document HTML sont les suivantes :
• column-count : définit le nombre de colonnes que doit comporter un élément ; peut
également utiliser la propriété columns avec les valeurs de propriétés set column-
count et column-width simultanément
• column-gap : spécifie l'espacement entre les colonnes, également appelée reliure
• column-rule : crée une ligne verticale dans l'espace qui sépare les colonnes et définit la largeur,
le style (ligne simple ou double, trait, pointillés, 3D, etc.) et la couleur de la règle
La disposition multicolonne CSS3 utilise le concept de la « zone de colonnes » pour
désigner le conteneur qui renferme le contenu et l'affiche dans des colonnes. La zone de
colonnes se trouve entre la zone de contenu et le contenu dans le modèle de boîte CSS
original. (Reportez-vous à la leçon 5 si vous souhaitez passer en revue les informations se
rapportant au modèle de boîte.)
Le tableau 6-1 répertorie toutes les propriétés de colonne qui fonctionnent dans CSS3.
Tableau 6-1
Propriétés multicolonnes Propriété Valeur Description
utilisées dans CSS3
break-after auto Insère un saut de ligne après la zone de
always colonnes générée
avoid
left
right
page
column
region
avoid-page
avoid-column
avoid-region
break-before (identique à Insère un saut de ligne avant la zone de
break-after) colonnes générée
break-inside auto Insère un saut de ligne à l'intérieur de la
avoid zone de colonnes générée
avoid-page
avoid-column
avoid-region
column-count integer Définit le nombre de colonnes utilisées
auto par un élément
column-fill auto Définit comment les colonnes sont
balance remplies ; répartit le contenu de manière
uniforme entre les colonnes, si possible,
ou les remplit de manière séquentielle
(suite)
Gestion de l’enchaînement du texte avec CSS | 147
Tableau 6-1
Suite Propriété Valeur Description
column-gap length Spécifie l'espacement entre les colonnes
normal
column-rule column-rule-width Propriété abrégée qui définit les proprié-
column-rule-style tés column-rule-width, column-rule-style
column-rule-color et column-rule-color au même emplace-
transparent ment dans une feuille de style
column-rule-color color Spécifie la couleur de la règle entre les
colonnes
column-rule-style border-style Spécifie le style de la règle entre les
colonnes, par exemple ligne unie, ligne
double, pointillés et ainsi de suite
column-rule-width border-width Spécifie la largeur de la règle entre les
colonnes
column-span none Spécifie si un élément doit s'étendre sur
all aucune colonne ou toutes les colonnes
column-width length Spécifie la largeur d'une ou de plusieurs
auto colonnes
columns column-width Définit à la fois les propriétés column-
column-count width et column-count
<body>
<h2>Trois colonnes</h2>
<div class="tricolumn">
Lorem ipsum . . . orci.
</div>
</body>
Les résultats doivent ressembler à ceux de la figure 6-8 dans le navigateur Web de Mozilla
Firefox.
Figure 6-8
Trois colonnes
Vous pouvez créer plusieurs colonnes à l'aide de la propriété columns Cette propriété
permet de définir rapidement le nombre de colonnes et leur largeur dans une même
déclaration. Le code suivant utilise la valeur auto pour la largeur des colonnes :
.tricolumn { columns: 3 auto; }
Une autre façon d'utiliser la propriété columns consiste à affecter une valeur numérique
à column-width et à laisser la valeur column-count à auto. L'exemple suivant définit column-
width sur 15em, ce qui signifie que l'élément à plusieurs colonnes aura une largeur de
colonne de 15 ems (ou 15 fois la largeur de la taille de police du contenu de la colonne) :
columns: auto 15em;
Ajoutons maintenant une règle aux colonnes. Cette propriété définit la largeur, le style et
la couleur de la règle entre toutes les colonnes. La syntaxe utilisée pour une ligne bleue
pointillée de 3 pixels de large est la suivante :
column-rule: 3px dashed blue;
Pour contrôler la taille de l'espacement entre les colonnes, utilisez la propriété column-gap .
Cette propriété utilise une valeur entière, comme illustré ci-dessous, ou le mot clé normal.
column-gap: 3em;
L'effet combiné de trois colonnes avec une règle de colonne et un espacement de 3em est
illustré à la figure 6-9 (avec les préfixes de fournisseur appliqués). Le redimensionnement
de la fenêtre du navigateur entraîne également le redimensionnement des colonnes et la
redistribution du contenu dans celles-ci, comme illustré dans la figure 6-10.
Figure 6-9
Trois colonnes avec un
espacement et une règle
de taille supérieure
Figure 6-10
Le redimensionnement de
la fenêtre du navigateur
modifie les colonnes
Pour spécifier si un élément tel qu'un titre doit couvrir plusieurs colonnes, utilisez la
propriété column-span. Cette propriété est définie sur le nombre de colonnes sur lequel
Gestion de l’enchaînement du texte avec CSS | 149
l'élément doit s'étendre ou utilise les mots clés all ou none , selon que l'élément s'étend sur
toutes les colonnes ou ne s'étend sur aucune colonne, respectivement.
column-span: all;
Comme vous le voyez, les propriétés liées aux colonnes permettent un affichage souple du
contenu, avec un nombre minimum de déclarations CSS.
Figure 6-11
Résultats de l'exercice
comportant trois colonnes
150 | Leçon 6
✚ PLUS D’INFORMATIONS
Pour en savoir plus sur les dispositions à plusieurs colonnes, consultez la section « Multi-column regions »
de la page Web « CSS Regions Module Level 3 » à l'adresse http://bit.ly/IA03vV, ainsi que la page Web du
site W3schools.com se rapportant à la disposition multicolonne CSS3 à l'adresse http://bit.ly/KpY0Gz.
UTILISATION DE LA CÉSURE
La césure désigne le processus permettant de connecter deux mots à l’aide d’un tiret (-)
ou de couper les mots entre les syllabes en fin de ligne. La césure est particulièrement
utile pour les dispositions utilisant plusieurs colonnes, car elle permet d'éliminer les
espaces vides dans les colonnes lorsque les longs mots sautent automatiquement à la ligne
PRÊT POUR LA CERTIFICATION suivante, ce qui produit un texte d'apparence plus professionnelle. En général, la césure
Comment activer la césure automatique tente de justifier le texte sur la marge de droite.
dans un document HTML à
CSS3 inclut désormais la propriété hyphens qui contrôle la césure. La propriété utilise les
l'aide de CSS ?
3.3
valeurs none, manual, et auto:
• auto : active la césure automatique des mots, en fonction des possibilités de saut de
ligne dans les mots ou à l'aide d'une « ressource de césure spécifique à la langue »
• manual : active la césure uniquement en fonction des possibilités de saut de ligne dans les mots
• none : empêche la césure
Le W3C souligne l'obligation de déclarer une langue à l'aide des attributs HTML lang
ou XML xml:lang pour garantir une césure automatique correcte. Ceci signifie que si la
totalité de votre document HTML utilise la même langue (français, par exemple) et que
REMARQUE
* vous souhaitez activer la césure automatique, vous devez ajouter l'attribut à votre élément
Une liste des codes de
HTML ou déclaration doctype, par exemple :
langue est disponible
sur la page Web <!doctype html>
« HTML Language <html lang="fr-fr">
Code Reference » du ou
site W3schools.com à
<html xmlns="http://www.w3.org/1999/xhtml"
l'adresse http://www.
xml:lang="fr" lang="fr">
w3schools.com/tags/
ref_language_codes.asp Vous devez inclure le préfixe du fournisseur avec la propriété hyphens, par exemple -ms-
hyphens pour Internet Explorer 10, -moz-hyphens pour Firefox et ainsi de suite.
Figure 6-12
Zone de césure
Le balisage suivant avec CSS inline utilise la propriété -ms-hyphens dont la valeur est
définie sur auto :
<!doctype html>
<html lang="fr-fr">
<body>
<div style="width: 200px;
border: 2px solid orange;">
Figure 6-13
Propriété -ms-hyphens rendue
dans Internet Explorer 10
152 | Leçon 6
Bien que Microsoft propose plusieurs propriétés se rapportant à la césure dans les
applications Internet Explorer 10 et Windows 8, la spécification du W3C relative à la
*
REMARQUE césure continue d'évoluer. Actuellement, les travaux du W3C portent sur les propriétés
hyphenate-character, hyphenate-limit-zone, hyphenate-limit-word, hyphenate-limit-lines, et
hyphenate-limit-last.
<!doctype html>
<html lang="fr-fr">
<head>
<meta charset="utf-8" />
<title>Exemple de césure</title>
</head>
<body>
<div style="width: 200px;
border: 2px solid orange;">
✚ PLUS D’INFORMATIONS
Pour plus d'informations sur la césure, reportez-vous à la section « Hyphenation » (Césure) de la
page « CSS Text Level 3 » du W3C à l'adressehttp://www.w3.org/TR/css-text-3/#hyphens. Microsoft
fournit des informations sur les propriétés de césure spécifiques à Internet Explorer à l'adresse
http://bit.ly/IQpgj4.
Vous avez peut-être remarqué que des éléments flottants ont été utilisés dans l'exercice sur
les régions précédemment dans la leçon. La valeur left a été affectée aux deux éléments
flottants, ce qui les fait apparaître côte à côte lors de l'affichage. Le positionnement était
effectué par rapport au reste du document. En outre, si vous ne spécifiez pas la hauteur ou
la largeur d'un élément flottant, celui-ci est automatiquement redimensionné pour s'adapter à
PRÊT POUR LA CERTIFICATION son contenu.
Qu'est-ce qu'un élément
flottant positionné ou une Les exclusions CSS vous permettent de contrôler avec une grande précision la position d'un
exclusion CSS ? élément flottant, à une distance spécifiée à partir du haut, du bas, du côté gauche ou droit
3.3 d'un conteneur. Vous pouvez également créer un élément flottant de n'importe quelle forme :
rectangulaire, circulaire, triangulaire et n'importe quelle forme intermédiaire. Les autres
éléments du document s'agencent simplement autour de l'exclusion.
L'exemple d'exclusions CSS illustré dans la figure 6-14 utilise une disposition à plusieurs
colonnes avec une exclusion (référencée en tant qu'élément flottant positionné sur le site
Web) au milieu. Vous pouvez déplacer la boîte n'importe où dans la disposition de l'exemple
et voir comment le texte s'enroule automatiquement autour de la boîte bleue.
Figure 6-14
Élément flottant positionné
dans une disposition
multicolonne dans
Internet Explorer 10
La figure 6-15 est un autre exemple d'exclusions dans lequel le texte entoure un cercle
au milieu d'un paragraphe. Cette image inclut une marge autour du cercle, mais le texte
pourrait épouser directement le contour du cercle.
Figure 6-15
Conteneur personnalisé sous
la forme d'un cercle
154 | Leçon 6
Tableau 6-2
Propriétés des exclusions CSS Propriété Valeur Description
shape-outside auto Crée la forme générale d'une exclusion
shape
url
shape-inside outside-shape Modifie le contenu d'une forme
auto
shape
uri
wrap wrap-flow Méthode abrégée permettant de définir
wrap-margin les propriétés wrap-flow, wrap-margin, et
wrap-padding wrap-padding dans une même déclaration
wrap-flow auto Spécifie comment les exclusions affectent
both le contenu inclus dans les éléments de
start niveau bloc
end
maximum
clear
wrap-margin length Spécifie un décalage pour le contenu en
dehors de l'élément
wrap-padding length Fournit une marge intérieure (décalage)
pour le contenu à l'intérieur d'un élément
wrap-through wrap Spécifie comment le contenu doit habiller
none un élément d'exclusion
Pour créer une exclusion CSS simple, utilisez la propriété wrap-flow: both pour afficher le
contenu sur tous les côtés de l'exclusion. Une autre option consiste à utiliser wrap-flow:
clear pour afficher le contenu au-dessus et au-dessous de l'exclusion, mais en laissant les
zones sur les côtés vides.
Pour déclarer une forme d’exclusion, utilisez les propriétés shape-inside et shape-outside qui
définissent le contenu et la forme générale d’une exclusion, respectivement.
Pour le moment, les exclusions CSS ne fonctionnent pas de manière fiable dans
l'ensemble des principaux navigateurs. Si vous voulez tester les exclusions CSS, utilisez
Internet Explorer 10. Pour utiliser les propriétés des exclusions CSS pour l'affichage dans
Internet Explorer 10, ajoutez le préfixe du fournisseur -ms- . Microsoft utilise également les
propriétés -ms-wrap-side et -ms-flow-wrap qui ne font pas partie de la spécification du W3C.
✚ PLUS D’INFORMATIONS
Pour en savoir plus sur les exclusions CSS, reportez-vous à la page Web « CSS Exclusions and
Shapes Module Level 3 » du W3C à l'adresse http://www.w3.org/TR/css3-exclusions/. La page Web
intitulée « Exclusions » de Microsoft à l'adresse http://bit.ly/ImadRV fournit des informations sur
les exclusions CSS et sur les propriétés spécifiques à Microsoft pour les applications Windows 8 et
Internet Explorer 10.
Vrai/Faux
Entourez la lettre V si l'affirmation est vraie ou la lettre F si elle est fausse.
V F 1. Une exclusion CSS doit être de forme rectangulaire ou circulaire.
V F 2. Vous devez déclarer une langue à l'aide des attributs HTML lang ou XML
xml:lang pour garantir une césure automatique correcte.
V F 3. Vous pouvez centrer un titre sur plusieurs colonnes à l'aide de la propriété
column-span : all.
V F 4. Pour combiner les régions CSS, vous devez utiliser des techniques de disposition CSS,
notamment les colonnes, les boîtes flexibles et les dispositions en grille.
V F 5. Dans les régions CSS, la valeur de la propriété flow-from doit correspondre à la
valeur de la propriété flow-into.
TERMES CLÉS
adapté au Web opacité
animation perspective
dégradé propriété border-radius
dégradé linéaire rotation
dégradé radial traduction
échelle transformation
filtre SVG transition
image clé transparence
inclinaison WOFF (Web Open Font Format)
ombre portée
L'équipe de développement de Malted Milk Media veut actualiser son site Web pour
lui donner un look plus contemporain. Ils vous ont demandé de revoir les principales
zones du site et de proposer des améliorations graphiques basées sur CSS3 qui aideront
Malted Milk à se démarquer de la concurrence.
Les nouvelles propriétés CSS3 permettent d'offrir facilement une interface utilisateur
L'ESSENTIEL plus graphique et plus attrayante pour les applications et les sites Web.
CSS3 vous permet de créer de superbes éléments graphiques pour les sites Web et les
applications et ainsi augmenter la satisfaction de l'expérience utilisateur. Vous pouvez
créer des effets graphiques comme des coins arrondis et des ombres portées et appliquer
des transformations 2D et 3D, comme les rotations et les mises à l'échelle. Des transitions
159
160 | leçon 7
et des animations, réalisées entièrement avec HTML et CSS3, donnent vie à du texte, des
PRÊT POUR LA
CERTIFICATION boîtes et des images statiques.
De quelle manière
pouvez-vous gérer En outre, bon nombre de propriétés CSS3 s'appliquent à des éléments de zones de dessin,
l'interface utilisateur et SVG est livré avec un ensemble complet de filtres qui produisent des effets similaires
graphique avec CSS ?
aux propriétés CSS3.
3.4
CSS3 fournit la propriété border-radius pour créer des coins arrondis, la propriété box-shadow
pour créer des ombres, la propriété opacity pour créer des effets de transparence, et les
propriétés linear-gradient et radial-gradient pour créer des dégradés d'arrière-plan.
PRÊT POUR LA CSS3 vous permet d'appliquer facilement plusieurs nouveaux effets graphiques aux éléments
CERTIFICATION
Quels nouveaux effets HTML et ainsi rendre l'interface utilisateur plus attrayante. Parmi les nouveaux effets
graphiques pouvez-vous graphiques on trouve : les coins arrondis, les ombres portées, la transparence et les
créer avec CSS3 ? dégradés d'arrière-plan. Vous pouvez même appliquer certaines de ces propriétés (comme
3.4 les ombres) au texte.
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Angles arrondis</title>
<style type="text/css">
div {
padding: 40px 40px;
background: dodgerblue;
width: 400px;
color: #fff;
font-family: sans-serif;
font-size: xx-large;
border-radius: 25px;
margin-left: auto;
margin-right: auto;
margin-top: 100px;
}
</style>
</head>
<body>
<div>Boîte avec des coins arrondis</div>
</body>
</html>
Gestion de l'interface graphique avec CSS | 161
La boîte avec des coins arrondis s'affiche dans un navigateur Web, comme illustré dans la
figure 7-1.
Figure 7-1
Boîte avec quatre angles
arrondis
Vous pouvez également arrondir un seul angle d'une boîte en utilisant les propriétés suivantes :
• border-top-left-radius
• border-top-right-radius
• border-bottom-right-radius
• border-bottom-left-radius
La figure 7-2 montre un exemple de chaque boîte.
Figure 7-2
Boîtes avec un coin arrondi
chacune
Si vous envisagez d'arrondir un seul angle sur plusieurs éléments dans un document
HTML, vous pouvez gagner du temps en créant une classe distincte pour chacun (coin
supérieur gauche, coin supérieur droit, coin inférieur gauche et coin inférieur droit). La
syntaxe devrait ressembler à ce qui suit :
.top-left-corner { border-top-left-radius:25px; }
Figure 7-3
Ombre portée appliquée
à une boîte
CSS3 fournit également la propriété text-shadow pour appliquer un ombrage au texte. Les
attributs sont les mêmes que la propriété box-shadow, sauf que spread et inset ne sont pas inclus.
<body>
<div>Exemple de boîte</div>
</body>
</html>
Figure 7-4
Boîte avec des coins arrondis
3. Pour ajouter une ombre portée, ajoutez la ligne suivante à l'élément de style :
box-shadow: 5px 5px 5px #999;
4. Enregistrez le fichier et affichez les résultats dans un navigateur Web. La boîte doit
ressembler à la figure 7-5.
Figure 7-5
Boîte avec des coins arrondis
et une ombre portée
APPLICATION DE LA TRANSPARENCE
Un élément opaque ne laisse pas passer la lumière, tandis que vous pouvez voir à travers
un élément transparent. Même si les termes sont opposés, si vous réduisez l'opacité d'un
élément ou si vous augmentez sa transparence, vous finissez par obtenir la même chose.
La figure 7-6 montre l'effet de transparence (ou la réduction d' opacité) sur une image.
L'image originale se trouve sur la gauche. L'image avec une transparence de 50 % appliquée
se trouve sur la droite.
Figure 7-6
Transparence appliquée
à une image
PRÊT POUR LA
CERTIFICATION La syntaxe permettant d'appliquer une transparence à une image ou un autre élément est :
Quelle propriété CSS
vous permet d'appliquer opacity: value
de la transparence à
un élément ou à une La valeur est une valeur à virgule flottante comprise entre 0,0 (100 % transparent) et
image ?
1,0 (100 % opaque). Pour appliquer une transparence de 45 %, par exemple, vous devez
3.4 utiliser la valeur 0,55 (1,0 – 0,45).
164 | leçon 7
Figure 7-7
Boîte avec des coins arrondis,
avec une ombre portée et
40 % de transparence
Pour appliquer un dégradé à une image HTML, utilisez la propriété background avec l'une
PRÊT POUR LA
CERTIFICATION
des méthodes de dégradés indiquées ci-dessus, avec des paramètres spécifiques à chaque
Quelle propriété CSS méthode. Les valeurs possibles pour les méthodes sont répertoriées sur la page Web de
vous permet d'ajouter un W3C « Valeurs d'images CSS et contenu remplacé, niveau de module 3 » à l'adresse :
dégradé d'arrière-plan http://dev.w3.org/csswg/css-images-3/#repeating-gradients.
à un conteneur HTML ?
Un dégradé linéaire est un dégradé horizontal, vertical ou diagonal. Pour créer un dégradé
3.4
linéaire du noir au blanc, utilisez le code CSS suivant :
background: linear-gradient(black, white);
Le dégradé par défaut va de haut en bas. Vous pouvez insérer les valeurs « top », « bottom »,
« right » ou « left » comme première valeur pour contrôler la direction du dégradé. La
figure 7-8 montre le dégradé noir et blanc qui s'étend de haut en bas.
Figure 7-8
Dégradé linéaire du noir (en
haut) vers le blanc (en bas)
Gestion de l'interface graphique avec CSS | 165
Un dégradé diagonal est un type de dégradé linéaire qui s'étend d'un angle d'un conteneur en
diagonale jusqu'à un autre angle. Le code pour un dégradé diagonal qui commence dans le
coin inférieur gauche et se prolonge jusqu'au coin supérieur droit d'un conteneur est le suivant :
background: linear-gradient(45deg, white, black);
Les dégradés CSS3 prennent également en charge l'interpolation chromatique dans l'espace
de couleur alpha, qui fait partie du modèle colorimétrique RVBA (rouge, vert, bleu et canal
alpha), pour produire des transitions colorimétriques plus lisses en dégradés. (Vous avez
probablement déjà vu des dégradés où il est facile de voir la transition d'une nuance à une
autre : elles ressemblent à de fines bandes de couleur. L'interpolation chromatique dans
l'espace de couleur alpha élimine cet aspect de « bande ».) Vous pouvez spécifier plusieurs
délimitations de couleurs, avec une couleur RVBA et une position pour chacune.
Voici un exemple d'utilisation des couleurs RVBA :
linear-gradient(to right, rgba(255,255,255,0)
Un dégradé radial commence à partir d'un point central et rayonne la couleur vers les
bords d'un conteneur. Les valeurs des dégradés radiaux diffèrent légèrement des dégradés
linéaires. La syntaxe générale des dégradés radiaux est :
radial-gradient(position,size and shape,color stops);
Examinons un exemple de dégradé radial qui commence par du bleu clair (indiqué par le
code hexadécimal #99CCFF) au centre et passe à du bleu plus foncé (indiqué par #3D5266)
sur les bords. Le code pourrait ressembler à celui qui suit (qui s'affiche dans un navigateur),
tel qu'illustré dans la figure 7-9.
radial-gradient(50% 50%, 70% 70%, #99CCFF, #3D5266);
Figure 7-9
Dégradé radial
La première série de pourcentages (50 % 50 %) définit les valeurs centrales horizontales
et verticales. Dans ce cas, le dégradé commence dans le centre de l'élément. La deuxième
série de pourcentages (70 % 70 %) spécifie la taille et la forme du dégradé. Un dégradé
radial ressemble à une ellipse, les pourcentages font donc référence aux rayons. Les codes
hexadécimaux dans l'exemple sont les délimitations de couleurs. La première délimitation de
couleur est le point de départ et la deuxième délimitation de couleur est le point d'arrivée.
Vous pouvez voir la propriété background-image dans certaines sources. Elle fonctionne
REMARQUE * comme la propriété background abrégée.
Notez l'utilisation de préfixes fournisseurs dans le code. Si vous incluez tous les principaux
préfixes fournisseurs, il y a plus de chance qu'un plus grand nombre d'utilisateurs puissent
afficher correctement votre document HTML. Comme indiqué dans la leçon 5, le fait
d'inclure les quatre préfixes fournisseurs dans votre code ne garantit pas pour autant que la
fonctionnalité CSS3 va fonctionner dans tous les navigateurs. Un navigateur qui ne prend
REMARQUE * pas une fonctionnalité en charge, ne l'affiche pas correctement, même avec un préfixe
fournisseur. Certains navigateurs offrent une prise en charge partielle d'une fonctionnalité, ce
qui peut produire des résultats mitigés. Pendant la phase de transition à CSS3, vous devez
tester votre code dans tous les principaux navigateurs avant d'utiliser une fonctionnalité
dans les documents HTML/CSS qui seront diffusés à un large public.
4. Supprimez la bordure (pas le rayon de la bordure), l'opacité et les lignes des ombres
portées de CSS.
5. Enregistrez le fichier sous le nom L7-gradient-exercise.html et affichez-le dans différents
navigateurs Web. Tous les navigateurs affichent-ils le dégradé ? La boîte doit ressembler
à la figure 7-10 dans n'importe quel navigateur qui prend en charge les dégradés linéaires.
Figure 7-10
Boîte avec un fond dégradé
appliqué
6. Fermez le fichier et les navigateurs Web, mais laissez l'outil d'édition ouvert si vous
envisagez d'effectuer l'exercice suivant au cours de cette session.
✚ PLUS D’INFORMATIONS
La page Web Microsoft « Explorer de nouvelles idées de conception et de mise en forme de sites
Web » à l'adresse http://bit.ly/KtYr1W fournit des liens vers des informations sur la création de
coins arrondis, d'ombres portées et bien plus encore. La page Web W3C « Couleurs CSS, niveau de
module 3 » (en anglais) à l'adresse http://www.w3.org/TR/css3-color/ fournit des spécifications pour
les propriétés de couleur et d'opacité. Vous pouvez également visiter le site Web W3schools.com et
rechercher « CSS3 » et la rubrique de votre choix.
Les développeurs Web commencent à utiliser le Web Open Font Format (WOFF)
pour améliorer les interfaces utilisateur avec à peu près toutes les polices disponibles
ou des polices personnalisées. La possibilité d'utiliser n'importe quelle police est un
grand changement par rapport aux restrictions pré-WOFF quant à l'utilisation des
polices dans les documents HTML.
La typographie est l'art d'assembler différents types de caractères, historiquement à des fins
d'impression, et les polices jouent un rôle très important pour cela. Vous pouvez utiliser
les propriétés liées aux polices CSS telles que font-family, font-size, font-style, font-variant,
et font-weight pour appliquer un style aux documents HTML. Pendant des années, les
X REF développeurs Web et les développeurs d'applications se sont limités à un ensemble de
polices standard, considérées comme adaptées au Web, ce qui signifie qu'elles sont
La leçon 4 aborde généralement installées sur l'ordinateur d'un utilisateur et donc qu'elles s'affichent de
les aspects de la manière uniforme dans la majorité des navigateurs Web.
typographie associés
à CSS, comme les Les polices adaptées au Web ne fonctionnent pas dans toutes les situations. Par exemple,
polices, les familles de beaucoup d'entreprises utilisent des polices particulières pour identifier leur marque, et ces
polices ne font pas souvent partie du jeu de polices Web sécurisé. Les concepteurs et les
polices, le monospace développeurs s'efforcent de rendre les sites intéressants, plus attrayants et uniques, ce qui
et la règle @font-face. ne peut pas toujours être fait avec les polices adaptées au Web.
Gestion de l'interface graphique avec CSS | 167
Pour utiliser une police non standard dans un en-tête, un titre ou un bloc de texte, les
développeurs ont dû créer du contenu dans un programme de mise en page ou de graphiques,
l'enregistrer-sous forme d'image, puis utiliser la balise <img> dans un document HTML. Cette
méthode a plusieurs inconvénients :
• Elle prend beaucoup de temps.
• Elle interfère avec l'accessibilité des lecteurs de page, les images du texte ne pouvant
pas être lues à haute voix.
• Elle réduit l'efficacité d'optimisation du référencement d'un site auprès d'un moteur de
PRÊT POUR LA recherche (SEO), car les moteurs de recherche recherchent du texte, pas des images du texte.
CERTIFICATION
Quel est le but de Les développeurs ont également utilisé des polices incorporées, qui sont des ensembles
WOFF (Web Open Font de polices chargées sur leurs serveurs. Le concepteur insère un lien vers le jeu de polices
Format) ?
dans un document HTML ou un fichier CSS, ce qui aide le navigateur à afficher les polices
correctement. Bien que les polices incorporées soient encore largement utilisées, WOFF
3.4 constitue une nouvelle technique qui est meilleure pour gérer les polices non standard.
Le Web Open Font Format (WOFF) est un moyen d'ajouter une meilleure typographie
au Web. Il permet aux développeurs Web d'utiliser des polices personnalisées (à peu près
n'importe laquelle), sans se limiter aux polices Web standard. Les fichiers WOFF sont
des polices True Type, OpenType ou Open Font Format compressées qui contiennent des
métadonnées supplémentaires.
Pour utiliser le WOFF, vous pouvez héberger des polices sur votre serveur ou utiliser
un service de police du Web. Des polices gratuites sont disponibles à partir de plusieurs
sources, comme fontsquirrel et Open Font Library. Parmi les services de police, on trouve
FontFont et FontShop, entre autres. Ils nécessitent un abonnement payant, qui vous donne
le droit d'utiliser les polices sur votre site Web pendant toute la durée de l'abonnement.
Pour utiliser une police WOFF à partir du site d'un fournisseur de polices, par exemple,
ajoutez la règle @font-face dans le fichier CSS, qui doit ressembler à ce qui suit :
<style>
@font-face {
font-family: "font-family-name";
src: url("http://website/fonts/fontfile")
}
</style>
Certaines polices WOFF fonctionnent mieux que d'autres selon le navigateur dans lequel elles
sont affichées. Par exemple, là où un navigateur Web peut parfaitement rendre une police,
un autre navigateur va afficher des polices bitmap ou avec des caractères gras inappropriés.
Avant d'acheter une police WOFF ou un package de polices, veillez à rechercher la police
sur le Web pour savoir si les autres développeurs ont rencontré des problèmes lors de son
utilisation. Certains fournisseurs de polices permettent d'obtenir un aperçu des polices
dans tous les principaux navigateurs avant de l'acheter.
✚ PLUS D’INFORMATIONS
La spécification WOFF se trouve sur le site Web W3C à l'adresse http://www.w3.org/TR/WOFF/. Pour
mieux comprendre WOFF, consultez la page « Polices sur le Web » (en anglais) à l'adresse http://www.
w3.org/Fonts/ et la page « Forum aux questions WOFF » (en anglais) à l'adresse http://www.w3.org/
Fonts/WOFF-FAQ.html.
Tableau 7-1
Méthodes pour la propriété Valeur Description
transform
matrix (n,n,n,n,n,n) Spécifie une transformation 2D à l'aide d'une
matrice à six valeurs
matrix3d (n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) Spécifie une transformation 3D en utilisant une
matrice 4 x 4 à 16 valeurs
Spécifie une vue en perspective d'un élément
perspective(n)
3D qui a été transformé
rotation (angle) Fait pivoter un élément en 2D
rotate3d (x,y,z,angle) Fait pivoter un élément en 3D
rotateX (angle) Fait pivoter un élément en 3D sur l'axe des abscisses
Fait pivoter un élément en 3D sur l'axe des
rotateY (angle)
ordonnées
rotateZ (angle) Fait pivoter un élément en 3D sur l'axe z
scale (x,y) Met à l'échelle un élément en 2D (largeur et hauteur)
scale3d (x,y,z) Met à l'échelle un élément en 3D (hauteur,
largeur et un vecteur arbitraire dans l'espace 3D)
Met à l'échelle un élément en 3D sur l'axe des
scaleX (x)
abscisses
Met à l'échelle un élément en 3D sur l'axe des
scaleY (y)
ordonnées
scaleZ (z) Met à échelle d'un élément en 3D le long de
l'axe z (un vecteur dans un espace 3D)
skew (x-angle,y-angle) Incline un élément en 2D, le long de l'axe des
abscisses et de l'axe des ordonnées
skewX (angle) Incline un élément en 3D sur l'axe des abscisses
skewY (angle) Incline un élément en 3D sur l'axe des ordonnées
translate (x,y) Traduit (déplace) un élément en 2D
translate3d (x,y,z) Traduit (déplace) un élément en 3D
translateX (x) Se traduit par un élément en 3D à l'aide de l'axe
des abscisses
Traduit un élément en 3D à l'aide de l'axe des
translateY (y)
ordonnées
translateZ (z) Se traduit par un élément en 3D à l'aide de l'axe
des abscisses
PRÊT POUR LA Maintenant que vous comprenez l'essence des transformations en 2D et 3D, regardons
CERTIFICATION quelques exemples précis.
Quelle propriété
CSS transforme les
éléments ?
TRANSLATION 2D
3.4 Appliquer une translation à un élément revient à le déplacer, sans le faire pivoter, l'incliner,
ni faire tourner l'image. Pour déplacer un élément, utilisez la méthode translate() de CSS et
PRÊT POUR LA indiquez les valeurs de l'axe des abscisses et de l'axe des ordonnées pour positionner l'élément
CERTIFICATION par rapport à sa position d'origine ou par défaut. La valeur de l'axe des abscisses définit
Que signifie la traduction la position gauche de l'élément et l'axe des ordonnées spécifie la position supérieure. Par
d'un élément ? exemple, le code suivant déplace l'élément de 100 pixels de la gauche et de 50 pixels du haut :
3.4 transform: translate(100px,50px);
Gestion de l'interface graphique avec CSS | 169
MISE À L'ÉCHELLE 2D
PRÊT POUR LA
Mettre à l'échelle un élément consiste à augmenter ou à réduire sa taille. Pour augmenter
CERTIFICATION ou réduire un élément dynamiquement, utilisez la méthode scale() dans CSS et spécifiez les
Que signifie la mise valeurs de l'axe des abscisses (largeur) et de l'axe des ordonnées (hauteur). Le code suivant, par
à l'échelle d'un élément ? exemple, permet d'obtenir un accroissement double de la largeur de l'élément par rapport à sa
3.4
taille d'origine et une augmentation quadruple de la hauteur par rapport à sa taille d'origine :
transform: scale(2,4);
La figure 7-12 contient un exemple d'un élément mis à l'échelle.
Figure 7-12
La boîte mise à l'échelle est
deux fois plus large et quatre
fois plus grande que la boîte
d'origine
<body>
<div>Cet élément peut se déplacer</div>
</body>
2. Enregistrez le fichier sous le nom L7-translate-exercise.html et affichez-le dans au
moins deux navigateurs Web différents. La boîte devrait apparaître dans le coin
supérieur gauche des fenêtres du navigateur.
3. Ajoutez les lignes suivantes à l'élément de style :
transform: translate(200px,100px);
-ms-transform: translate(200px,100px);
-moz-transform: translate(200px,100px);
-o-transform: translate(200px,100px);
-webkit-transform: translate(200px,100px);
4. Enregistrez le fichier et affichez-le dans les mêmes navigateurs Web. La boîte doit
avoir été déplacée du bas vers la droite.
5. Pour redimensionner la boîte afin qu'elle soit deux fois plus large et deux fois aussi
grande que celle d'origine, ajoutez scale(2,2) aux lignes de transformation, comme suit :
transform: translate(200px,100px) scale(2,2);
-ms-transform: translate(200px,100px) scale(2,2);
-moz-transform: translate(200px,100px) scale(2,2);
-o-transform: translate(200px,100px) scale(2,2);
-webkit-transform: translate(200px,100px) scale(2,2);
6. Remplacez le texte div par Cet élément peut être mis à l'échelle.
7. Enregistrez le fichier sous le nom L7-scale-exercise.html et affichez-le dans les navigateurs
Web. L'affichage doit ressembler à la figure 7-13.
Figure 7-13
La boîte a été déplacée et
est deux fois plus grande que
celle d'origine
8. Fermez le fichier, mais laissez l'outil d'édition et les navigateurs Web ouverts si vous
envisagez d'effectuer l'exercice suivant au cours de cette session.
Gestion de l'interface graphique avec CSS | 171
ROTATION 2D ET 3D
La rotation d'un élément consiste à lui appliquer un certain nombre de degrés dans le
sens des aiguilles d'une montre. Pour faire pivoter un élément, utilisez la méthode rotate()
dans CSS et spécifiez les degrés de rotation.
Par exemple, le code suivant fait pivoter un élément de 30 degrés dans le plan 2D :
transform: rotate(30deg);
PRÊT POUR LA
CERTIFICATION La rotation 3D utilise les méthodes rotateX() et rotateY() . Avec rotateX(), l'élément pivote
Quelle méthode de autour de l'axe des abscisses et avec rotateY() l'élément pivote autour de l'axe des ordonnées.
transformation fait
pivoter un élément en Le code suivant fait pivoter un élément à 180 degrés. Si l'élément contient du texte, le
3D autour de l'axe des
abscisses ? texte semble à l'envers après la rotation, comme illustré dans la figure 7-15. N'oubliez pas,
pour voir l'effet 3D, JavaScript ou une autre forme de script est requis. Le contenu de la
3.4
figure 7-15 est le résultat final de la rotation.
transform: rotateX(180deg);
Figure 7-15
Image originale et image
3D pivotée sur l'axe des
abscisses
Figure 7-16
Image originale et image
3D pivotée sur l'axe des
ordonnées
172 | leçon 7
INCLINAISON 2D ET 3D
Incliner un élément consiste à l'étirer dans une ou plusieurs directions. Pour incliner un
élément avec CSS, utilisez la méthode skew() et spécifiez les valeurs de l'axe des abscisses
et de l'axe des ordonnées, en degrés, pour créer une forme angulaire. Par exemple, le code
suivant fait pivoter un élément de 20 degrés autour de l'axe des abscisses et de 30 degrés
autour de l'axe des ordonnées :
transform: skew(20deg,30deg);
PRÊT POUR LA
CERTIFICATION
Quelle méthode de L'inclinaison 3D utilise les méthodes skewX() et skewY() pour incliner un élément le long de
transformation permet l'axe des abscisses et de l'axe des ordonnées, respectivement. À titre d'exemple, le code
d'incliner un élément
en 3D autour de l'axe suivant incline un élément de 45 degrés, comme illustré dans la figure 7-18.
des ordonnées ?
transform: skewX(45deg);
3.4
Figure 7-18
Inclinaison en 3D autour de
l'axe des abscisses
5. Pour incliner la boîte de 45 degrés, remplacez rotate par skew dans les lignes de
transformation, comme suit :
transform: translate(200px,100px) skew(45deg);
-ms-transform: translate(200px,100px) skew(45deg);
-moz-transform: translate(200px,100px) skew(45deg);
-o-transform: translate(200px,100px) skew(45deg);
-webkit-transform: translate(200px,100px) skew(45deg);
Figure 7-20
Boîte inclinée à un angle de
45 degrés
8. Fermez le fichier, mais laissez l'outil d'édition et les navigateurs Web ouverts si vous
envisagez d'effectuer l'exercice suivant au cours de cette session.
Voici un exemple de balisage complet, il est illustré dans la figure 7-21 à l'aide d'un navigateur
pris en charge par webkit.
<!doctype html>
<html>
<head>
<style type="text/css">
div
{
padding: 40px 40px;
background: #B8860B;
width: 150px;
174 | leçon 7
color: #fff;
font-family: sans-serif;
font-size: xx-large;
}
div#div2
{
margin: 100px;
perspective: 600; margin: 100px 0 0 50px;
-ms-perspective: 600; margin: 100px 0 0 50px;
-moz-perspective: 600; margin: 100px 0 0 50px;
-o-perspective: 600; margin: 100px 0 0 50px;
-webkit-perspective: 600; margin: 100px 0 0 50px;
<body>
<div>Élément d'origine</div>
<div id="div2">Élément transformé</div>
</body>
</html>
Figure 7-21
Perspective appliquée avec
une rotation de 45 degrés
Maintenant, concentrons-nous sur les transitions et les animations. Une transition est le
passage d'un état à un autre. Avec CSS, une transition est le changement de style d'un élément.
Un dégradé est comparable à un type de transition, en effet la couleur d'arrière-plan d'un
conteneur passe d'une couleur à une autre. Toutefois, un dégradé est à proprement parler
un élément statique : il est présent ou non. En CSS3, l'action d'une transition est visible.
Les changements s'affichent à l'écran de façon animée comme s'ils étaient alimentés par
un script, mais aucun script n'est impliqué.
La propriété transition vous permet de créer une transition CSS3. Vous devez au minimum
PRÊT POUR LA
CERTIFICATION spécifier que la propriété CSS soit prise en compte pendant la période de transition.
Qu'est-ce qu'une Il peut s'agir de la position, de la taille, de la couleur, de la couleur d'arrière-plan, de
transition ? l'interlettrage, de la rotation, etc. d'un élément. La plupart des transitions spécifient
3.4 également la longueur (durée) de la transition. Si la valeur de durée n'est pas définie,
la valeur par défaut est de 0. Vous devez spécifier des transitions CSS3 en utilisant les
propriétés décrites dans le tableau 7-2.
Gestion de l'interface graphique avec CSS | 175
Tableau 7-2
Propriétés de transition CSS3 Propriété Description
Est la façon abrégée de spécifier des paramètres pour
transition
transition-property, transition-delay, transition-duration et
transition-timing-function à la fois
Voici un exemple d'une transition simple qui affiche du texte dans une boîte. Lorsqu'un
utilisateur passe le pointeur de la souris sur la boîte, le texte est modifié. La figure 7-22
montre la boîte avant et après l'opération.
<style type="text/css">
#wrapper { transition-property: opacity;
transition-duration: 3s;
transition-delay: 1s;
transition-timing-function: linear; }
#wrapper #before, #wrapper:hover #after {
opacité: 1; }
#wrapper:hover #before, #wrapper #after {
opacité: 0; }
</style>
</head>
<body>
<div id="wrapper">
<div id="before">Maintenant tu me vois</div>
<div id="after">Maintenant tu ne me vois plus</div>
</div>
</body>
Figure 7-22
Cette transition simple
masque le texte et affiche
le nouveau texte lorsque le
pointeur de la souris passe
dessus
176 | leçon 7
transition-property: opacity;
-ms-transition-property: opacity;
-moz-transition-property: opacity;
-o-transition-property: opacity;
-webkit-transition-property: opacity;
transition-duration: 1s;
-ms-transition-duration: 1s;
-moz-transition-duration: 1s;
-o-transition-duration: 1s;
-webkit-transition-duration: 1s;
transition-timing-function: linear;
-ms-transition-timing-function: linear;
-moz-transition-timing-function: linear;
-o-transition-timing-function: linear;
-webkit-transition-timing-function: linear;
}
-webkit-opacity: 0;
}
</style>
</head>
<body>
<div id="wrapper">
<div id="front">Knock knock</div>
<div id="back">Qui est là ?</div>
</div>
</body>
</html>
Figure 7-23
Transition simple
3. Pour ajouter un délai supplémentaire, entrez ce qui suit après les lignes de la propriété
transition-duration :
transition-delay: 1s;
-ms-transition-delay: 1s;
-moz-transition-delay: 1s;
-o-transition-delay: 1s;
-webkit-transition-delay: 1s;
Spécifiez ensuite les propriétés de l'animation. Plusieurs des propriétés utilisées dans les
animations sont semblables aux transitions. Les propriétés de l'animation sont décrites
dans le tableau 7-3.
178 | leçon 7
Tableau 7-3
Propriétés d'animation Propriété Valeur par défaut Description
de CSS3
@keyframes Crée l'animation
Ce qui suit est un extrait de code qui configure les propriétés d'animation pour une
disparition en fondu :
div { animation-duration: 3s;
X REF animation-delay: 0s;
animation-timing-function: ease; }
La leçon 9 vous montre div:hover { animation-name: fadeout; }
comment créer une
animation à l'aide de Cette disparition en fondu commence dès que l'utilisateur place le pointeur de la souris
JavaScript. sur un élément div, elle dure pendant trois secondes et utilise et facilite la fonction de
chronométrage.
<body>
<div></div>
</body>
Les filtres SVG sont un moyen d'appliquer un style aux graphiques SVG. La longue
liste de filtres va du filtre feBlend, qui combine des images, au filtre feOffset, qui
déplace une image par rapport à sa position actuelle, à plusieurs filtres qui affectent
la façon dont l'éclairage est calculé sur une figure.
La leçon 2 présente le langage SVG (Scalable Vector Graphics) qui permet de décrire des
graphiques 2D en langage XML (Extensible Markup Language). Vous avez vu quelques
exemples de création d'images vectorielles simples à l'aide de SVG et appris qu'elles
s'affichent bien, qu'elles soient visionnées sur de petits ou de grands écrans.
PRÊT POUR LA
CERTIFICATION Cette section examine les effets des filtres que vous pouvez appliquer aux graphiques
Quel est le but d'un SVG. Un filtre SVG est une série d'opérations qui utilisent CSS pour appliquer un style
filtre SVG ?
à un graphique SVG ou le modifier. Le graphique amélioré s'affiche dans un navigateur,
3.4
tandis que le graphique original se retrouve isolé. Les filtres disponibles dans SVG sont :
• feBlend
• feColorMatrix
• feComponentTransfer
• feComposite
• feConvolveMatrix
• feDiffuseLighting
• feDisplacementMap
• feFlood
• feGaussianBlur
• feImage
• feMerge
• feMorphology
• feOffset
180 | leçon 7
• feTile
• feTurbulence
• feDistantLight
• fePointLight
• feSpecularLighting
• feSpotLight
Beaucoup de noms de filtre sont assez intuitifs. Par exemple, le filtre feBlend combine
des images, les filtres feColorMatrix transforment les couleurs, le filtre feOffset déplace une
image par rapport à sa position actuelle, et le dernier filtre de la liste concerne l'éclairage.
Vous devez utiliser l'élément filter pour définir les filtres SVG. Vous devez inclure
l'attribut id pour nommer le filtre. Par exemple, le code suivant est un exemple de filtre
feGaussianBlur, dont les résultats sont présentés dans la figure 7-24 :
Figure 7-24
Effet de flou gaussien appliqué
à un graphique SVG
<body>
<svg>
<defs>
<filter id="a1" x="0" y="0">
<feGaussianBlur in="SourceGraphic"
stdDeviation="20" />
</filter>
</defs>
<rect width="150" height="150" stroke="plum"
stroke-width="3" fill="plum" filter="url(#a1)" />
</svg>
</body>
L'attribut id dans l'élément filter spécifie le nom du filtre. L'élément feGaussianBlur spécifie
l'effet de flou. L'attribut in="SourceGraphic "figure dans cet élément, il indique qu'un effet de
flou sera appliqué à l'élément entier et l'attribut stdDeviation spécifie le degré de flou. Le
rectangle qui est créé est lié au filtre via l'attribut filter="url(#a1)" de l'élément rect.
Dans un autre exemple, le filtre suivant feOffset crée une ombre portée sous un rectangle.
Une ombre s'ajuste à « l'action » du filtre décalage car une ombre est simplement une
boîte qui a été déplacée vers le bas, à droite de l'image source. Les attributs dx et dy
spécifient la quantité d'espace pour déplacer l'image le long de l'axe des abscisses et de
l'axe des ordonnées, respectivement. L'image rendue est indiquée dans la figure 7-25.
Gestion de l'interface graphique avec CSS | 181
Figure 7-25
Filtre de décalage appliqué
à un graphique SVG
<body>
<svg>
<defs>
<filter id="i1" x="0" y="0">
<feOffset dx="5" dy="5" />
</filter>
</defs>
<rect width="150" height="150" fill="grey"
filter="url(#i1)" />
<rect width="150" height="150" fill="plum" />
</svg>
</body>
<body>
<svg>
<defs>
<filter id="i1" x="0" y="0">
<feOffset dx="5" dy="5" />
</filter>
</defs>
<rect width="150" height="150" fill="grey"
filter="url(#i1)" />
<rect width="150" height="150" fill="springgreen"
/>
</svg>
</body>
</html>
182 | leçon 7
Figure 7-26
Graphique SVG avec une
ombre portée
3. Ajoutez la ligne suivante dans l'élément filter pour appliquer l'effet de flou gaussien :
<feGaussianBlur stdDeviation="5" />
Figure 7-27
Graphique SVG avec une
ombre portée et un flou
gaussien appliqués au
décalage
5. Fermez le fichier, mais laissez l'outil d'édition et le navigateur Web ouverts si vous
envisagez d'effectuer l'exercice suivant au cours de cette session.
Vous pouvez utiliser les propriétés CSS pour ajouter de la couleur et des dégradés, pour
appliquer des transformations et des animations et apporter d'autres améliorations
à l'objet canvas.
Dans la leçon 2 vous avez non seulement découvert SVG, mais également l'élément
PRÊT POUR LA canvas. Vous pouvez utiliser cet élément pour tracer des formes composées de pixels. Bien
CERTIFICATION que l'élément canvas accepte uniquement deux attributs : height et width, vous pouvez
Comment pouvez-vous utiliser la plupart des propriétés CSS pour appliquer un style à l'élément canvas, ajouter
utiliser l'élément canvas de la couleur, des dégradés, des motifs de remplissage, une transformation, une animation,
pour améliorer l'interface etc. Cette section vous présente certains des effets stylistiques que vous pouvez appliquer
utilisateur graphique ? à des dessins créés à l'aide de l'élément canvas afin d'améliorer l'interface utilisateur
3.4 graphique (GUI).
Gestion de l'interface graphique avec CSS | 183
Cet exemple utilise déjà l'attribut fillStyle pour l'objet getContext("2d"). Nous allons changer
la couleur et appliquer un dégradé avec du corail comme couleur de départ et du kaki
comme couleur de fin. Remplacez la ligne fillStyle par ce qui suit et vous obtiendrez un
contenu semblable à celui de la figure 7-28 :
var grd=context.createLinearGradient(0,0,150,0);
grd.addColorStop(0.3,"corail");
grd.addColorStop(0.7,"kaki");
context.fillStyle=grd ;
Figure 7-28
Objet canvas avec un
dégradé appliqué
Pour faire pivoter la zone de dessin, utilisez la formule degrees*Math.PI/180. Vous devez
également ajouter la rotation avant que le rectangle soit généré. Donc, pour faire pivoter
notre zone de dessin de 20 degrés, ajoutez la ligne suivante avant la ligne context-fillRect :
context.rotate(20*Math. PI/180);
Le résultat est illustré dans la figure 7-29. Vous pouvez également traduire (déplacer), mettre
à l'échelle et incliner un objet de la même façon que vous apportez des transformations
à des éléments HTML.
Figure 7-29
Objet canvas pivoté
à 20 degrés
Enfin, nous allons voir comment générer du texte à l'aide de la zone de dessin (voir la
figure 7-30). Utilisez les méthodes fillText et font :
<body>
<canvas id="myText" width="400" height="250" style="border:3px solid #0000FF;">
</canvas>
184 | leçon 7
Figure 7-30
Texte généré par l'élément
canvas entouré par une
bordure
La méthode fillText crée un texte de couleur unie (noir par défaut), vous pouvez remplacer
fillText par strokeText pour créer des lettres avec une bordure (lettres sans remplissage).
4. Mettez le rectangle à l'échelle afin qu'il soit cinq fois plus large et cinq fois plus grand que
le rectangle original. Pour ce faire, ajoutez le code suivant après la nouvelle ligne fillStyle :
context.scale(5,5);
5. Réenregistrez le fichier et affichez-le dans un navigateur Web. Les résultats doivent
ressembler à ceux de la figure 7-31.
Figure 7-31
Rectangle tracé à l'aide de
l'élément canvas avec un
dégradé et redimensionné
pour être cinq fois plus grand
que l'original
• Une transition est le passage d'un état à un autre. Avec CSS, une transition est le
changement de style d'un élément.
• Une animation représente l'affichage d'une séquence d'images statiques à un
rythme assez rapide pour créer l'illusion d'un mouvement.
• Un filtre SVG est une série d'opérations qui utilisent CSS pour appliquer un style à un
graphique SVG ou le modifier. Le graphique amélioré s'affiche dans un navigateur,
tandis que le graphique original se retrouve isolé.
• Bien que l'élément canvas accepte uniquement deux attributs : height et width,
vous pouvez utiliser la plupart des propriétés CSS pour appliquer un style à l'élément
canvas, ajouter de la couleur, des dégradés, des motifs de remplissage, une
transformation, une animation, etc.
2. Parmi les propositions suivantes, laquelle n'est pas correcte au sujet de la propriété
border-radius ?
a. Elle crée des angles arrondis autour des éléments de mise en page.
b. Elle peut être exprimée en pixels.
c. Elle peut être exprimée en pourcentage.
d. Elle peut animer un objet.
3. Pour appliquer une transparence de 60 % à un élément ou à une image, quelle propriété
devez-vous utiliser ?
a. opacité: 40
b. opacité: 0.4
c. transparence: 40
d. transparence: 0.4
4. Parmi les propositions suivantes, laquelle présente des inconvénients pour les polices
Web ? (Choisissez toutes les réponses applicables.)
a. Elles doivent être chargées sur un serveur Web.
b. Elles sont limitées en nombre et en variété.
c. Elles rendent plus difficile la reconnaissance de la marque sur le Web.
d. Elles sont chères.
5. Parmi les propositions suivantes, laquelle est associée aux images clés ?
a. Angles arrondis
b. Transitions
c. Animations
d. Aucune des réponses ci‑dessus
6. Que devez-vous spécifier pour créer une transition ?
a. Un départ différé
b. La propriété CSS à appliquer au cours de la transition
c. La fonction de minutage de la transition
d. L'image clé
7. Quel est l'avantage principal lié à l'utilisation de l'interpolation chromatique dans
l'espace de couleur alpha ?
a. Elle produit des transitions colorimétriques plus lisses en dégradés.
b. Elle permet d'ajouter de la couleur aux dessins SVG.
c. a et b
d. Ni a ni b
8. Parmi les propriétés suivantes, laquelle devez-vous utiliser pour ajouter de la couleur
au texte de l'élément canvas ?
a. fillStyle
b. strokeStyle
c. textColor
d. strokeColor
9. Quels sont les deux états de lecture d'une animation ?
a. démarré
b. en cours d'exécution
c. suspendu
d. reprise
10. Parmi les lignes de code suivantes, laquelle contrôle le degré de flou ?
<defs>
<filter id="a1" x="0" y="0">
<feGaussianBlur in="SourceGraphic"
stdDeviation="20" />
</filter>
</defs>
a. FeGaussianBlur
b. SourceGraphic
c. StdDeviation
d. Aucune des réponses ci‑dessus
188 | leçon 7
Vrai/Faux
Entourez la lettre V si l'affirmation est vraie ou la lettre F si elle est fausse.
V F 1. Un élément opaque ne laisse pas passer la lumière, tandis que vous pouvez voir
à travers un élément transparent.
V F 2. Avec CSS, pour faire pivoter un élément, appliquez-lui un certain nombre de
degrés dans le sens contraire des aiguilles d'une montre.
V F 3. Une animation représente l'affichage d'une séquence d'images statiques à un
rythme assez rapide pour créer l'illusion d'un mouvement.
V F 4. Un dégradé radial commence à partir d'un point central et rayonne la couleur
vers les bords d'un conteneur.
V F 5. La perspective, en termes de dessins et d'illustrations, est la convergence de
lignes qui donne l'illusion de la profondeur.