Raconté par Vincent Jugé
sur la base d'un cours créé par Rémi Forax
CSS | 1996 |
CSS level 2 | 1998 |
CSS level 2 revision 1 | 2011 |
CSS 3 | Selector(2011), Color(2011), Media Queries(2012), ... |
CSS 4 | ??? |
L'attribut style permet de changer le style d'une balise,
par exemple pour la colorier en
orange.
La balise style permet de définir des styles qui seront valides pour tout le document.
<html>
<head>
<style>
strong {
color: orange;
}
</style>
</head>
...
Toutes les balises strong seront orange.
Pour que plusieurs pages HTML aient le même style,
le style est écrit dans un fichier .css référencé
par les différentes
pages.
<html>
<head>
<link rel="stylesheet" type="text/css" href="example.css">
</head>
...
Si l'on veut que seule une balise ait un style particulier, on peut donner un identifiant à cette balise.
<ul>
<li id="important">Don't cross the streams !</li>
</ul>
On utilisera '#' et l'id dans le style.
li#important {
color: orange;
}
On peut aussi vouloir distinguer plusieurs balises. On indique les balises qui appartiennent à une même classe.
<ul>
<li>Say hello</li>
<li class="important">Don't cross the streams !</li>
<li class="important">To Infinity and Beyond !</li>
</ul>
On utilisera '.' et le nom de la classe dans le style.
li.important {
color: orange;
}
Une classe peut concerner plusieurs balises, et une balise peut avoir plusieurs classes.
<ul>
<li class="order">Say hello</li>
<li class="important order">Don't cross the streams !</li>
<li class="important">To Infinity and Beyond !</li>
</ul>
On utilisera '.' et le nom de la classe dans le style.
li.important {
color: orange;
}
.order {
font-weight: bold;
}
Un style est une liste de sélecteurs auxquels
sont associées des propriétés.
selecteur1 {
nom1: valeur1;
nom2: valeur2;
}
/* ceci est un commentaire */
selecteur2 {
autre-nom: autre-valeur;
}
'/*' démarre un commentaire, '*/' le finit.
E | éléments de type E |
E1 E2 | un élément E1 suivi par E2 |
E#myid | élément dont l'id est myid |
E.myclass | élément dont la class est myclass |
E[foo] | éléments avec un attribut foo |
E[foo="val"] | élément dont l'attribut foo a la valeur val |
E::first-letter | première lettre d'un texte (pseudo élément) |
E:first-child ou E:last-child |
premier élément ou dernier élément (pseudo classe) (CSS3 selector) |
a:link, a: visited, a:hover, a:active |
état d'un lien |
Exemple d'application d'un style à des éléments
et des pseudo-éléments.
La première ligne est la première ligne affichée
Cascading signifie que si l'on applique un style à un élément, le style est propagé [1] à tous ses sous-éléments.
[1] ou hérité, si l'on regarde du point de vue des enfants.
L'algorithme marche en 2 temps :
1. on applique les sélecteurs dans l'ordre du fichier ;
body {
color: blue;
}
li {
color: green;
}
L'algorithme marche en 2 temps :
2. on propage les styles.
body {
color: blue;
}
li {
color: green;
}
Il y a plusieurs façons d'indiquer une couleur.
CSS3 Color définit encore d'autres façons...
Il existe plusieurs unités de taille :
% | pourcentage de l'écran |
em | proportionnelle à la fonte courante (16 px avec la fonte par défaut) |
px | en pixels |
mm, cm, in, pt | en unités physiques |
⚠ Catalogue ! ⚠
Noms génériques de familles de police qui marchent indépendamment des polices installés sur le client
Nom générique | Exemples de polices |
---|---|
sans serif | Arial, Helvetica |
serif | Times Roman, Garamond |
monospace | Courier, Lucida Console |
Il existe des pseudo-classes reflétant l'état d'un lien.
a:link { /* lien non visité */
color: green;
}
a:visited { /* lien visité */
color: green;
}
a:hover { /* souris au-dessus du lien */
color: teal;
}
a:active { /* on clique sur le lien */
color: red;
}
Il est possible de mettre des bordures et sur la table et sur les td et th.
border-collapse fond plusieurs bordures en une seule.
La taille de la table est calculée par son contenu, sauf si on utilise les propriétés width et height.
padding définit l'espacement entre le texte et la case.
text-align: left | center | right
aligne le texte dans les cases.
vertical-align: top | center | bottom
aligne verticalement le texte dans la case.
On utilise la pseudo classe :nth-child
avec les valeurs odd ou even sur une ligne (tr).
Avec le même principe, on peut utiliser la pseudo classe :hover.
Pour l'affichage, les éléments sont séparés en 2 catégories :
A et BOLD sont des inlines, P, UL ou LI sont des blocks.
Balises sans propriété par défaut :
<div class="error">
Une <span class="important">erreur</span> s'est produite ...
</div>
background-color spécifie une couleur de fond.
background-image spécifie
une image de fond.
<div class="box1">Lorem ipsum dolor sit ...</div>
<div class="box2">Lorem ipsum dolor sit ...</div>
Le CSS définit 3 propriétés définissant les boîtes autour du contenu.
<div class="box1">Box1</div>
<div class="box2">Box2</div>
float: left | right
indique que le texte passe autour de la boîte flottante.
On peut utiliser cette technique pour positionner des boîtes.
float répartit les boîtes à gauche et à droite.
clear permet d'arrêter
l'affichage flottant.
Une boîte avec la propriété float ne supporte pas l'alignement vertical.
display: inline-block
permet de voir un élément comme un inline
et donc de pourvoir utiliser vertical-align.
Mais attention aux espaces car ils sont gérés comme faisant partie de l'affichage !
position permet de positionner un élément.
Les valeurs de left, top, right, bottom peuvent être négatives.
absolute permet de placer une boîte par rapport à une boîte relative.
Et comment on
On ne fait pas ça en CSS, on utilise JavaScript pour cela !