logo

TP : utilisation des flexbox

Mise en situation

Préparer un fichier HTML

Nous avons donc un conteneur qui contient un ensemble d’éléments, grâce au flexBox, il est possible d’organiser leur agencement dans le bloc conteneur. Prenons pour exemple ce code : Un conteneur contenant 3 éléments.

<!doctype html>
<html lang="fr">
	<head>
		<meta charset="utf-8">
		<title>TP flexbox</title>
		<link rel="stylesheet" href="style.css">
	</head>
	<body>
		<div id="conteneur">

			<div style="background-color:red">Element 1</div>

			<div style="background-color:yellow">Element 2</div>

			<div style="background-color:green">Element 3</div>

		</div>
	</body>
</html>

Créer une page flexbox.html contenant ce code. Afficher le résultat sur un navigateur.

Préparer un fichier CSS

L’affichage de ce code empile les blocs les uns au-dessus des autres (la div est de type blocs). Modification des paramètres Dans le fichier CSS :

Créer une page style.css contenant ce code :

#conteneur{
	display: flex;
	}

Quel changement s'est produit ?

Utilisation des flexbox

Pour choisir la direction, on utilise la propriété flex-direction :

#conteneur{
	display: flex;
	flex-direction: column;
	}

Regarder le résultat sur le navigateur.

Liste des options possibles pour la propriété flex-direction :

Testez les différentes options.

Éviter les débordements

Replaçons-nous dans la situation par défaut avec un conteneur limité à 300px.

#conteneur{
	width:300px;
	border:solid 1px;
	display: flex;
	}

Rallongez les textes "Element 1", "Element 2" ou "Element 3" de la page HTML. Le conteneur (en particulier sa largeur) est visible, car il est encadré. Lorsque la somme des largeurs des éléments est plus grande que sa largeur donc les éléments débordent du conteneur.

Pour gérer le comportement en cas de manque de place on dispose de la propriété flex-wrap

#conteneur{
	width:300px;
	border:solid 1px;
	display: flex;
	flex-wrap: wrap;
	}

Liste des options possibles pour la propriété flex-wrap :

L'alignement

Pour la gestion de l’alignement selon l'axe principal, on utilise la propriété justify-content.
Testez le code suivant :

#conteneur{
	width:300px;
	border:solid 1px;
	display: flex;
	flex-wrap: wrap;
	justify-content : space-around
	}

Liste des options possibles pour la propriété justify-content :

Pour l’alignement sur le second axe

On utilise la propriété align-items.

#conteneur{
	width:300px;
	border:solid 1px;
	display: flex;
	flex-wrap: wrap;
	justify-content : space-around;
	align-items : flex-start
	}

Liste des options possibles pour la propriété justify-content :

Testez les différentes options.

Pour modifier un élément précis

#conteneur :nth-child(2) /* On prend le 2e élément */{
	align-self : stretch ;
	}

La valeur de la propriété align-items du bloc numéro 2 sera modifié avec l'option stretch.