Les CSS ou Cascading Style Sheets permettent la mise en forme le contenu XHTML.
Un aperçu des possibilités du CSS nous est donné par le site CSS Zen Garden.
Les CSS permettent notamment de modifier :
La version actuelle des CSS est la version 3, liée à (X)HTML 5.
Un fichier CSS se compose d'un ensemble de règles qui définissent des styles qui seront appliqués à des éléments de la page (X)HTML.
Le format d'une règle CSS est très simple :
selecteur {
propriete_1 : valeur_1 ;
propriete_2 : valeur_2 ;
...
propriete_n : valeur_n ;
}
Le sélecteur peut être :
Les propriétés peuvent être, comme nous allons le détailler par la suite :
Voici quelques exemples de combinaisons de sélecteurs :
sélecteur | description |
|
définition d'un style pour la balise h1 |
|
les balises h1 et h2 sont concernées |
|
balise em à l'intérieur d'un paragraphe |
|
définition d'une classe (ex: <p class="rouge"> ... <p>) |
|
définition du style d'un identifiant (ex: <balise id="menu">..<balise>) |
|
tout paragraphe descendant direct de menu |
|
pseudo classe comme :link, :visited, :hover, :first-child |
|
premier paragraphe |
|
second paragraphe dans un enchaînement h1 suivi de deux paragraphes |
|
champ de formulaire de type text |
Les pseudo classes sont nombreuses (voir ci-après pour nth-child), on trouvera notamment :
Par exemple
Voici un autre exemple : ici, toute balise em qui découle directement de #ce_paragraphe apparaitra en rouge et en majuscule.
<style>
#ce_paragraphe_1 > em {
color : red ;
text-transform : uppercase ;
}
</style>
Voici de l'italique. Puis une balise span est ouverte, on remet de l'italique, et on referme la balise span. Enfin, on remet de l'italique.
<p id="ce_paragraphe_1">Voici de <em>l'italique</em>. Puis une balise span est ouverte, <span>on remet de <em>l'italique</em>, et on referme la balise span</span>. Enfin, on remet de <em>l'italique</em>.</p>
Le résultat obtenu est que le premier et le troisième <em> apparaissent en rouge et en majuscule, alors que ce n'est pas le cas pour le second qui est à l'intérieur d'un span.
Pour obtenir tous les em en rouge, il aurait fallu écrire :
Voici de l'italique. Puis une balise span est ouverte, on remet de l'italique, et on referme la balise span. Enfin, on remet de l'italique.
<p id="ce_paragraphe_2">Voici de <em>l'italique</em>. Puis une balise span est ouverte, <span>on remet de <em>l'italique</em>, et on referme la balise span</span>. Enfin, on remet de <em>l'italique</em>.</p>
Les propriétés CSS d'une balise sont héritées par ses descendants d'où le terme Cascading (en cascade). L'ordre de définition des règles est également important.
Chaque élément de la page est défini par :
Modèle de boîte - image issue de W3Scools.com
Voir w3schools.boxmodel pour de plus amples informations.
On peut donc définir les propriétés suivantes :
On a vu que certaines balises (X)HTML peuvent contenir d'autres balises (
- Les éléments de rendu CSS block se placent l'un en dessous de l'autre par défaut (comme un retour chariot). Par exemple: une suite de paragraphes (balise <p>). Par ailleurs, un élément "bloc" occupe automatiquement, par défaut, toute la largeur disponible dans son conteneur et peut être dimensionné à l'aide des propriétés telles que width, height, min-width, ou min-height,...
- Les éléments de rendu inline se placent toujours l'un à côté de l'autre afin de rester dans le texte (par exemple la balise <strong>). Par défaut, il n'est pas prévu qu'ils puissent se positionner sur la page (même si cela est possible), ni de leur donner des dimensions (hauteur, largeur, profondeur) : leur taille va être déterminée par le texte ou l'élément qu'ils contiennent. Certaines propriétés de marges peuvent être appliquées aux éléments, comme les marges latérales.
Source : alsacreations
Les grandeurs sont définies en fonction de l'unité qui les suivent : w3schools.units
On utilise généralement le pixel qui est le plus naturel et le plus simple à utiliser car il correspond à une mesure liée à l'écran.
Il existe quatre possibilités :
Lorem ipsum dolor sur font vert
<head> <style> #my_div { background-color: green; color: white; font-size: 14px; } </style> </head> <body> <h1 class="red">Titre en rouge</h1> <div id="my_div"> <p>Lorem ipsum dolor sur font vert</p> </div> </body>
Concernant les polices de caractères, plusieurs éléments peuvent être définis :
Avec la propriété une valeur de 10000 Il existe plusieurs polices (Google Fonts) que l'on peut inclure dans sa page. On utilise Ici A noter : Pour en savoir plus sur la définition des couleurs on peut consulter cette page. Par exemple, à l'intérieur d'un paragraphe ou d'un label, on peut modifier la disposition du texte : capitalize uppercase underline overline line through Les éléments apparaissent dans l'ordre dans lequel ils sont définis dans le fichier XHTML, cependant on peut modifier leur positionnement (propriété On peut également utiliser la propriété Pour mettre fin à la propriété <style>
.trop_styleee {
font: italic small-caps bold 24px/30px serif;
}
</style>
</head>
<body>
<p class="trop_styleee">une valeur de 10000</p>
</body>
4.2.9. les couleurs
4.2.10. alignement et transformation du texte
<p style="text-transform: capitalize;">capitalize</p>
<p style="text-transform: uppercase;">uppercase</p>
<p style="text-decoration: underline;">underline</p>
<p style="text-decoration: overline;">overline</p>
<p style="text-decoration: line-through;">line through</p>
4.2.11. positionnement des éléments
On peut modifier le rendu des listes en fonction de ses besoins.
On utilise la propriété
Remarque : ces valeurs peuvent aussi s'appliquer à des listes numérotées.
On modifie le type de numérotation en utilisant la même propriété mais en utilisant les valeurs :
Il est possible de remplacer les cercles ou carrés par une image en définissant la propriété
La première propriété à fixer pour les tableaux est
On a vu dans la partie HTML que les tableaux sont composés de trois parties :
Ces balises peuvent être mises en forme ainsi que les balises
Vous trouverez sur cette page des exemples de mise en forme des tableaux.
CSS permet de gérer plus finement certains éléments grâce à ce que l'on appelle des pseudo-classes (évoquées précédemment).
Sur l'exemple qui suit, chaque premier
Pour les paragraphes, ils occuperont 70% de la largeur de la page. On utilise ensuite une expression passée en paramètre de
La première règle indique que les paragraphes pairs (dans une suite de paragraphes contenus dans un
Etant donné que la règle 2 est placée dans le fichier CSS après la règle 1, elle est prioritaire par rapport à la règle 1 :
paragraphe | règle 1 bleu |
règle 2 vert |
1 | vert | |
2 | bleu | |
3 | ||
4 | bleu | vert |
5 | ||
6 | bleu | |
7 | vert | |
8 | bleu | vert |
9 | ||
10 | bleu | vert |
Vous pouvez le vérifier sur cet exemple.
CSS autorise (depuis la version 3), la définition et l'utilisation de variables. On peut également réaliser des calculs avec ces variables. Généralement, il s'agit de calculer des distances en pixels pour positionner certains éléments sur la page de manière à s'adapter, au mieux, aux différents types d'écrans : PC, Tablet, téléphone portable.
Par exemple, on veut que tel élément occupe 1/3 de la largeur de la page et tel autre, les 2/3. On peut déjà faire cela en CSS en utilisant
On peut également créer des variables qui stockent des couleurs.
Vous trouverez des informations plus détaillées sur le site suivant :
Voici en outre une brève introduction qui utilise des variables pour diviser le viewport, c'est à dire la fenêtre du navigateur, en une grille de 6x6 cases. Les cases sur les bords ne sont pas utilisées et les cases du centre sont utilisées pour afficher un titre et des paragraphes : Grid et CSS.
On commence par définir des variables sous la forme suivante au niveau d'une balise
On définit ici quatre variables qui commencent par
Il ne reste plus qu'à définir la grille et placer le
On indique que
En outre, il faut indiquer que le
On notera que pour utiliser la valeur d'une variable il faut utiliser la fonction
Attention, si vous désirez ajouter ou soustraire 10 pixels à une variable, il faudra généralement indiquer l'unité px
sinon le calcul ne fonctionnera pas :
La possibilité vous est offerte de pouvoir tester si votre page est conforme aux standards en vigueur :
Il est possible de définir ses propres balises XHTML, il suffit pour cela que la balise commence par
Le rendu obtenu est le suivant :
La balise
Il existe plusieurs frameworks CSS, le plus utilisé étant probablement Bootstrap. Celui-ci utilise à la fois du CSS et du Javascript.
Une autre alternative uniquement CSS pour le positionnement des éléments est Flexbox.
Pour la disposition des éléments, il suffit d'utiliser flexbox qui consiste à modifier la propriété
Globalement, flexbox définit deux directions pour lesquelles on va pouvoir spécifier comment placer les composants qui sont
à l'intérieur d'un container (composant les contenant), ceci avec un
Flexbox se base sur deux axes :
On peut ensuite positionner les items en utilisant deux propriétés :
Par exemple, pour centrer horizontalement et verticalement les items, on utilise la valeur
Suivre le lien suivant pour avoir un aperçu plus détaillé.
En Septembre 2023, Bootstrap est en version 5.3. Il s'agit d'un framework de positionnement et d'organisation des balises HTML qui utilise CSS ainsi que javascript. Bootstrap propose également un ensemble de composants (Components) comme les accordions, Carousel, Alert, NavBar, Modal, etc
Vous pouvez consulter la Documentation Bootstrap 5.3.
Voici un exemple de page qui utilise Bootstrap. On utilise jsdelivr.com un CDN (Content Delivery Network) au lieu de mettre tous les fichiers sur sa machine.
L'élément de base est le container qui peut être composé de lignes qui contiennent des colonnes, c'est ce que l'on appelle un modèle de grille.
Tout est expliqué sur cette page.
Voici un petit exemple de mise en forme avec bootstrap. Une fois la page ouverte tapez Ctrl + U pour étudier son code source. On a créé une page avec les caractéristiques suivantes :
Je vous laisse découvrir les autres classes comme