Académique Documents
Professionnel Documents
Culture Documents
HTML
<style type="text/css">
body
{
margin: 10px 0 ;
padding: 0 ;
text-align: center ;
font: 0.8em "Trebuchet MS", helvetica, sans-serif ;
background: indianred ;
}
</style>
La/les feuille(s) de style externe(s)
8
Du HTML au CSS : Principe
<HTML> .HTML
<HEAD>
<TITLE>Le CSS</TITLE>
<link rel="stylesheet" type= "text/css" href= "fichier.css">
</HEAD>
<BODY> Le Résultat
<H1>Introduction</H1>
... Introduction
</BODY> …
</HTML>
@charset "iso-8859-1";
H1 { Sélecteur simple
color : red ;
}
Fichier.CSS
La feuille de style externe
index.html
styles.css
10
Les règles
199
Récapitulatif
! index.html : pour le
contenu
13
Syntaxes Règle
attribut à définir
Syntaxes
p { font-size: 12px;}
Définition
Propriétés héritées d'un parent
Toutes balises ont un parent : une balise conteneur qui les encadre.
Les balises HTML s'approprient généralement les styles des balises imbriquées dans
leur parent : c'est l'héritage de style
<body>
<b color:red>
<i>
Denis
</i>
</b>
</body>
Propriétés héritées d'un parent
Toutes balises ont un parent : une balise conteneur qui les encadre.
Les balises HTML s'approprient généralement les styles des balises imbriquées dans
leur parent : c'est l'héritage de style
<body>
<b color:red>
<i>
Denis
</i>
</b>
</body>
Propriétés héritées d'un parent
Toutes balises ont un parent : une balise conteneur qui les encadre.
Les balises HTML s'approprient généralement les styles des balises imbriquées dans
leur parent : c'est l'héritage de style
<body>
<b color:red>
<i>
Denis
</i>
</b>
</body>
Propriétés héritées d'un parent
Toutes balises ont un parent : une balise conteneur qui les encadre.
Les balises HTML s'approprient généralement les styles des balises imbriquées dans
leur parent : c'est l'héritage de style
<body>
<b color:red>
<i>
Denis
</i>
</b>
</body>
Propriétés héritées d'un parent
Toutes balises ont un parent : une balise conteneur qui les encadre.
Les balises HTML s'approprient généralement les styles des balises imbriquées dans
leur parent : c'est l'héritage de style
Définition
p { margin-top: 25px;}
Rappels
Bloc Conteneur
Exemple
<H1>
<H2>
<H3>
h1 {
margin: 30px ;color:#000000;
border-right: 5px solid black ;
border-top: 5px solid #000000 ;
padding-left: 40%;
margin-right: 10px ;
}
h2 {
padding-left: 25px ;
border-top: 1px solid #ffffff;
line-height: 25px ;
font-size: 1.4em ;
border-bottom: 2px solid #ffffff ;
}
h3 {
margin-left: 15px ;
padding-left: 5px ;
border-bottom: 1px solid #9b2 ;
border-left: 3px solid #9b2 ;
color: #9b2 ;
}
TD
body {
body
{
margin: 50px 100px ;
padding-right: 200px ; // et non 200 px;
text-align: right ;
color: #ffffff ;
font: 1.5em helvetica, sans-serif ;
background: indianred ;
border-style: dotted;
}
La classe
Définition
Factorisation
importante
<ul class="nav">
<li>nom</li>
<li>prenom</li>
<li>age</li>
</ul>
héritage sous class indépendante
.nav li{color:red;}
<ul class="nav">
<li>nom</li>
<li>prenom</li>
<li>age</li>
</ul>
<div class="nav">
…
</div>
Bilan
<BODY> .HTML
<ul class="niveau1"> Le Résultat
<li>Exemple 1</li>
<li>Liste simple</li> ▪ Exemple 1
</ul>
<div class="italic_rouge">
▪ Liste simple
Exemple 2
</div>
</BODY>
<BODY> .HTML
<ul class="niveau1"> Le Résultat
<li>Exemple 1</li>
<li>Liste simple</li> ▪ Exemple 1
</ul>
<div class="italic_rouge">
▪ Liste simple
Exemple 2 Exemple 2
</div>
</BODY>
Définition
<div id="bloc_unique">
Bloc A Bloc A
</div>
</BODY>
Le sélecteur id
L’élément devient unique, il est
.CSS
utilisé une seule fois dans la page.
#bloc_unique {
background-color:black;
color:white ;
}
TD : voir exemple
<div id="sidebar">
<h4>Toutes mes photos <br> </h4>
<ul>
<li><a href="#">Berlin<br></a></li>
<li><a href="#">Evry</a></li>
<li><a href="#">Paris</a></li>
<li><a href="#">NU york </a></li>
<li> <a href="#"><img alt="..." src="photo.jpg" width=50px
/> </a></li>
</ul>
</div>
div#sidebar {
float: left;
width: 23%;
margin: 2em 0 0 2%;
padding: 0 0 15px;
background: url(arrow.gif) 100% 100% no-
repeat;
}
#sidebar ul {
list-style: none;
margin: 0;
padding: 0 0 10px;
border-right: 3px double
rgb(50%,50%,35%);
text-align: right;
}
#sidebar a:hover {
color: rgb(10%,20%,0%);
border-color: rgb(98%,48%,40%);
background: url(arrow2.gif) 0 100% no-
repeat;
padding-left: 15px;
}
div#sidebar {
float: left; width: 23%; margin: 2em 0 0 2%; padding: 0 0 15px;
background: url(arrow.gif) 100% 100% no-repeat;}
#sidebar ul {
list-style: none; margin: 0; padding: 0 0 10px; border-right:
3px double rgb(50%,50%,35%); text-align: right;} #sidebar h4,
#sidebar ul {margin: 0 6px 0 0;}
#sidebar li {
padding: 0.5em 0 0.25em; /* border-bottom: 1px solid
rgb(84%,84%,69%); */}
#sidebar a {text-decoration: none; padding: 0 0.5em 0 0;
border-bottom: 1px solid rgb(84%,84%,69%);}
les speudos selecteurs
#sidebar a:link {color: rgb(20%,40%,0%);}
#sidebar a:visited {color: rgb(58%,68%,40%);}
#sidebar a:hover {color: rgb(10%,20%,0%); border-color:
rgb(98%,48%,40%); background: url(arrow2.gif) 0 100% no-
repeat; padding-left: 15px;}
Lecture
<li class="submenu">
li a un attribut class de valeur submenu
qui descend
d'un div id nav
Un joyeux mélange !
59
Espace ou pas ?
220
Espace ou pas ?
61
Convention de nommage
62
En résumé
div {
...
}
.first {
...
}
p.first {
...
}
64
Qui est ciblé ?
.sugar {
...
}
.sugar p {
...
}
p.sugar {
...
}
65
Qui est ciblé ?
h1 #hautpage {
...
}
h1#hautpage {
...
}
66
Qui est ciblé ?
.first a {
...
}
.first .sugar {
...
}
.important, #toffee {
...
}
67
Les pseudos-classes sur les liens
229
Démonstration de :hover sur du bouton
http://tympanus.net/Development/CreativeButtons/
230
Les autres pseudo-classes
! :hover peut être appliqué sur d’autres éléments que des liens (à
partir de IE6).
! On peut écrire p:hover pour créer un effet au survol d’un
paragraphe par exemple
70
:focus sur les liens et inputs
71
Couleurs et unités CSS
La synthèse additive des couleurs
73
Les couleurs en CSS
236
Les couleurs en CSS
237
Les couleurs en CSS
– background
– border
– …
239
Le Pixel - px
• Unité « fixe »
• Dépendance à la résolution du périphérique
• Valeur « compilée » finale en CSS
77
Le cadratin - em
78
Le cadratin - em
79
Le pourcentage : %
245
En web, quelle unité utiliser ?
P
o
246
Propriétés de typographie, polices et puces
Font-family
body {
font-family: Arial, Helvetica, sans-
serif;
248
Font-family
249
Polices utilisables
259
Police utilisables
251
Polices utilisables
252
Polices utilisables
• http://www.fontsquirrel.com
• Autre outil : https://
everythingfonts.com/font-face
• Autre fonderie intéressantes :
https://typekit.com/
253
Font-size
body {
font-size: 18px;
}
254
Font-size
255
Mettre un
paragraphe en gras
p{
font-weight: bold;
}
256
Font weight
257
Mettre le paragraphe
en italique
p{
font-style: italic;
}
258
Font-style
259
Augmenter
l’interlignage
body {
line-height: 1.5;
}
260
Line-height
261
Color
h1 {
color: #008499;
}
262
Color
98
Text-align
99
Text-align
p{ p{
} }
100
Text-align
p{ p{
} }
101
Astuce : centrer une image
102
Text-transform
! uppercase
! lowercase
103
Text-transform
h2 { h2 {
} }
104
Text-transform
h2 { h2 {
text-transform : lowercase;
text-transform: uppercase;
}
}
270
Font-variant
! normal
! small-caps
106
Font-variant
h2 { h2 {
} }
107
Text-decoration
! Valeurs possibles :
– none: permet d'empêcher l'héritage de la propriété et plus
particulièrement de supprimer le soulignement par défaut des liens
– overline : surlignement
– underline : soulignement
108
Enlever le soulignement des liens et le remettre au survol
a{ a:hover {
} }
/* enlever le soulignement des liens par défaut */ /* remettre le soulignement pour les liens survolés */
109
Text-indent
110
Indentation de 10px
p{
text-indent: 10 px;
}
276
Listes à puces
• Valeurs possibles
– none (pas de puce), disc, circle, square
112
Listes ordonnées
• Valeurs possibles
– decimal (1.), decimal-leading-zero (01.), lower-roman (vii), upper-roman (VII),
etc.
113
Retirer les puces
ul {
list-style-type: none;
}
279
Utiliser une image comme puce
ul {
list-style-image: url("img/liste.png");
}
115
Utiliser une image comme puce
116
Bordures et arrières plans
Les bordures
118
Les bordures
h2 {
border: 2px solid #009860 ;
}
119
Les bordures
border-left: …;
border-right: …;
border-bottom: …;
120
Les bordures
h2 {
border-top: 1px solid gray;
}
121
Style de bordure
! dashed : tirets;
! groove : en relief;
122
Des bords arrondis : CSS3 !
div { div {
123
Background-color
290
Background-color
body {
background-color: #E6E6E6;
}
125
Background-image
126
Background-image
body {
background-image: url("img/bg.png");
}
128
Background-repeat
! Valeurs possibles :
– no-repeat : l’image ne sera pas répétée
– repeat-x : l’image sera répétée horizontalement
295
Background-position
130
Une étoile alignée en
bas à droite
.backgroundposition {
background-color: #A4D0F2;
background-image: url('img/
etoile.png');
background-repeat: no-repeat;
background-position: right bottom;
299
Background-attachment
132
Tout dans une ligne !
Il est possible de combiner toutes ces propriétés dans une seule et même ligne :
background : propriete1 propriete2 propriete3;
h2 {
133
Dimensions, margin et padding
Petit rappel inline et block
135
Largeur et hauteur d'un élément : width et height
136
Max et min
! Valeurs : numériques
! Permet par exemple de gérer un débordement d’image :
img { max-width: 100%; } : les images sont limitées à la taille de leur
parent
137
Marges
! Il existe deux types de marges : intérieure appelée padding, et extérieure appelée margin
(s'il y a une bordure elle est elle aussi ajoutée à la largeur effective des éléments)
138
Marge extérieure « margin »
139
Marge extérieure « margin »
140
Ajouter une marge
sous un paragraphe
p{
margin-bottom: 30px;
}
141
Ajouter une marge
sous un titre
h2 {
margin: 50px 0;
}
142
Centrer horizontalement à l’aide de margin
143
Margin et éléments inline
144
Padding : la marge « intérieure »
145
Padding : la marge « intérieure »
146
Ajouter du padding au body
body {
padding: 10px 15px;
}
316
Ajouter du padding à un
titre pour décoller la
bordure
h2 {
padding-bottom: 10px
15px;
317
Padding sur élément en inline
149
Retirer les marges et padding par défaut du navigateur
150
Retirer les marges et padding par défaut du navigateur
320
Padding et calcul de dimension d’élément
321
Padding et calcul de dimension d’élément
153
Box-sizing:border-box - changer le modèle de boîte
Pour faire en sorte que le padding (et la bordure) soit calculé à l'intérieur de
la
!
boîte on peut changer le modèle de calcul à l'aide de box-sizing : border-
box;
.element {
box-sizing: border-box;
}
154
Box-sizing:border-box - changer le modèle de boîte
body { Valeur affichée de body :
width: 800px; 800px
padding: 10px 15px;
box-sizing: border-box;
}
155
Overflow : pour éviter que ça dépasse
156
Overflow: hidden - cacher ce qui dépasse
157
Overflow: auto - afficher une barre de défilement
158
Positionnement et Flux en CSS
161
Le Flux normal
<BODY>
<div class="conteneur">
<div class="normalA">
Bloc A
</div>
<div class="normalB">
Bloc B
</div>
</div>
</BODY>
.normalA {
width:150px;
height:150px;
background-color:red; Bloc conteneur
border:1px solid black;
}
.normalB {
width:250px ;
height:100px ;
background-color:green;
border:1px solid black;
Bloc A B
Bloc
}
Le Flux normal : en bloc
<BODY>
<div class="conteneur">
<div class="normalA">
Bloc A
</div> Bloc A
<div class="normalB">
Bloc B
</div>
</div> Bloc B
</BODY>
.normalA {
width:150px;
height:150px;
background-color:red; Bloc conteneur
border:1px solid black;
}
.normalB {
width:250px ;
height:100px ;
Flux normal en bloc :
background-color:green; Succession verticale
border:1px solid black;
}
Le Flux normal : en ligne
<BODY>
<div class="conteneur">
<span class="normalC">
Bloc C
</span>
<span class="normalD">
Bloc D
</span>
</div>
</BODY>
.normalC {
width:150px;
height:150px;
background-color:red; Bloc conteneur
border:1px solid black;
}
.normalD {
width:250px ;
height:100px ;
background-color:green;
border:1px solid black; Bloc C
} Bloc D
Le Flux normal : en ligne
<BODY>
<div class="conteneur">
<span class="normalC">
Bloc C
Bloc D
</span> Bloc C
<span class="normalD">
Bloc D
</span>
</div>
</BODY>
.normalC {
width:150px;
height:150px;
background-color:red; Bloc conteneur
border:1px solid black;
}
.normalD {
width:250px ;
height:100px ;
Flux normal en-ligne :
background-color:green;
Succession horizontale
border:1px solid black;
}
Noter bien
.bloc_relatif
{position:relative;left:30px;}
Succession horizontale
Succession
verticale
Le Flux flottant
<BODY>
<div class="conteneur">
<div class="flotteA">
Boîte A
</div>
<p>
Texte...blabla ...
</p>
</div>
</BODY>
.flotteA {
float:left;
width:500px;
Bloc conteneur
background-color:yellow;
border:1px solid black;
}
Boîte A – float:left
Le Flux flottant
<BODY>
<div class="conteneur">
<div class="flotteA"> Boîte A – float:left Texte…texte…text
…texte … texte…
Boîte A texte…texte…texte…texte…texte…texte…texte…texte…texte…texte
</div> texte…texte…texte…texte…texte…texte…texte…text…texte…texte
<p>
texte…texte…texte…texte…texte…texte…texte…text…texte…texte
Texte...texte ...
</p> texte…texte…texte…texte…texte…texte…texte…text…texte…texte
</div> texte…texte…texte…texte…texte…texte…texte…text…texte…texte
</BODY> texte…texte…texte…texte…texte…texte…texte…text…texte…texte
.flotteA {
float:left;
width:650px;
Bloc conteneur
background-color:yellow;
border:1px solid black;
}
Le Flux flottant
<BODY>
<div class="conteneur">
<div class="flotteA">
Boîte A
</div>
<div class="flotteB">
Boîte B
</div>
</div>
</BODY>
.conteneur {
width:800px;
border:1px solid black;
}
.flotteA {
float:left; Bloc conteneur - 800px de large
width:650px;
background-color:yellow;
border:1px solid black;
}
.flotteB {
float:left;
width:100px;
background-color:blue;
border:1px solid black;
} Boîte A – 650px
Le Flux flottant
<BODY>
<div class="conteneur">
<div class="flotteA">
Boîte A
</div> Boîte A – 650px
<div class="flotteB">
Boîte B
</div>
</div>
</BODY>
.conteneur {
width:800px;
border:1px solid black;
}
.flotteA {
float:left; Bloc conteneur - 800px de large
width:650px;
background-color:yellow;
border:1px solid black;
}
.flotteB {
float:left;
width:100px; Boîte B – 100px
background-color:blue;
border:1px solid black;
}
Le Flux flottant
<BODY>
<div class="conteneur">
<div class="flotteA">
Boîte A
</div> Boîte A – 650px
<div class="flotteB">
Boîte B
</div>
</div>
</BODY>
.conteneur {
width:800px;
border:1px solid black;
}
.flotteA {
float:left; Bloc conteneur - 800px de large
width:650px;
background-color:yellow;
border:1px solid black;
}
.flotteB {
float:left;
width:600px;
background-color:blue;
border:1px solid black; Boîte B – 600px
}
Le Flux flottant
<BODY>
<div class="conteneur">
<div class="flotteA">
Boîte A
</div> Boîte A – 650px
<div class="flotteB">
Boîte B
</div> Boîte B – 600px
</div>
</BODY>
.conteneur {
width:800px;
border:1px solid black;
}
.flotteA {
float:left; Bloc conteneur - 800px de large
width:650px;
background-color:yellow;
border:1px solid black;
}
.flotteB {
float:left;
width:600px;
background-color:blue;
border:1px solid black;
}
Le Flux relatif
<BODY> Css css css css css css css css Css css css css css css css css
<div class="conteneur"> Top
Css css css css css css css css Css css– 20px
css css css css css css
<div class="bloc_relatif"> Css css css css css css css css Css css css css css css css css
Bloc A
</div>
Bloc A
Css css css css css css css css Css css css css css css css css
Css css css css css css css css Css css css css css css css css
css css css css... Css css css css css css css css Css css css css css css css css
</div> css css
</BODY>
.conteneur { Left – 30px
width:800px;
border:1px solid black;
}
.bloc_relatif {
position:relative;
width:300px;
margin-top:20px;
margin-left:30px; Bloc conteneur
border:1px solid black;
}
Le Flux absolu
<BODY> Css css css css css css css css Css css css css css css css css
<div class="conteneur"> Css css css css css Topcss css css css css css css
– 20px
<div class="bloc_absolu"> Css css css css css css css css Css css css css css css css css
Bloc A
</div>
Bloc A
Css css css css css css css css Css css css css css css css css
Css css css css css css css css Css css css css css css css css
css css css css css...
</div>
</BODY>
Left – 30px
.conteneur {
width:800px;
border:1px solid black;
}
.bloc_absolu {
position:absolute;
width:300px;
margin-top:20px;
margin-left:30px; Bloc conteneur
border:1px solid black;
}
Le Flux absolu
<BODY>
<div class="conteneur"> css
css css css css...
<div class="bloc_absolu">
Bloc A
</div>
ddddddd…..dddd
</div>
</BODY>
.conteneur {
width:800px;
border:1px solid black;
}
.bloc_absolu {
position:absolute;
width:300px;
margin-top:20px;
margin-left:30px;
border:1px solid black;
}
Création d'un site
Exemple complet
Bloc conteneur
Exemple complet
Bloc
Menu
-
Float left
Exemple complet
Bloc
Menu Bloc contenu – float right
-
Float left
CSS et mise en page
• Pendant longtemps nous avons utilisé des fottants pour faire des
mises en page. Vous retrouvez encore cette technique sur
beaucoup de sites développés jusqu’il y a encore quelques années.
183
CSS et mise en page avancée : Flexbox
– https://developer.mozilla.org/fr/docs/Web/CSS/
Disposition_des_bo%C3%AEtes_flexibles_CSS/
Utilisation_des_flexbox_en_CSS
– https://www.alsacreations.com/tuto/lire/1493-css3-flexbox-layout-
module.html
184
CSS et mise en page avancée : Grid Layout
– https://developer.mozilla.org/fr/docs/Web/CSS/CSS_Grid_Layout
– https://css-tricks.com/snippets/css/complete-guide-grid/
185
Adapter son site au mobile : le responsive webdesign
• http://mediaqueri.es/
186
Liens utiles pour aller plus loin
187