2 Les Bases Du CSS 3
2 Les Bases Du CSS 3
2 Les Bases Du CSS 3
SOMMAIRE
➢ Webographie :
http://www.w3schools.com : site de référence HTML, CSS et d’autres
http://www.w3schools.com/tags/default.asp : toutes les balises
https://www.w3.org : le site de référence du W3C
➢ Formation :
http://pierre-giraud.com
Tuto et astuces Alsacréations - HTML
Tuto et astuces Alsacréations - CSS
HTML : le fond
• HTLM décrit le contenu et son organisation : titre, paragraphe, liste à numéro, etc.
• HTML 1 : 1991 par le fondateur WWW, Tim Berners-Lee (chercheur au CERN). Puis
HTML 2, 3 (tableaux), 4 : la plus longuement utilisé (depuis 1999). HTML 5 : 2014, très bien !
https://fr.wikipedia.org/wiki/HTML5
CSS : la forme
• Le CSS est un langage de mise en forme des pages web.
• Cascading Style Sheets : feuille de style en cascade (héritage, spécialisation)
• CSS décrit la mise en page et le graphisme. En-têtes en haut de page, pied de page en bas,
paragraphe en bleu, titres centrés, etc.
• CSS 1: 1996, puis CSS 2, 2.1, la plus longuement utilisée. CSS 3 : nouveau, TB.
https://fr.wikipedia.org/wiki/Feuilles_de_style_en_cascade#CSS3
➢ Exemple simple
Le site w3schools montre une page avec plusieurs feuilles de style : choisir un « stylesheet »
pour voir les différentes formes. Choisir « nostyle » pour voir la page HTML sans style.
https://www.w3schools.com/css/css_intro.asp
Principes
https://www.w3schools.com/css/css_syntax.asp
selecteur {
propriété : valeurs ; /* commentaire */
propriété : valeurs ;
etc.
}
Sélecteur
Le sélecteur de base c’est une balise.
Les commentaires sont entre /* et */
Exemples
p {
color : green ;
}
h1, em {
color : blue ; /* red */
}
On peut mettre plusieurs sélecteurs séparés par des virgules pour un même style.
• Le bon usage :
Plus c’est factorisé, mieux c’est. La bonne manière : le fichier CSS séparé.
Le reste est à éviter sauf cas particulier.
Dans le code dans le body du HTML : avec un attribut style dans les balises du body
• Code HTML :
<body>
<h1 style="background-color:yellow"> Mon super site</h1>
</body>
• L’attribut style permet des liste des couples « propriété :valeur ».
• On peut en mettre plusieurs séparés par des virgules.
• L’attribut style dans le HTML prend le dessus sur le style du CSS ou du head.
• A éviter, sauf cas particulier
➢ Code html
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Style</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h2> Bienvenue sur ma page stylée dans un fichier css</h2>
<p> <img src="images/logo.png"></p>
</body>
</html>
Syntaxe CSS
➢ Code CSS
body{
background-color:aqua;
}
h2{
background-color:rgb(255,255,0);
}
img{
border:10px solid yellow;
width:1000px;
}
Exemple
<head>
<meta charset="utf-8"/>
<title>Style</title>
<style>
body{
background-color:aqua
}
h2{
background-color:rgb(255,255,0)
}
img{
border:10px solid yellow;
width:1000px;
}
</style>
</head>
<body>
<h2> Bienvenue sur ma page stylée dans le head</h2>
<p> <img src="images/logo.png"></p>
</body>
Test
http://bliaudet.free.fr/Cours/HTML/21_CSS3_Bases/html_21_02_head_style.html
Exemple
<body style="background-color:aqua">
<h2 style="background-color:rgb(255,255,0)">
Bienvenue sur ma page stylée dans le body
</h2>
<p>
<img src="images/logo.png" border=10
style="width:1000px; border-color:yellow">
</p>
</body>
Test
http://bliaudet.free.fr/Cours/HTML/21_CSS3_Bases/html_21_03_body_style.html
Objectif
On veut pouvoir cibler les balises.
Avec le p{ }, on cible toutes les balises <p>.
On veut pouvoir cibler les balises individuellement ou par petits groupes et non pas tous les
« h1 » ou tous les « p »
Principe
Pour le moment, on cible tous les paragraphes, p, ou tous les h1.
On veut par exemple pouvoir ne cibler qu’un et un seul paragraphe.
Syntaxe : attribut id
<p id="introduction">
On ajoute l’attribut « id» avec une valeur au choix dans l’unique balise qui nous intéresse.
Avec l’attribut « id», il ne peut y avoir qu’une seule balise avec la même valeur pour l’id.
Exemple HTML
<p id="introduction">
Mon texte
</p>
Exemple CSS
#introduction est un sélecteur qui concerne les balises avec un attribut id="introduction"
#introduction {
color : green ;
}
#introduction : sélecteur qu’on met à la place d’un nom de balise.
Le # veut dire qu’on fait référence à un attribut id dans le HTML : il ne peut donc y avoir qu’une
seule balise concernée. En fait, avec plusieurs ça marche aussi mais ça posera des problèmes
avec les langages serveurs ou le JavaScript.
Présentation W3schools
http://www.w3schools.com/cssref/sel_id.asp
➢ https://www.w3schools.com/cssref/tryit.asp?filename=trycss_sel_id
On peut remplacer #firstname par #hometown
Puis id="firstname" par id=" hometown "
➢ https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_global_id
Dans cet exemple ci ajoutez sous le <html> : <style> #myHeader {color: blue;}</style>
Et ajoutez un <h1 >Suite</h1> juste avant le </body>
Ajoutez un font-size: 20px; au #myHeader.
Principe
Pour le moment, on cible tous les paragraphes, p, ou tous les h1, etc.
On veut par exemple pouvoir ne cibler que certains paragraphes.
Exemple HTML
On a deux balises avec le même attribut class :
<p class="introduction">
Mon texte
</p>
<p class="introduction">
Mon autre texte
</p>
Exemple CSS
.introduction est un sélecteur qui concerne les balises avec un attribut class="introduction"
.introduction {
color : green ;
}
W3schools
http://www.w3schools.com/cssref/sel_class.asp
http://www.w3schools.com/tags/att_global_class.asp
➢ https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_global_class
A noter le h1.intro
Dans l’exemple ci-dessus, ajouter un titre classe= « intro » (Suite par exemple) et un paragraphe
class= « important ».
Mettez-le font-size de l’important à 30px.
➢ https://www.w3schools.com/cssref/tryit.asp?filename=trycss_sel_class
Dans l’exemple ci-dessus, ajoutez un div en class intro (copier le premier à l’identique) après le
paragraphe « my best friend ».
Ajouter un paragraphe dans une des class intro.
Présentation
La balise div est une balise dite « universelle » (comme la balise span, cf. § suivant).
C’est une balise « bloc ». Elle est de la famille des balises <p>, <h1>, etc.
La balise <div> permet de regrouper plusieurs balises et ensuite de le cibler en CSS.
On commence par un <div> et on finit par un </div>
http://www.w3schools.com/tags/ref_byfunc.asp
Les robots d’analyse ne font rien de la balise div.
Exemple HTML
On crée un div pour regrouper 3 balises <p> :
<div id= "encadrement">
<p> bla bla bla</p>
<p> bla bla bla</p>
<p><img src=”mon_image.jpg” alt”mon_image”></p>
</div>
Exemple CSS
#encadrement permet de cibler les 3 paragraphes.
#encadrement {
background-color: yellow;
}
W3schools
http://www.w3schools.com/tags/tag_div.asp
➢ https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_div_test
Dans l’exemple ci-dessus, donnez à la div l’id "test" et mettez le style du <div> dans une balise
<style> dans le head (avant le html).
Passez le background-color en jaune et mettez-le font-size à 2em.
Ajouter un paragraphe dans la div (un <p> bla bla </p>)
Présentation
La balise span est une balise dite « universelle » (comme la balise div, cf. § précédent).
C’est une balise « inline». Elle est de la famille des balises <strong>, <em>, etc.
Elle ne crée pas de nouveau bloc ni de retour à la ligne.
La balise span est utilisée pour cibler un ou plusieurs mots dans un texte.
http://www.w3schools.com/tags/ref_byfunc.asp
Les robots d’analyse ne font rien de la balise span.
Exemple HTML
On veut marquer les mots « super site » dans le texte :
<p> Bienvenue dans mon <span class=”super”> super site</span> de
super trucs! </p>
Exemple CSS
.super permet de cibler notre span et toutes les class « super ».
.super {
color : green ;
}
W3schools
http://www.w3schools.com/tags/tag_span.asp
➢ https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_span
Dans l’exemple ci-dessus, mettez le style des <span> dans le head (avant le html).
On mettra un id sur le premier span, un class sur le deuxième.
Passez-le en vert et mettez-le font-size à 2em.
Regroupez le commun des sélecteurs id et class dans un sélecteur span
Usages de base
• p{ /* ou n’importe quelle balise */
• h1, em { /* plusieurs balises à la fois */
• .class { /* pour cibler plusieurs balises */
• #id { /* pour cibler une balise en particulier */
• *{ /* Sélecteur universel : tout ! Rare ! */
Autres usages
Il y en a d’autres :
http://www.w3schools.com/cssref/css_selectors.asp
http://www.w3.org/Style/css3-selectors-updates/WD-css3-selectors-20010126.fr.html
Il faut s’y intéresser pour se faciliter la tâche dans la mise en page.
Par exemple :
::after : permet d’ajouter du code HTML après un élément.
::first-letter : récupère la première lettre.
::first-line : récupère la première ligne.
:last-child : récupère le dernier enfant.
Principes
• Cascading (c’est-à-dire héritage) : si j’applique un style à body (ou un div par exemple), ça
vaut pour tout ce qui est contenu dans body. Par exemple le color ou le font-size valent pour les
balises dans le body. Les balises contenues dans le body « héritent » du style appliqué au body.
• Spécialisation : si j’applique un nouveau style à une balise dans le body, c’est ce nouveau style
qui prime. La balise a alors un style « spécialisé ».
• Bloquer l’application d’un style : inherit. Si un selecteur a un style, par exemple
p{color:green;}, on peut bloquer l’application du style en écrivant <p style="color:inherit;">.
Dans ce cas, si le style est définie dans une balise qui englobe p, par exemple le body, le style du
body s’appliquera.
Exemple
<head>
<meta charset="utf-8" />
<title>Héritage et de spécialisation</title>
<style>
p{color:green;}
</style>
</head>
<body style="color:blue;">
<h1>Héritage dans h1 de la couleur bleue du body</h1>
<p>spécialisation en vert des paragraphes</p>
<p style="color:inherit;">heritage forcé du parent : en
bleu</p>
</body>
Test
http://bliaudet.free.fr/Cours/HTML/21_CSS3_Bases/html_21_04_heritage_et_specialisation.html
http://www.w3schools.com/cssref/pr_font_font-size.asp
http://www.w3schools.com/cssref/default.asp#font
propriétés background-xxxxx
Il y a beaucoup de propriétés avec backgroud.
Elles sont toutes listés ici :
http://www.w3schools.com/cssref/default.asp#background
On peut regarder des exemples pour chacune d’entres elles. On va en regarder quelques unes.
background-image
L’image de fond est une propriété qui s’applique à tout le document (balise body) ou à n’importe
quel balise (un titre par exemple).
Quelle que soit la taille de l’image, l’image est répétée dans toute la balise, dans tout le document
pour une balise body.
body {
background-image : url("neige.png");
background-color : whitesmoke;
}
Si le fichier neige.png n’existe pas la couleur whitesmoke sera appliquée.
➢ Exemple et application
http://www.w3schools.com/cssref/pr_background-image.asp
Dans l’exemple ci-dessus, ajoutez un f à gif : giff pour que le fichier ne soit pas trouvé. Regardez
le résultat.
➢ Exemple et application
http://www.w3schools.com/cssref/pr_background-repeat.asp
Essayez repeat-x, no-repeat, repeat.
background-position
background-position : top right ; /* en haut à droite */
top, bottom, left, center, right
➢ Exemple et application
http://www.w3schools.com/cssref/pr_background-position.asp
Essayez top, top left, top right, bottom, bottom right, bottom left, center, center right, center left.
background-attachement
background-attachement : fixed; le fond est fixe et le texte circule dessus.
➢ Exemple et application
http://www.w3schools.com/cssref/pr_background-attachment.asp
Essayez en mettant un repeat-y et en multipliant les <p>
➢ Exemple et application
http://www.w3schools.com/cssref/css3_pr_background.asp
Mettez un fond rose (pink)
➢ Exemple et application
http://www.w3schools.com/cssref/css3_pr_background.asp
Dans cet exemple, on peut utiliser l’image ("paper.gif") et l’image ("smiley.gif").
Faites-en sorte d’avoir une colonne de papier gris à gauche et une colonne de smiley à droite.
Une ligne de papier gris au milieu et un carré de papier gris en haut au milieu.
Début de solution
background : url("paper.gif") … top center,
url("paper.gif")
url … ,
url… ;
principe
La transparence permet d’afficher de façon plus ou moins transparente du texte ou des images.
propriété opacity
http://www.w3schools.com/cssref/css3_pr_opacity.asp
selecteur{ opacity : 0.5 ;}
1 : pas de transparence (comportement par défaut).
0 : transparence maximum (invisible).
➢ Attention :
La transparence s’applique à tout ce que contient le selecteur : le bloc comme le texte qu’il
contient.
notation rgba
La notation rgba c’est rgb + opacity
http://www.w3schools.com/cssref/css_colors_legal.asp
http://www.w3schools.com/cssref/tryit.asp?filename=trycss_color_rgba
background-color:rgba(255,0,0,0.5)
➢ Attention :
La transparence s’applique uniquement à la couleur de fond.
Les bordures
• Format du width : px, pt, mm, cm, em, thin, medium, thick.
• Format du style : none (pas de bordure), solid, dotted (pointillés), dashed (tirets), double
(bordure double), groove (relief 1), ridge (relief 2), inset (3D global enfoncé), outset (3D globas
surélevé).
http://www.w3schools.com/css/css_border.asp
➢ Principes
On peut mettre des ombres sur du texte, des blocs ou des images.
Il y a 4 caractéristiques pour une ombre :
• Le décalage horizontal
• Le décalage vertical
• Le dégradé
• La couleur
Principes
Une image de base se trouve sur une seule ligne. Le texte avant et après une image est sur une
seule ligne, avant et après l’image.
Si le texte qui suit l’image est dans un paragraphe, il est sur une nouvelle ligne.
➢ Propriété float
Pour avoir du texte autour de l’image, on parle d’image flottante et on utilise la propriété
« float », right ou left sur l’image.
http://www.w3schools.com/cssref/pr_class_float.asp
Exercice
Dans cet exemple, sortez l’image du paragraphe. Faites-en sorte d’avoir deux paragraphes autour
le l’image, le second entourant l’image.
➢ Propriété clear
Pour reprendre le texte d’un nouveau paragraphe après l’image, on utilise la propriété « clear »,
right ou left selon le float de départ, ou both pour n’importe quel float.
http://www.w3schools.com/cssref/pr_class_clear.asp
Remarque : Pour décaler tout le paragraphe du texte à droite de l’image, il faudra gérer la mise
en page.
Exercice
Reprenez l’exercice précédent (sortez l’image du paragraphe. Faites-en sorte d’avoir deux
paragraphes autour le l’image, le second entourant l’image). Ajoutez un clear pour que le second
paragraphe n’entoure plus l’image.
➢ Liens
Sur le ::before :
https://www.w3.org/Style/Examples/007/color-bullets
Sur le display :
https://www.w3schools.com/CSSref/pr_class_display.asp
Principes
On peut changer le comportement du site sur le passage de la souris et quand on clique.
➢ Dans CSS
p:hover {
background_color: pink;
}
le paragraphe passe sur fond rose quand on passe la souris dessus.
a:hover
Pour changer l’apparence du lien quand on passe dessus
http://www.w3schools.com/cssref/sel_hover.asp
a:active
Pour changer l’apparence du lien quand on clique dessus et qu’on reste cliqué.
http://www.w3schools.com/cssref/sel_active.asp
a:visited
Pour changer l’apparence du lien après qu’on ait clique dessus.
http://www.w3schools.com/cssref/sel_visited.asp
https://www.w3schools.com/css/css_font.asp
https://www.w3.org/Style/Examples/007/fonts.fr.html
• sans-serif (pas de petites pattes),
• avec serif (avec petites pattes),
• curvive (écriture manuelle),
• monospace (écartement constant),
• fantasy
Principes
On peut définir une ou plusieurs polices pour chaque sélecteur.
font-family
http://www.w3schools.com/cssref/pr_font_font-family.asp
• L’attribut font-family permet de définir une police pour un sélecteur.
p {
font-family: "Times New Roman", Georgia, Serif;
}
• En général, on met une série de polices : si la première ne marche pas, on prend la suivante. On
finit en général par la police générique : ici Serif (avec petites pattes).
D’abord « Times New Roman ». On met des guillemets si le nom comporte un espace. Ensuite
Georgia. Sinon Serif.
• La liste des polices correspond aux polices qu’on trouve classiquement sur les navigateurs.
➢ Principes
Google Fonts propose des polices : https://fonts.google.com/
Choisir une catégorie : on peut sélectionner Serif, Sans Serif, Display, Handwriting et
Monospace.
On voit le nom des polices, par exemple « Indie Flower » si on sélectionne Handwriting. Il suffit
de mettre ce nom dans le code suivant :
➢ Dans HTML
En plus du <link> du CSS, on ajoute le <link> suivant dans le head :
<link href=”https://fonts.googleapis.com/css?family=Indie+Flower”
rel=”stylesheet” type=”text/css”>
➢ Dans CSS
font-family: 'Indie Flower', 'cursive';
Le cursive pour avoir la police cursive par défaut si le « Indie Flower » ne marche pas.
➢ Bilan
C’est très simple ! Mais ça nous rend dépendant de l’API google.
Principes
• Choisir une police spéciale et la faire charger au navigateur (environ 1 MO). Ca alourdit le
chargement de la page. Pas plus de 2 polices personnalisées par site.
• Plusieurs formats de fichiers de police (pas standard) :
• .ttf (universel),
• .woff (universel),
• .svg (seul compatible iphone, ipad),
• .otf (pas sur ie),
• .eot (que sur ie !).
• On peut proposer plusieurs formats au navigateur qui choisit alors celui qu’il sait lire.
Sites de polices
• Les polices ont souvent des droits d’auteur.
• polices gratuites à charger : http://www.fontsquirrel.com ou http://www.dafont.com/fr/
➢ Exemple
Sur FontSquirrel, on choisit une police et on va dans l’onglet « web font kit ». Il faut télécharger
le « font-face kit ». On récupère en général plusieurs « fontes » pour une police
(normale=regular, grasse, grasse italic, etc.). Pour une fonte donnée, on a les différents formats
(ttf, woff, etc.). On trouve aussi un code d’exemple CSS
@font-face
Le @font-face permet de :
• définir le nom de la police : font-family
• charger une police : src
Ici les fichiers woff et eot sont mis dans un répertoire « polices ».
La propriété font-family est ensuite utilisé dans les sélecteurs CSS :
@font-face {
font-family: 'mapolice';
src:
url('polices/ma-Police.woff') format('woff'),
url('polices/ma-Police.eot') format('eot');
}
p{
font-family : 'mapolice';
}
Pour charger plusieurs polices, on utilise plusieurs font-face.
Référence w3school
• font-family, @font-face : http://www.w3schools.com/cssref/default.asp#font
http://www.w3schools.com/cssref/css3_pr_font-face_rule.asp
On peut dans l’onglet webfont kit choisir de charger une police en différents formats : woff, ttf,
eot, svg
Le zip chargé donne une démo pour le fichier css :
@font-face {
font-family: '1942_report1942_report';
src: url('1942-webfont.eot');
src:
url('1942-webfont.eot?#iefix') format('embedded-opentype'),
url('1942-webfont.woff') format('woff'),
url('1942-webfont.ttf') format('truetype'),
url('1942-webfont.svg#1942_report1942_report')format('svg');
font-weight: normal;
font-style: normal;
}
à noter la double présence du fichier eot utile pour gérer les spécificités de IE.
font-weight est à normal par défaut. Ca peut être gras.
font-style est à normal par défaut. Ca peut être italique.
https://www.w3schools.com/html/tryit.asp?filename=tryhtml_table_intro
https://www.w3schools.com/cssref/sel_nth-child.asp
https://www.w3schools.com/cssref/sel_nth-last-child.asp
Remarque :
Le nth-child a intérêt à être utilisé pour une liste de balise situées dans une balise.
On pourra donc écrire un sélecteur du type :
table tr:nth-child(even)
#id_table tr:nth-child(even)
#id_div p:nth-child(2)
table{
border-collapse: collapse; /*cellules colées avec bordures*/
}
th{ /* bordures d'en-tête */
border: 2px solid blue;
background-color: #4CAF50;
color: white;
}
td{ /* bordures de cellules */
border: 1px solid black;
text-align: center;
min-width: 60px;
padding: 5px;
}
caption{
padding-top: 5px;
caption-side: bottom; /* titre du tableau en dessous */
text-decoration: underline;
}
Conseil W3C
https://www.w3.org/Style/Examples/007/
1 – Les merveilles
Reprenez le TP sur les merveilles (la dernière version, tableau et vidéo), chapitre 6 du cours n°1.
Mettez le tableau avant les références.
➢ Ajouter du graphisme :
• Mettez des couleurs de fonds différents pour la partie de début avec le titre et le sommaire,
pour chaque partie avec les types de merveilles, pour le tableau (uniquement la surface du
tableau) et pour les références. Vous mettrez des couleurs très claires, type « pastel ».
Foncez un peu les titres correspondant (on donnera aussi une couleur pour le titre des
vidéos). On laisse les vidéos en blanc. On peut donner les mêmes couleurs pour la partie
du début, celle des références et celle du tableau.
• Encadrer la zone du titre et la zone des références.
• Changer la typo des nouvelles merveilles.
• Faites-en sorte que les merveilles changent de couleur quant on passe la souris dessus.
• Faite un tableau avec une alternance de couleur de fond. Mettez un cadre à simple ligne
autour de chaque case du tableau.
• Remplacer les points de la première liste à points de merveilles par un dessin au choix.
• Ajouter un effet de relief ou d’ombres quand on passe sur un élément du sommaire.
• Dans les pages de détails, limiter la taille de l’image à 50% de l’écran. Placer l’image à
droite et entourer l’image par du texte.