CSS est l’abréviation de Cascading StyleSheets, (feuilles de style en cascade). Ce langage a pour fonction de mettre en forme le contenu des pages web. Les CSS vous permettent de créer et contrôler le design de vos pages afin de les rendre visuellement attractives.
Vous allez écrire des règles qui vont appliquer des styles à des éléments HTML.
Les règles CSS sont constituées de sélecteurs (ci-dessous, p), de propriétés (ci-dessous, color) et de valeurs (ci-dessous, red). Le coupe propriété : valeur s’appelle une déclaration.
p {
color : red;
}
ul {
margin-left: 0;
}
Par exemple pour cibler toutes les listes non ordonnées, on utilise le selecteur ul :
<p class="rouge">Paragraphe écrit en rouge.</p>
<p class="rouge">Autre paragraphe écrit en rouge.</p>
HTML
CSS
.rouge {
color : red;
}
<div id="container"> ... </div>
HTML
CSS
#container {
width: 960px;
margin: auto;
}
CSS
li a {
text-decoration: none;
}
CSS
a[title] {
color: green;
}
CSS
* {
margin: 0;
padding: 0;
}
img + p {
font-style: bold;
}
img ~ p {
font-style: bold;
}
#article > h1 {
font-size: 36px;
font-family: Arial, Helvetica, sans-serif;
}
p:hover {
background-color: #f22e79;
}
Exemples d'effets de survol :
p::first-line {
color: green;
text-transform: uppercase;
}
Pour écrire un commentaire en CSS, on n’utilise pas la même syntaxe qu’en HTML :
/* commentaire en CSS */
<!-- un commentaire en HTML -->
Nous allons détailler chacune des trois façons de procéder :
1ère méthode : On écrit le css dans l'élément style placé dans l'élément head de la page.
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>Styles dans le head</title>
<style>p {color: #FD225D;font-size: 21px;font-family: Helvetica;}</style>
</head>
<body>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</body>
</html>
HTML
2ème méthode : Écrire du CSS dans la balise ouvrante d’un élément HTML.
On utilise un attribut style et on lui affecte en valeur les propriétés CSS.
<p style="color: #FD225D; font-size: 21px; font-family: Helvetica;">Lorem
ipsum dolor sit amet, consectetur adipiscing elit.</p>
HTML
3ème méthode : Écrire le code CSS dans un fichier séparé.
On créé un nouveau fichier dans un éditeur de texte et on l’enregistre au format .css.
On lie les deux fichiers HTML et CSS à l’aide d’un élément link placé dans l’élément head de la page. L'attribut rel précise qu'il s'agit d'une feuille de style et href donne le lien vers le fichier.
Souvent nommé « style.css » et enregistré dans le même dossier que le document HTML dont on souhaite modifier les styles.
Cette dernière technique est à privilégier pour améliorer la maintenabilité de votre code CSS, c'est à dire avoir un code plus facile à modifier. Sur un fichier externe, une seule modification peut impacter l'ensemble d'un site alors que si le CSS est dans une page ou pire dans une balise, il faut les modifier une à une...
Si un élément A contient un élément B ; l’élément B s’appelle l’enfant et l’élément A est le parent. Ainsi, si l’on applique un style à l’élément A, l’élément B en hérite automatiquement (ainsi que les enfants de B s’il en a).
Attention l’héritage ne fonctionne pas sur certaines propriétés css (margin, padding et autres propriétés de bloc).
Si on attribut deux styles incompatibles à un élément et à son parent (par exemple, donner une couleur verte au parent et bleue à l’enfant) le style appliqué sera celui de l’enfant.
Dans l’exemple ci-dessous, le titre h1 hérite du body sa propriété font-family mais pas sa couleur : la déclaration
de couleur ciblant le titre h1 a priorité sur la déclaration de couleur ciblant le body.
Propriété | Description |
---|---|
color | couleur du texte |
background-color | couleur d’arrière-plan |
Ces propriétés supportent plusieurs types de valeur :
Outil en ligne pour créer des palettes de couleurs : https ://coolors.co/app
Propriété | Description |
---|---|
font-size | la taille |
font-family | la police |
font-style | mettre en italique |
font-weight | mettre en gras |
text-decoration | soulignement et autres décorations |
text-transform | majuscule - minuscule |
text-align | l'alignement |
line-height | l'interligne |
opacity | la transparence |
Cette propriété accepte deux types de valeurs : des valeurs absolues, généralement exprimées en px ou pt ou relatives exprimées en em, en rem ou en %.
Pour que le texte soit lisible par tous et sur toutes les tailles d’écran, il faut autoriser le redimensionnement du texte et donc privilégier les unités relatives.
Un em correspond à la taille de la police attribuée au parent de l’élément courant.
La propriété font-family sert à définir la police du texte. Les polices les plus connues, Arial, Times New Roman, Courier New, Verdana, Georgia, Lucida, Tahoma, Trebuchet, Garamond sont installées sur la plupartdes machines.
La propriété font-style fixe l’inclinaison d’un texte. Valeurs :
La propriété font-weight fixe l’épaisseur de la police. Valeurs :
La propriété text-decoration permet de définir la décoration d’un texte. Elle peut prendre les valeurs :
On utilise la propriété text-transform pour faire passer des caractères de minuscule à majuscule ou inversement. Valeurs :
La propriété text-align permet de définir l’alignement d’un texte. Elle peut prendre cinq valeurs différentes :
La propriété line-height sert à fixer la distance entre deux lignes de texte c’est à dire l’interligne. Souvent on lui applique une valeur équivalente à 1,5 fois la taille de la police.
La propriété opacity fixe l’opacité du texte. On lui attribue une valeur comprise entre 0 (totalement transparent) et 1 (totalement opaque).
Choisir une police sur le site https://fonts.google.com/.
Pour l’utiliser, il faut dans un premier temps insérer un lien dans l’élément head de votre document html. Pour la police Nanum Pen Script on écrit :
HTML
<link href="https://fonts.googleapis.com/css?family=Nanum+Pen+Script"
rel="stylesheet">
CSS
font-family: 'Nanum Pen Script', cursive;
Puis déclarer le nom de la police choisie comme valeur de la propriété font-family :
Parmi les Google fonts les plus polulaires on trouve Open Sans, Roboto, Lato, Oswald, Montserrat, Raleway ...
Résultat :
http://www.mrmcguire.com/10-useful-google-font-combinations-for-your-next-site/
https://www.canva.com/font-combinations/
https://femmebot.github.io/google-type/
Un élément HTML est une "boîte rectangulaire" et peut avoir une marge intérieure (padding), une marge extérieure (margin) et une bordure (border).
On parle de modèle de boites :
Les propriétés height et width s’appliquent à des éléments de type block. On leur attribue une valeur absolue en px ou relative en % ou égale à auto.
En utilisant la valeur auto, on laisse le navigateur décider de la hauteur à donner à l’élément. Par défaut un élément de type block occupe toute la largeur disponible à l’intérieur de son parent. Sa hauteur est déterminée par son contenu.
Un élément HTML possède toujours une bordure, visible ou pas. La propriété padding définit l’espace entre
l’élément et sa bordure.
Il est possible de définir des marges différentes selon leur position avec les propriétés padding-right, padding-
bottom, padding-left et padding-top.
La propriété margin définit l’espace entre les bordures d’un élément et les boites voisines. Lorsque l’on
définit une mise en page (layout), margin est utilisée pour positionner les éléments dans la page ou les uns par
rapport aux autres.
Il est possible de définir des marges différentes selon leur position avec les propriétés margin-right, margin-bottom, margin-left et margin-top.
Le flux normal d’une page est défini par les règles suivantes : les éléments de type block se placent les uns sous les autres et les éléments de type inline s’insèrent à l’endroit où on les écrit.
La propriété float va faire sortir un élément de ce flux pour venir le placer contre le bord gauche ou droit de son parent ou d’un élément voisin si celui-ci flotte également.
float accepte 4 valeurs :
Cette propriété permet notamment de faire flotter une image à côté d’un texte ou de réaliser des colonnes...
La propriété clear permet de gérer la position d’un élément qui suit un flottant. Elle va indiquer s’il doit
venir se placer en dessous des éléments flottants qui le précèdent.
Les valeurs possibles sont none (par défaut), left (l’élément passe en dessous des flottants à gauche), right
(l’élément passe en dessous des flottants à droite), et both (il passe en dessous de tous les flottants).
La propriété display permet de changer le type d’un élément de block à inline ou d’inline à block.
Cette propriété supporte quatre valeurs différentes qui correspondent aux différents types d’éléments possibles :
Un élément de type inline-block se comporte comme un élément de type inline auquel on peut assigner une hauteur et une largeur comme un élément de type block.
Un article de La Cascade pour en savoir plus.
La propriété position permet de définir l’emplacement d’éléments dans une page. Ses principales valeurs sont :
Pour préciser la position des éléments, on utilise les mots clefs right, bottom, left et top : Exemples.
Lorsque l’on crée le design d'une page web, on souhaite parfois que deux éléments se chevauchent.
Dans ce cas propriété z-index va indiquer quel élément doit apparaître au dessus de quel autre. Elle fonctionne avec tout élément positionné auquel on a appliqué la propriété position avec une valeur soit absolute, soit relative, soit fixed. Le z-index ne fonctionne donc pas sur des éléments positionnés en static (qui est la valeur par défaut).
Un élément avec un z-index possédant une valeur plus élevée qu’un autre sera au dessus de cet autre élément.
image : Alsacréations
Il est souvent pratique de pouvoir écrire plusieurs déclarations en une seule. Cette possibilité nous est offerte avec les propriétés background, border, margin, padding, font...
margin: 0 10px 20px 0;
margin: 0 auto;
font: italic normal 13px/150% Arial, Helvetica, sans-serif;
font-style font-weight font-size/line-height font-family
haut droite bas gauche
haut et bas : 0 droite et gauche : auto l'élément sera centré horizontalement
img {
border-radius: 50%;
}
img {
border: 5px solid #fff;
border-radius: 5px;
width: 150px;
height: 150px;
}
On peut également utiliser la propriété box-shadow afin de créer un effet 3D. Voir le code.
La propriété background-image permet d'ajouter une image de fond soit pour toute la page soit pour une partie uniquement.
La propriété background-repeat permet de gérer la répétition de l'image de fond. Elle accepte quatre valeurs :
Parfois on utilise une petite image qui va se répéter horizontalement et/ou verticalement pour former un effet mosaïque : c'est intéressant en terme de performances : plus la photo est lourde plus elle est longue à charger...
Par exemple on peut répéter l'image
ci-contre (qui est ici agrandie) pour créer un fond, on parle parfois de pattern.
La propriété background-position permet de contrôler la position de l'image de fond. Elle a besoin de deux valeurs pour fonctionner : une coordonnée horizontale et une coordonnée verticale. Le fond sera décalé par rapport au bord en haut à gauche de son élément parent.
La propriété background-size définit la taille des images de fond pour l'élément. Si on lui attribue une seule valeur, celle-ci désigne la largeur de l'image. Si on lui attribue deux valeurs, celles-ci désignent dans l'ordre la largeur et la hauteur de l'image.
La propriété background-size s'utilise souvent avec les valeurs cover ou contain. Si on lui attribue la valeur cover, L'image couvre toute la largeur ou la hauteur du conteneur et les parties qui dépassent sont rognées si les proportions du conteneur sont différentes.
Si on lui attribue la valeur contain, l'image est redimensionnée afin qu'elle soit la plus grande possible et que l'image conserve ses proportions. L'image est contrainte dans le conteneur. Les zones éventuellement vide sont remplies avec la couleur d'arrière-plan.
La propriété background-attachment permet de fixer le fond ou de le faire défiler. Elle peut prendre deux valeurs :
Un tuto sur alsacréation : Comment centrer verticalement sur tous les navigateurs ?
On trouve de nombreux templates (modèles) HTML - CSS gratuits sur internet qui permettent de créer une page web ou un site entier sans avoir à tout coder de a à z...
L'ojectif de ce TP est de personnaliser au maximum un template imposé (lien pour télécharger les fichiers)
Pour cela vous allez modifier le fichier index.html voire le fichier layout.css (changer le lien dans la balise <head>, la feuille de styles par défaut est layout.min.css, version minifiée de layout.css) les images (un outil pour les éditer), la vidéo d'intro (à choisir sur YouTube), la map en bas de page (un outil pour obtenir la latitude et la longitude d'un lieu) ... Laissez libre-court à votre créativité !