Exercices CSS - HC
Exercices CSS - HC
Exercices CSS
p {
background-color : #F5F5DC;
}
1. Ajoutez ce bloc dans le fichier style1-bis.css avant l'actuel bloc portant sur l'élément <p> et
testez.
2. Recommencez en le plaçant après l'actuel bloc et testez à nouveau.
3. Que constatez-vous ? Que peut-on déduire sur la valeur d'une propriété utilisée quand il existe
plusieurs définitions pour un même élément ?
Q 6. A partir des conclusions des différentes questions précédentes, rédigez un texte qui présentent
les règles qui semblent gérer les valeurs des propriétés utilisées pour l'affichage.
Remarque Ces règles seront précisées et affinées au fur et à mesure.
Exercice 5 - Couleurs
On trouve dans le fichier style1.css les valeurs des couleurs exprimées de trois manières : un nom, une
valeur hexadécimale, un triplet rgb (parfois appelée valeur fonctionnelle).
Il existe un ensemble de noms de couleur définis. Chacun correspond à une valeur de couleur
hexadécimal. Vous en trouverez la liste avec le code hexadécimal correspondant ici.
Dans la valeur hexadécimale, les deux premiers chiffres correspondent à la valeur hexadécimale de la
composante rouge, les deux suivants à celle de la composante verte et les deux derniers à celle de la
composante bleu.
Les trois valeurs entières d'un triplet rgb correspondent également dans l'ordre aux valeurs des trois
composantes rouge, verte et bleu dans cet ordre.
Remarque Les valeurs hexadécimales présentes dans le fichier sont sur six caractères. Il existe aussi
pour les valeurs des couleurs des valeurs hexadécimales sur trois caractères. Elles correspondent à la
valeur hexadécimale à six caractères dans laquelle chacun des caractères est répété deux fois. Ainsi la
couleur de valeur #1A0 est la même que celle de valeur #11AA00.
Remarque En plus des valeurs rgb, on trouve des valeurs sous forme de quadruplet avec la fonction
rgba qui ajoute au triplet rgb une composante a (pour «canal alpha») qui exprime l'opacité de la couleur.
Sa valeur va de 0.0 (totalement transparent) à 1.0 (totalement opaque). Pour une couleur exprimée par
triplet rgb le canal alpha vaut 1.0. Donc la valeur rgb(x,y,z) est la même que rgba(x,y,z,1.0).
Q 1. Sachant que les notations hexadécimales et rgb sont équivalentes. Quel est l'intervalle de valeurs
autorisées pour les éléments d'un triplet rgb ?
Par des tests, étudiez comment agit le navigateur si l'on donne des valeurs en dehors de cet intervalle.
Remarque Les valeurs dans le triplet peuvent également être exprimées sous forme de
pourcentage. 0% correspond à la borne inférieure de l'intervalle et 100% à sa valeur maximale.
Q 2. Calculez la valeur hexadécimale de toutes les couleurs présentes dans le fichier style1-bis.css.
Vérifiez visuellement vos valeurs en utilisant l'outil Editeur de styles pour remplacer dans le fichier
style1-bis.css les valeurs de toutes les couleurs par ces valeurs hexadécimales.
Q 3. Faites de même pour les valeurs rgb des couleurs et testez à nouveau grâce à l'éditeur de style.
Fig. 1. La zone CSS de l'inspecteur dans le navigateur. L'outil Règles est actif.
Q 1. Commençons avec l'outil Règles.
Sélectionnez-le puis dans la zone de gauche de l'inspecteur cliquez sur différents éléments de la
structure du document. Vous pouvez aussi utiliser le bouton de sélection d'élément pour pointer
directement un élément dans la zone d'affichage. Examinez à chaque fois ce qui se passe dans
l'inspecteur de styles.
Que représentent les informations affichées ?
Q 2. Sélectionnez l'élément <abbr> situé dans le premier bloc <p>. Que remarquez-vous dans les
règles affichées pour cet élément, en particulier dans la partie inférieure de l'affichage de ces règles ?
Idem pour l'élément <strong> emboité dans ce premier élément <p> ?
Qu'indique les informations affichées ? Quel lien avec les règles de calcul établies lors d'un précédent
exercice ?
Q 3. Affichez dans l'outil les règles qui s'appliquent pour l'élément <p>. Ensuite, comme dans un
exercice précédent modifiez la feuille de style style1.css pour lui ajouter la règle :
p {
background-color : #F5F5DC;
}
Déplacez cette à différentes positions dans le fichier style1-bis.css, en particulier avant et après la
règle présente innitialement pour p et observer l'évolution de l'affichage des règles de l'élément p dans
l'outil.
A nouveau faites le lien avec une des règles de calcul découverte précédemment.
Q 4. Sélectionnez un des éléments <strong>. Dans la zone Règles, déplacez la souris sur les
définition des propriétés CSS. Des cases, actuellement cochées, apparaissent sur la gauche. Décochez
celle en face de la propriété font-weight. Que constatez-vous dans la zone d'affichage ? Pourquoi ?
Faites de même pour la propriété color active. Que remarquez-vous ? Vous pouvez également
désactiver cette propriété sur l'élément <p>. Justifiez le comportement observé.
Faites différents essais d'activation/désactivation de propriétés.
Q 5. Nous allons voir qu'il est possible de tester «en direct» les impacts de modification de la feuille de
style avec cet outil.
Après avoir à nouveau coché toutes les cases. Cliquez cette fois sur la valeur de la propriété color de
l'élément <strong>. Une zone d'édition s'affiche, vous pouvez alors modifier la valeur, actuellement
yellow, en la remplaçant par exemple par lightgreen. Observez le comportement dans la zone
d'affichage. Faites plusieurs manipulations similaires et observez leurs effets.
Sélectionnez maintenant l'élément <p> et dans la zone des règles cliquez dans la «zone blanche» de
sa définition (c'est-à-dire ni sur une case à cocher, ni sur une propriété, ni sur une valeur), une nouvelle
ligne apparaît. Elle permet la saisie d'une nouvelle propriété et de sa valeur. Par exemple ajoutez :
font-style: oblique; et observez le résultat.
Ajoutez une couleur d'arrière-plan aux éléments <pre>.
Q 6. Poursuivons avec l'outil Calculé. Il permet pour un élément de connaitre le style calculé qui
s'applique à lui et d'avoir une explication sur ce calcul.
Sélectionnez-le puis dans la zone de gauche de l'inspecteur examinez son contenu lors de la sélection
de différents éléments du document.
Par exemple sélectionnez l'élément <strong>.
Quelle est la valeur indiquée pour la propriété color ?
Tout en appuyant sur la touche Shift, cliquez sur le disque contenant la couleur à gauche de la
valeur pour afficher différentes représentation de la couleur. Expliquez les informations fournies.
Explorer les «styles calculés» pour différents éléments.
Remarque N'oubliez pas de sauvegarder votre feuille de style régulièrement pour conserver votre
travail.
Q 5. Supprimez dans la feuille CSS la règle qui fixe la largeur des éléments p et modifiez celle pour les
éléments section en attribuant à la propriété width la valeur 80%.
Dans l'outil inspecteur, sélectionnez l'un des éléments section de la page et dans la zone Calculé
consultez la largeur de cet élément.
Maintenant faites varier la largeur de la fenêtre du navigateur tout en surveillant dans l'outil inspecteur
la valeur de la largeur affichée. Que peut-on en déduire sur la signification de la valeur 80% ?
Q 6. Dans la feuille CSS, fixez maintenant la largeur de l'élément body à 1000px. Définissez ensuite une
règle qui fixe la largeur des éléments section à 80% puis à 60%. Dans chaque cas utilisez l'outil
inspecteur pour connaitre la valeur exacte de la largeur de l'un des éléments section. Pourquoi cette
valeur ?
Repositionnez dans la feuille CSS la largeur des éléments section à 80% puis définissez une
nouvelle règle qui fixe la largeur des éléments p à 80%. Quelle est la valeur indiquée par l'inspecteur
pour la largeur de l'un des éléments p ? Pourquoi cette valeur ?
Que peut-on en déduire sur la signification de la définition d'une valeur en pourcentage de la largeur
d'un élément ? A quelle quantité s'applique ce pourcentage ?
Q 7. Dans le code source du fichier sites-touristiques.html vous pouvez constaté que des éléments
figure qui «encadrent» les éléments img sont actuellement placés en commentaire. Supprimez ces
marques de commentaire dans le fichier HTML puis ajoutez dans le fichier CSS un règle qui fixe à
550px la largeur des éléments figure.
Déduisez de la question précédente une règle CSS qui définit la largeur des éléments img de telle
sorte qu'ils occupent la totalité de la largeur des éléments figure sans en déborder.
Q 3. Supprimez toute référence à height et fixez la valeur de la propriété width des éléments <img> à
50%.
Réduisez la largeur de la fenêtre du navigateur, y compris jusqu'à avoir une «très» petite largeur. Que
constatez-vous sur les tailles d'affichage des images ?
Ajoutez maintenant à votre déclaration les définitions suivantes :
min-width : 200px;
max-width : 450px;
La signification des différentes valeurs est assez évidente. Notez que l'ordre est sans
importance. Vous pouvez le vérifier en modifiant l'ordre des valeurs sans changement dans
l'affichage, par exemple
2. Il est également possible d'agir sur chacune des propriétés individuellement. Ajoutez, après la
précédente, la règle :
border-width : 5px ;
pour constater qu'elle ne modifie que l'épaisseur de la bordure. Les autres propriétés opèrent de
façon similaire.
Remarque La valeur de l'épaisseur de la bordure peut aussi être fixée par quelques constantes
prédéfinies. Par exemple thin («mince» en anglais) correspond à une épaisseur de 1px.
Q 5. La propriété margin permet d'ajouter un espacement autour d'un élément. Cet espace est défini à
l'extérieur de la zone délimitée par la bordure, on parle donc de «marge extérieure». Pour la tester
ajoutez aux élément section la règle
margin : 10px;
Vous constatez que les éléments section "s'écartent" les uns des autres. La propriété margin permet
donc de créer un espace entre un élément et ses voisins.
Remarque Comme vous pouvez le vérifier avec l'outil inspecteur, l'élément body a une valeur par
défaut fixée à 8px pour la propriété margin. Ceci explique l'espace entre le contenu du document et le
bord de la fenêtre du navigateur.
Q 6. La propriété padding permet d'ajouter un espacement autour du contenu de l'élément. Cet espace
est défini à l'intérieur de la zone délimitée par la bordure, on parle donc de «marge intérieure». Pour la
tester ajoutez aux élément section la règle
padding : 15px;
Vous constatez que le contenu des éléments section s'éloigne des bordures, sans que les
dimensions de ce contenu, définies par width et height, ne changent.
Q 7. Quelle est la couleur d'arrière-plan de la zone due à la propriété margin liée à la propriété padding
qui est apparue entre la bordure et le contenu ? D'où provient cette valeur ?
De même quelle est la couleur d'arrière-plan de la zone due à la propriété margin ?
⊞ « Vérifiez » votre réponse
Q 8. Dans l'outil inspecteur, activez l'onglet Calculé puis sélectionnez l'un des éléments section. Vous
devriez obtenir des informations similaires à ceci :
Fig. 1. Les valeurs des propriétés de la boîte CSS d'un élément section dans l'outil inspecteur.
L'outil permet de retrouver l'ensemble des valeurs des propriétés qui régissent la «boite CSS» d'un
élément.
On peut constater que, dans la fenêtre du navigateur, la zone mise en évidence lors de la sélection de
l'élément section comprend bien la partie margin même si celle-ci est "invisible".
A quoi correspondent les différentes valeurs qui apparaissent dans l'outil Calculé ? En particulier la
valeur 190x190 ?
Complément
Les éléments occupent dans la page un espace de forme rectangulaire. La taille de l'espace occupé par
un élément dans la page est définie à la fois par la taille de son contenu et par l'espacement autour de
ce contenu. Les dimensions d'affichage du contenu d'un élément sont définies par les propriétés width
et height. L'espace autour du contenu est géré grâce à trois paramètres :
» la marge intérieure (padding) gère les dimensions de la zone entre le contenu de l'élément et sa
bordure
» la bordure (border) désigne un cadre situé autour du contenu de l'élément
» la marge extérieure (margin) gère les dimensions de l'espacement entre la bordure et le reste de
la page (les boîtes des autres éléments affichés «autour»), donc l'espacement à l'extérieur de la
bordure
Notons que ces propriétés ne s'héritent pas. C'est-à-dire que si l'on définit une marge (par exemple) pour
un élément, cette marge ne s'applique pas pour ses éléments enfants (ceux qui sont emboités dedans).
Pour chacune de ces propriétés (voir exercice suivant) il est possible de définir séparément des valeurs
de propriétés pour les parties supérieure (suffixe -top), droite (suffixe -right), inférieure (suffixe -bottom)
et gauche (suffixe -left) de la boîte.
Fig. 2. Le modèle de boîte CSS et les différentes propriétés associées.
padding-left : 20px;
Profitons de l'occasion pour préciser que les dimensions que nous avons jusque maintenant toujours
exprimé de manière fixe en pixels, peuvent s'exprimer également en pourcentage. Essayez :
padding-left : 3%;
Remarque Comme vous pouvez le vérifier avec l'outil inspecteur, les éléments h1 ont une valeur par
défaut pour les marges supérieure et inférieure fixée à 20px. Ceci explique l'espace au-dessus et en-
dessous de cet élément dans la page.
padding : 4px;
en essayant de la placer après puis avant la règle définie dans la question précédente, vérifiez que dans
un cas comme dans l'autre pour la marge gauche c'est bien la dernière règle écrite qui l'emporte.
Q 4. Ajoutez une règle pour donner au bordure inférieure des éléments section la couleur #F44336.
Les trois autres côtés de la bordure doivent rester en blanc.
Q 5. Définissez des règles pour ajouter au-dessus et au-dessous des élements h1 une bordure en trait
continu de couleur #FFEB3B et épaisse de 5px. Il ne doit pas y avoir de bordure à gauche et à droite.
Q 6. Pour les marges, intérieures ou extérieures, il est possible de définir les valeurs des tailles des
différents côtés directement avec padding ou margin. Il suffit de fournir plusieurs valeurs à ces
propriétés. Les côtés affectés dépendent du nombre de valeurs fournies. Par exemple en fournissant
deux valeurs on agit sur les tailles verticales et horizontales, essayez pour les éléments section :
En fournissant quatre valeurs on agit (dans cet ordre) sur les tailles au-dessus, à droite, en-dessous et
à gauche, essayez pour les éléments section :
Q 7. Pour les éléments h1 définissez une marge intérieure de 5px au-dessus et en-dessous et de 3% à
gauche et à droite.
Q 8. Jusque maintenant nous n'avons agi que sur des éléments de flux mais les propriétés margin,
padding et border s'appliquent également aux éléments de phrasé. Pour le vérifier ajoutez pour les
éléments span (il y en dans le titre) des règles pour
» définir une bordure au-dessus et en-dessous blanche, d'un pixel et en style dashed,
» définir un padding horizontal de 5px et vertical de 1px.
Q 9. Nous allons voir comment centrer horizontalement un élément (pas un contenu qui peut se centrer
grâce à la propriété text-align : center).
Commencez par fixer la largeur des éléments h1 à 800px. On pourrait checher les valeurs de margin-
left et margin-right à définir pour centrer l'élément mais la difficulté est que l'on ne connaît pas la
largeur d'affichage du document HTML. Pour controuner ce problème il faut utiliser la valeur auto.
Essayez la en définissant une règle CSS qui attribue aux éléments h1 une marge (extérieure)
supérieure et inférieure de 10px et la valeur auto aux marges gauche et droite.
Constatez le résultat puis vérifiez qu'il reste valable lorsque vous changez la valeur de la propriété
width des éléments h1.
Q 10. Finissons par une étude du comportement des marges entre éléments contigüs. Commencez par
supprimer les valeurs de la propriété margin pour les éléments section.
1. Ajoutez une règle pour définir la marge gauche des éléments section à 10px, puis, après avoir
observé le résultat, ajoutez une autre règle pour définir la marge droite des éléments section à
10px.
Vous devez constater que les espaces créés par les marges gauche et droite se sont
additionnés. A l'aide de l'outil inspecteur vérifiez que les boites (avec leur marge) des éléments
section voisins se juxtaposent.
2. Ajoutez maintenant une règle pour définir la marge supérieure des éléments div à 10px. Vous
constatez que logiquement un espacement a été créé entre les éléments div qui représentent
les lignes.
Ajoutez maintenant une autre règle pour définir la marge inférieure de ces mêmes éléments
div à 10px. Que constatez-vous au niveau de l'espace vertical entre ces éléments ? A-t-il
changé ?
La réponse est non : contrairement aux marges gauche et droite, les marges supérieure et
inférieure ne se juxtaposent pas mais elles fusionnent. Vous pouvez le vérifier avec l'inspecteur
où vouss pouve constater le chevauchement des boites de deux éléments div successifs.
Modifiez la règle qui définit la marge inférieure pour modifiez sa valeur à 20px. Que constatez-
vous ? Quelle est la valeur de l'espace vertical entre deux éléments div ?
Passez la valeur de la marge supérieure à 35px et à nouveau déterminez la valeur de l'espace
vertical entre les éléments div. Pourquoi cette valeur ?
Déduisez-en la règle qui définit l'espace vertical entre deux éléments en fonction des valeurs de
leurs marges inférieure et supérieure .
Q 3. Appliquez chacune de ces feuilles de style au deux documents sur les tables et visualisez les
résultats.
Q 4. Compte-tenu de ce qui a été vu, que faudrait-il modifier dans le document evol-pop.html pour que
les cellules contenant les années soient considérées comme des entêtes de ligne et puissent recevoir
un style différent des autres
Si cela n'avait pas été fait dans le document initial, faites-le, au moins sur quelques-unes des
premières lignes, puis étudiez l'impact de cette modification lors de l'application de la feuille de style.
Q 5. Comme toujours, vérifiez la validité CSS3 de vos feuilles.
Remarque Supprimez de evol-pop.html les informations de style définies initialement dans l'entête.