CSS PDF
CSS PDF
CSS PDF
Technologies du Web 1
Jean-Christophe Routier
Licence 1 SESI
Université Lille 1
sansCSS.html
CSS
Un concept important
Concept
La séparation de la forme et du contenu.
Avantages
I document HTML et feuille CSS peuvent être définis dans des fichiers
séparés
I construction du document (HTML) sans se préoccuper de son rendu
visuel
I création plus efficace
I code HTML plus simple et plus lisible
I on peut changer la feuille de style sans changer le document (évolution
du « look »)
I on peut avoir plusieurs feuilles de style pour un document
I sélection selon le « media »
I accessibilité
I l’homogénéité visuelle d’un site est facilitée
I plusieurs pages peuvent partager la même feuille de style
Principe
Règle CSS
Règle CSS
Une règle CSS définit pour un sélecteur une propriété CSS et sa valeur.
Différentes possibilités :
I sans CSS
I CSS dans le code HTML (beurk) : à proscrire !
I règles CSS “en dur” : bof, limitant
I feuille de style externe : la solution à adopter
I style 1 – la feuille css
I style 2 – la feuille css
ou aussi :
<link type="text/css" rel="stylesheet" href="fichier.css" media="screen"/>
Exemples de propriétés
Cascade
Cascade
Le mécanisme de cascade détermine les règles appliquées.
3 étapes de filtre :
1 par média
2 par origine
3 par spécificité des sélecteurs
Médias
ex : media="screen" – media="print"
Sélecteurs
Sélecteur
Le sélecteur détermine les éléments sur lesquels s’applique la règle.
Sélecteurs simples :
E tout élément dont la balise est <E>
* tout élément
Sélecteurs et attributs
E[att] tout élément E dont l’attribut att est défini
ex : p[lang], img[alt], *[title]
E[att=val] tout élément E dont l’attribut att vaut val
ex : p[lang=fr]
E[att∼=val] tout élément E dont l’attribut att est une liste de mots
séparés par des espaces, l’un de ces mots vaut exactement val
E[attˆ=”prefixe”] tout élément E dont la valeur de l’attribut att se
termine exactement par prefixe
ex : a[hrefˆ="http://fil.univ-lille1.fr"]
E[att$=”suffixe”] tout élément E dont la valeur de l’attribut att
commence exactement par suffixe
ex : img[src$=".png"], a[href$=".pdf"]
E[att*=”val”] tout élément E dont la valeur de l’attribut att contient la
sous-chaı̂ne val
ex : figure[alt*="diagramme"], *[title*="timoleon"]
Université Lille 1 - Licence 1 SESI Technologies du Web 1 15
CSS Cascade Sélecteurs
ex : a:visited, a.fichier:hover
E::pseudoE tout pseudo-élément pseudoE de l’élément E
ex : h1::first-letter, p[lang=fr]::first-line
Combinaison de sélecteurs
Exemples
body body
h1 p div h1 h1 p div h1
em h1 div p em h1 div p
em em em em
h1 ou body h1 div h1
body body
h1 p div h1 h1 p div h1
em h1 div p em h1 div p
em em em em
body>h1 div+h1
Crédits figures Bruno Bogaert
Université Lille 1 - Licence 1 SESI Technologies du Web 1 19
CSS Cascade Sélecteurs
Exemples
body body
h1 p div h1 h1 p div h1
em h1 div p em h1 div p
em em em em
div em div>em
body body
h1 p div h1 h1 p div h1
em h1 div p em h1 div p
em em em em
div p em body>p em
Crédits figures Bruno Bogaert
Université Lille 1 - Licence 1 SESI Technologies du Web 1 20
CSS Cascade Sélecteurs
Calcul de priorité
On compte pour chaque sélecteur :
a nombre de sélecteurs d’id (= nombre de #)
b nombre de classes, pseudo-classes ou d’attributs
c nombre d’éléments ou de pseudo-éléments
Le sélecteur reçoit la priorité a b c.
Le sélecteur avec la plus grande priorité l’emporte.
Exemples
sélecteur a b c
* {...} 0 0 0
h1 {...} 0 0 1
div.reponse {...} 0 1 1
#joconde {...} 1 0 0
div a {...} 0 0 2
div a:visited {...} 0 1 2
p span.fichier {...} 0 1 2
p a[href$=”.pdf”] {...} 0 1 2
p.enonce a[href$=”.pdf”] {...} 0 2 2
ol.exercice li.question {...} 0 2 2
div#diaporama img.gauche {...} 1 1 2
article p::first-letter {...} 0 0 3
article#special p::first-letter {...} 1 0 3
Héritage
Héritage
I lorsque pour un élément aucune règle ne définit de valeur pour une
propriété, c’est la valeur de cette propriété pour son parent qui
s’applique
Pseudo-classes
non exhaustif
Structurelles
:empty un élement E sans descendant (y compris nœud texte)
:first-child un élément qui est premier fils d’un autre élément
ex : div.exercice:first-child
:last-child élément dernier fils d’un autre élément
:nth-child(an + b) élément (an + b)-ème fils d’un autre élément
ex : div:nth-child(3), div:nth-child(2n),
div:nth-child(even), div[idx]:nth-child(3n+1)
:nth-last-child(an + b) (an + b)-ème fils en partant de la fin
:nth-of-type(an + b) (an + b)nème élément du type sélectionné et qui ont
le même père
non exhaustif
Dynamiques
:hover est « sous » le pointeur de la souris
:visited (<a> uniquement) lien déjà visité
:link (<a> uniquement) lien non encore visité
Pseudo-éléments
::first-line la première ligne « formatée » d’un élément
::first-letter le première lettre « formatée » d’un élément
::before insertion de contenu avant l’élément
::after insertion de contenu après l’élément
Exemples
body body
h1 p div h1 h1 p div h1
em h1 div p em h1 div p
em em em em
:first-child h1:first-child
body body
h1 p div h1 h1 p div h1
em h1 div p em h1 div p
em em em em
div>h1:first-child h1:first-child+*
Crédits figures Bruno Bogaert
Exemple