Remi Forax
“Cascading Style Sheets (CSS) is a style sheet language used for describing the presentation of a document written in a markup language.”
source: Wikipedia.org - CSS
“La feuille de style en cascade (CSS) est un langage de feuilles de style utilisé pour décrire la présentation d'un document écrit dans un langage à balises”
sources : Wikipedia.org - CSS
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, en orange
La balise style permet de définir des styles qui seront valides pour tout le document
<html>
<head>
</head>
...
toutes les balises STRONG seront oranges
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
- Don't cross the streams !
On utilisera '#' et l'id dans le style
li#important {
color: orange;
}
On peut aussi vouloir distinguer plusieurs balises, en indiquant les balises qui appartiennent à une même classe.
- Say hello
- Don't cross the streams !
- To Infinity and Beyond !
On utilisera '.' et le nom de la classe dans le style
li.important {
color: orange;
}
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 E2 dont un ancètre est E1 |
E1 > E2 | un élément E2 dont le père est E1 |
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 pseudos é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éfinie d'autres façons ...
Pour les tailles, il existe plusieurs unités
% | pourcentage de l'écran |
em | proportionnelle à la fonte courante (16 px avec la fonte par défaut) |
px | en pixel |
mm, cm, in | en unité physique :( |
Noms génériques de familles de police qui marchent indépendamment des polices installées 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 à la table et aux cases 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éfinie 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.
Une erreur s'est produite ...
background-color spécifie une couleur de fond
background-image spécifie une image de fond
Lorem ipsum dolor sit ...
Lorem ipsum dolor sit ...
Le CSS définit 3 propriétés spécifiant les espacements et les bordures
Box1
Box2
float: left | right indique que le texte passe autour de la boite flottante
On peut utiliser cette technique pour positionner des boites
float répartit les boites à gauche et à droite,
clear permet d'arrêter l'affichage flottant
Une boite 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 pouvoir 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 boite par rapport à une boite relative
Et comment on
On ne fait pas ça en CSS, on utilise JavaScript pour cela !