Académique Documents
Professionnel Documents
Culture Documents
Philippe.Genoud@imag.fr
M2CCI 2021-2022
SLIDES cours PLAI
Efface les
marges par
défaut
Par défaut un élément bloc (block) débute sur une Par défaut un élément en-ligne (in line) ne débute pas
nouvelle ligne et utilise la largeur maximale disponible sur une nouvelle ligne et utilise la largeur nécessaire
250px
400px
20px 250px 20px
30px 400px 30px
20px
20px
40px
50px
100px 90px
positionnement
absolu
scrolling en liaison
avec l'élément de
référence
positionnement
fixe
pas de scrolling
p1
p2 p3
p4
p5
13
© UGA-2021 Philippe GENOUD
Positionnement flottant
• clear permet d'interdire le voisinage avec un élément flottant (à droite, à gauche ou des deux côtés).
p1
p2 p3
p4
p5
pas d'élement
flottant à droite 14
© UGA-2021 Philippe GENOUD
Positionnement flottant
• clear permet d'interdire le voisinage avec un élément flottant (à droite, à gauche ou des deux côtés).
p1
p2 p3
p4
p5
pas d'élement
flottant ni à droite ni 15
© UGA-2021 Philippe GENOUD à gauche
Positionnement flottant
• En utilisant les propriétés float et clear possibilité de définir des grilles de boites remplissant
automatiquement la largeur de leur conteneur
https://www.w3schools.com/css/tryit.asp?filename=trycss_inline-block_old
https://www.w3schools.com/css/tryit.asp?filename=trycss_inline-block
© UGA-2021 Philippe GENOUD 17
Positionnement "inline-block"
positionnement en flux
220px
20px padding
+ 200px width
Il existe un espace
entre les éléments de
type inline-block
p1
p2
+
p3
?
p4
p5
22
© UGA-2021 Philippe GENOUD
Positionnement des éléments
CSS positionnement flottant
• possibilité de faire flotter des éléments en ligne.
p1
p2
+
p3
23
© UGA-2021 Philippe GENOUD
Positionnement des éléments
CSS Afficher et masquer des éléments
• possibilité de rendre invisible des éléments
p1
p2
p3
• visibility:hidden masque
l'élément mais réserve sa
position et ses dimensions.
L'élément occupe de l'espace
sur la page.
24
© UGA-2021 Philippe GENOUD
Positionnement des éléments
CSS Afficher et masquer des éléments
• possibilité de retirer un élément de l'affichage
p1
p2
p3
p5
25
© UGA-2021 Philippe GENOUD
Positionnement des éléments
CSS positionnement flottant
• positionnement flottant
– autre exemple.
positionnement en flux
positionnement en flottant
https://www.w3.org/TR/css-flexbox-1/
une norme récente mais largement
anticipée par les navigateurs modernes
© UGA-2021 Philippe GENOUD 27
Positionnement 'Flexbox'
• Modèle de boîte flexible – flex box
• 4 caractéristiques principales
– Distribution des éléments horizontale ou verticale, avec passage à la ligne autorisé ou non,
– Alignements et centrages horizontaux et verticaux, justifiés, répartis,
– Réorganisation des éléments indépendamment de l’ordre du flux (DOM),
– Gestion des espaces disponibles (fluidité).
https://codepen.io/justd/full/yydezN/
A B C
https://www.w3.org/TR/css-flexbox-1/
A B C D D C B A
row row-reverse
A D
B C
C B
D A
column column-reverse
© UGA-2021 Philippe GENOUD 32
Positionnement 'Flexbox'
flex-wrap (propriété de flex-container)
définit si le contenu sera distribué sur une seule ligne (ou colonne selon l’axe principal) ou sur plusieurs
lignes
A B C E F G
nowrap
valeur par défaut : les éléments ne passent pas à la ligne.
A B C E F G
E F G A B C
wrap wrap-reverse
les éléments passent à la ligne dans le sens de lecture. les éléments passent à la ligne dans le sens de lecture inverse.
A B C A B C
flex-start flex-end
A B C A B C
center space-between
A B C A B C
space-around space-evenly
B E
A C
A C
B E
flex-start flex-end
A B C E A B C E
center stretch
baseline
© UGA-2021 Philippe GENOUD 35
Positionnement 'Flexbox'
align-self (propriété de flex-item)
permet de définir un alignement spécifique pour un item particulier
valeurs de cette propriété identiques à celles de align-items
#elementC {
C align-self: flex-end;
}
#flexContainer {
display: flex;
flex-direction: column;
align-items: flex-start;
}
A A D
order: 0 order: 0 order: 0
B C A
order: 0 order: 0 order: 0
C D C
order: 0 order: 0 order: 0
D B B
order: 0 order: 1 order: 1
#flexContainer {
display: flex;
}
A B C
flex-grow: 0 flex-grow: 0 flex-grow: 0
#flexContainer {
display: flex;
}
#A, #B, #C {
A
flex-grow: 1
B
flex-grow: 1
C
flex-grow: 1
flex-grow: 1;
} tous les éléments flex-item ont un flex-grow égal à 1, l'espace restant est réparti de manière égale
entre tous les items
#flexContainer {
display: flex;
}
#A, #B { A B
flex-grow: 2
C
flex-grow: 1 flex-grow: 1
flex-grow: 1;
} l'élément B a un flex-grow de 2, l'espace restant qui lui sera attribué sera (si possible) 2 fois plus grand
#B { que celui attribué aux flex-items ayant un valeur de flex-grow égale à 1.
flex-grow: 2;
}
© UGA-2021 Philippe GENOUD 39
Positionnement 'Flexbox'
flex-shrink: (propriété d'un flex item)
• définit la possibilité pour un flex-item de se contracter si nécessaire.
• par défaut 1, pas d'étirement
SLIDES
https://www.w3.org/TR/css-grid-1/
© UGA-2021 Philippe GENOUD 41
CSS Grid <div>
• Terminologie
Grid container
o Elément qui accueille la grille
o Peut être n’importe quel type d’élément :
• body, div, section, footer, header ….
Grid Lines
o Divisent le grid container pour créer une
structure de grille régulière en lignes et colonnes
2
row Lines
o Lignes horizontales
o Numérotées de 1 à nh en partant du haut vers le bas
3
column Lines
o Lignes verticales
o Numérotées de 1 à nv en partant de la gauche vers
la droite
4
La grille peut être quelconque (carrée ou rectangulaire) : nh >= 2 et nv >= 2
© UGA-2021 Philippe GENOUD 43
CSS Grid 1 2 3 4
1
• Terminologie
Marge interne
(padding)
Ligne 3
row-gap
la grille 2
o column-gap : espace entre deux colonnes
(identique pour toutes les colonnes)
o row-gap : espace entre deux lignes (identique Ligne 2
pour toutes les lignes)
o column-gap et row-gap peuvent avoir des
row-gap
valeurs différentes 3
Ligne 3
row-gap
o L’unité de base de la grille 2
o Le nombre de cellules est nh-1 * nv-1
Grid
Ligne 2
cell
row-gap
3
Ligne 3
row-gap
column lines) Grid Grid
2 Area Area
o C’est toujours une zone rectangulaire
Grid
Ligne 2
cell
o Identifiée par les numéros des lignes et colonnes
row-gap
qui la délimitent
3
row-gap
<div class="grid-container">
<div class="grid-item1"> ... </div> 3
<p class="grid-item2"> ... </p> <p> <img>
<ul class="grid-item3"> ... </ul> Ligne 3 Grid Grid
<img class="grid-item4"> ... </img> Area Area
</div>
4
Par défaut le
conteneur grille se
comporte comme un
flow layout normal
(ici div les un en
dessous des autres)
Nb: le nom de classe item est arbitraire (il peut être ce que vous voulez et n’est pas imposé par le layout en grille)
Grille avec 3
colonnes d’une
largeur de 100 pixels
Grille avec 3
colonnes d’une
largeur de 100 pixels
et deux lignes de
hauteur respective
60 pixels 60 et 100 pixels
100 pixels
60 pixels
100 pixels
SLIDES
Media queries CSS3 permettent de définir un panel de critères plus précis en fonction de facteurs liés au
dispositif d’affichage : Largeur, hauteur, orientation, résolution…