Cours
Objectifs
Comment mettre en forme une page Web ?
Présentation
CSS
Programmation Web et bases de donnéesCSS
CSS
CSS
p {
color: red;
}
h1 {
font-size: 24px;
}
Langage de feuilles de style pour décrire la présentation d'un document structuré (HTML).
Extension des fichiers en
.css.
Règle CSS
Règle CSS
https://web.dev/learn/css/selectors
Liste de règles. Chaque règle est composée de :
Un sélecteur : où appliquer la règle.
Un bloc de déclarations délimité par
{}: quoi appliquerUne déclaration est composée d'une propriété et d'une valeur séparées par
:.Une déclaration se termine par un
;.
Sélecteur simple : Sélecteur de type
Sélecteur simple : Sélecteur de type
<div>
<h1 id=main class="title">Titre</h1>
<p>Paragraphe</p>
<p>Deuxième paragraphe</p>
<h2 class="title subtitle">Sous-titre</h2>
<p>
Autre paragraphe avec un
<a href="https://example.com">lien</a>.
</p>
</div>
h1 {
color: blue;
}
Sélectionne tous les éléments d'un type (tag).
Sélecteur simple : Sélecteur de classe
Sélecteur simple : Sélecteur de classe
<div>
<h1 id=main class="title">Titre</h1>
<p>Paragraphe</p>
<p>Deuxième paragraphe</p>
<h2 class="title subtitle">Sous-titre</h2>
<p>
Autre paragraphe avec un
<a href="https://example.com">lien</a>.
</p>
</div>
.title {
color: blue;
}
Sélectionne tous les éléments avec l'attribut
classcontenant la classe.Un élément peut avoir plusieurs classes séparées par des espaces.
Peut être combiné avec d'autres sélecteurs :
h1.title.Peut être combiné avec d'autres classes :
.title.subtitle.
Sélecteur simple : Sélecteur d'identifiant
Sélecteur simple : Sélecteur d'identifiant
<div>
<h1 id=main class="title">Titre</h1>
<p>Paragraphe</p>
<p>Deuxième paragraphe</p>
<h2 class="title subtitle">Sous-titre</h2>
<p>
Autre paragraphe avec un
<a href="https://example.com">lien</a>.
</p>
</div>
#main {
color: blue;
}
Sélectionne l'élément avec l'attribut
idégal à l'identifiant.Chaque identifiant doit être unique dans une page.
Peut être combiné avec d'autres sélecteurs :
h1#main.
Sélecteur simple : Sélecteur universel
Sélecteur simple : Sélecteur universel
<div>
<h1 id=main class="title">Titre</h1>
<p>Paragraphe</p>
<p>Deuxième paragraphe</p>
<h2 class="title subtitle">Sous-titre</h2>
<p>
Autre paragraphe avec un
<a href="https://example.com">lien</a>.
</p>
</div>
* {
color: blue;
}
Sélectionne tous les éléments de la page.
Sélecteur simple : Sélecteur d'attribut
Sélecteur simple : Sélecteur d'attribut
<div>
<h1 id=main class="title">Titre</h1>
<p>Paragraphe</p>
<p>Deuxième paragraphe</p>
<h2 class="title subtitle">Sous-titre</h2>
<p>
Autre paragraphe avec un
<a href="https://example.com">lien</a>.
</p>
</div>
[href] {
color: blue;
}
Sélectionne tous les éléments avec un attribut.
Peut être combiné avec une valeur d'attribut :
[class="title"].Peut être combiné avec d'autres sélecteurs :
a[href].
Combinateur : Voisin direct
Combinateur : Voisin direct
<div>
<h1 id=main class="title">Titre</h1>
<p>Paragraphe</p>
<p>Deuxième paragraphe</p>
<h2 class="title subtitle">Sous-titre</h2>
<p>
Autre paragraphe avec un
<a href="https://example.com">lien</a>.
</p>
</div>
h1 + p {
color: blue;
}
Sélectionne les éléments qui sont des voisins directs d'un élément.
Syntaxe :
h1 + psélectionne les<p>qui suivent immédiatement un<h1>.
Combinateur : Voisin
Combinateur : Voisin
<div>
<h1 id=main class="title">Titre</h1>
<p>Paragraphe</p>
<p>Deuxième paragraphe</p>
<h2 class="title subtitle">Sous-titre</h2>
<p>
Autre paragraphe avec un
<a href="https://example.com">lien</a>.
</p>
</div>
h1 ~ p {
color: blue;
}
Sélectionne les éléments qui sont des voisins d'un élément.
h1 ~ psélectionne les<p>qui ont le même parent que<h1>.
Combinateur : Enfant
Combinateur : Enfant
<div>
<h1 id=main class="title">Titre</h1>
<p>Paragraphe</p>
<p>Deuxième paragraphe</p>
<h2 class="title subtitle">Sous-titre</h2>
<p>
Autre paragraphe avec un
<a href="https://example.com">lien</a>.
</p>
</div>
div > h2 {
color: blue;
}
Sélectionne les éléments qui ont un parent direct d'un élément.
div > h2sélectionne les<h2>qui sont des enfants (descendants directs) de<div>.
Combinateur : Descendant
Combinateur : Descendant
<div>
<h1 id=main class="title">Titre</h1>
<p>Paragraphe</p>
<p>Deuxième paragraphe</p>
<h2 class="title subtitle">Sous-titre</h2>
<p>
Autre paragraphe avec un
<a href="https://example.com">lien</a>.
</p>
</div>
div a {
color: blue;
}
Sélectionne les éléments qui ont un parent (non direct) d'un élément.
div asélectionne les<a>qui sont des descendants de<div>.
Pseudo-classe
Pseudo-classe
Selon l'état d'un élément, par exemple :
:hover: lorsque la souris survol l'élément.:focus: lorsque l'élément est en focus (sélectionné).:link: pour les liens non visités.:visited: pour les liens visités.:first-child: pour le premier enfant d'un parent.
Pseudo-élément
Pseudo-élément
Permet de cibler une partie d'un élément.
::before: insère du contenu avant le contenu de l'élément.::after: insère du contenu après le contenu de l'élément.::first-letter: cible la première lettre d'un élément.::first-line: cible la première ligne d'un élément.
Résumé des sélecteurs
Résumé des sélecteurs
Sélecteur simple
Sélecteur de type :
h1Sélecteur de classe :
.titleSélecteur d'identifiant :
#mainSélecteur universel :
*Sélecteur d'attribut :
[href]
Combinateur
Voisin direct :
h1 + pVoisin :
h1 ~ pEnfant :
div > pDescendant :
div p
Pseudo-classe :
:hoverPseudo-élément :
::before
Ajout de styles
Ajout de styles
Trois manières d'appliquer du CSS :
Inline : attribut
styledans une balise HTML.Interne : balise
<style>dans la section<head>du document HTML.Externe : fichier
.csslié à la page HTML avec une balise<link>dans la section<head>.
Inline
Inline
<!doctype html>
<html>
<head>
...
</head>
<body>
<p style="color: red;">Texte rouge</p>
</body>
</html>
Application ponctuelle pour un élément.
Difficile à maintenir et à réutiliser → déconseillé
Interne
Interne
<!doctype html>
<html>
<head>
<style>
p {
color: red;
}
</style>
</head>
<body>
<p>Texte rouge</p>
</body>
</html>
Application ponctuelle pour une page.
Mélangé avec le contenu → déconseillé
Externe
Externe
index.html
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<p>Texte rouge</p>
</body>
</html>
style.css
p {
color: red;
}
Application globale pour un site.
Séparé du contenu et réutilisable → recommandé
Chargement
Chargement
Chargement sans CSS
Chargement sans CSS

https://css-tricks.com/that-time-i-tried-browsing-the-web-without-css/
Ajout de styles
Ajout de styles
Trois manières d'appliquer du CSS :
Inline : attribut
styleInterne : balise
<style>Externe : fichier
.css
Priorité : Inline > Interne > Externe
Héritage : les enfants héritent des propriétés des parents.
Cascade : règles plus spécifiques > règles plus générales
Cascade
Cascade
La cascade est un algorithme qui détermine quelle règle CSS s'applique lorsqu'il y a plusieurs règles.
Origine des règles : Inline > Interne > Externe
Spécificité : règles plus spécifiques > règles plus générales
Identifiant > Classe > Type :
#main>.title>h1Plus de sélecteurs > moins de sélecteurs :
h1.title>h1Beaucoup de combinaisons > peu de combinaisons :
div p>p
Ordre d'apparition : Défini en dernier > défini en premier
Important : une règle avec
!importanta la priorité sur les autres règles, à utiliser avec parcimonie.Héritage : les enfants héritent de leur parent (par défaut).
Propriété héritée :
color,font-family, …Propriété non héritée :
margin,padding, …
Cascade
Cascade
Règle générale :
Identifiant > Classe > Type
Spécifique > Général

Modèle de boîte
Modèle de boîte

https://www.theodinproject.com/lessons/foundations-the-box-model
Modèle de boîte
Modèle de boîte

https://developer.mozilla.org/fr/docs/Web/CSS/Guides/Box_model
Modèle de boîte
Modèle de boîte

https://commons.wikimedia.org/wiki/File:Boxmodell-detail.png
Disposition
Disposition
Quelques outils pour placer des éléments en CSS :
Couleur
Couleur
https://www.antipixel.com/code-couleur-html-selecteur-de-couleurs-et-palettes-pour-le-web/
Palette de couleurs
Palette de couleurs
Sélection de couleurs qui vont bien ensemble.
Outils : Coolors, Color Hunt, …
Identité visuelle et charte graphique : EPFL, Unil, État de Vaud, …
Versions sans animation, plein écran, imprimable.
