Flexbox en css3 c'est quoi?

 Flexbox est un modèle de mise en page flexible introduit dans CSS3. Il fournit une méthode plus avancée et efficace pour aligner, distribuer et positionner les éléments dans un conteneur.

Le modèle Flexbox est basé sur la notion de conteneur et d'éléments enfants (ou items). Le conteneur, généralement un élément parent, est configuré avec la propriété `display: flex;` pour activer le mode Flexbox.

Une fois que le conteneur est configuré en mode Flexbox, les éléments enfants à l'intérieur du conteneur peuvent être contrôlés en utilisant plusieurs propriétés spécifiques à Flexbox. Voici quelques-unes des propriétés les plus couramment utilisées :

  1. `justify-content` : Cette propriété contrôle l'alignement horizontal des éléments enfants dans le conteneur. Elle permet de les répartir sur l'axe principal du conteneur (horizontalement) et de spécifier l'espacement entre eux.
  2. `align-items` : Cette propriété contrôle l'alignement vertical des éléments enfants dans le conteneur. Elle permet de les répartir sur l'axe transversal du conteneur (verticalement) et de spécifier l'espacement entre eux.
  3.  `flex-direction` : Cette propriété spécifie la direction dans laquelle les éléments enfants sont disposés. Elle peut être utilisée pour créer des mises en page en ligne, en colonnes ou en lignes inversées.
  4.  `flex-wrap` : Cette propriété contrôle le comportement de retour à la ligne des éléments enfants lorsque l'espace du conteneur est insuffisant. Elle peut être utilisée pour créer des mises en page flexibles qui s'adaptent à différentes tailles d'écran.
  5. `flex` : Cette propriété est utilisée pour spécifier la flexibilité des éléments enfants. Elle permet de distribuer l'espace disponible de manière équitable entre les éléments ou de les faire s'agrandir ou se réduire en fonction de leur poids.

Ces propriétés, combinées à d'autres propriétés Flexbox, offrent un contrôle puissant sur la mise en page des éléments dans un conteneur. Elles permettent de créer des mises en page flexibles et réactives qui s'adaptent automatiquement à différentes tailles d'écran.

Il est important de noter que Flexbox est largement pris en charge par les navigateurs modernes, mais il peut y avoir quelques différences d'implémentation entre les navigateurs. Il est recommandé de tester votre mise en page dans différents navigateurs pour assurer une compatibilité maximale.

Exemple : 


Supposant que nous avons cette partie d'un code HTML : 

<div class="container">

  <header>

    <h1>Mon Site Web</h1>

    <nav>

      <ul>

        <li><a href="#">Accueil</a></li>

        <li><a href="#">A propos</a></li>

        <li><a href="#">Services</a></li>

        <li><a href="#">Contact</a></li>

      </ul>

    </nav>

  </header>

  <main>

    <h2>Bienvenue sur mon site web</h2>

    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>

  </main>

</div>


Lorsqu'on lui applique cette mise forme css : 
<html>
<head>
<style>
.container {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  height: 100vh;
}

header {
  background-color: #f2f2f2;
  padding: 20px;
  width: 100%;
}

nav ul {
  list-style-type: none;
  padding: 0;
  margin: 0;
  display: flex;
}

nav ul li {
  margin-right: 10px;
}

main {
  flex: 1;
  width: 100%;
  padding: 20px;
}

h1, h2 {
  margin: 0;
}

</style>
</head>
<body>
  <div class="container">

  <header>

    <h1>Mon Site Web</h1>

    <nav>

      <ul>

        <li><a href="#">Accueil</a></li>

        <li><a href="#">A propos</a></li>

        <li><a href="#">Services</a></li>

        <li><a href="#">Contact</a></li>

      </ul>

    </nav>

  </header>

  <main>

    <h2>Bienvenue sur mon site web</h2>

    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>

  </main>

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


 on obtient ceci : 


Dans cet exemple, nous utilisons Flexbox pour créer une mise en page centrée verticalement et horizontalement. Voici comment fonctionne le CSS :

.container est configuré en tant que conteneur Flexbox avec display: flex;. Nous utilisons flex-direction: column; pour empiler les éléments verticalement.
align-items: center; aligne les éléments enfants horizontalement au centre du conteneur.
text-align: center; centre le texte à l'intérieur du conteneur.
header est un élément contenant le titre et la barre de navigation. Il a un arrière-plan gris clair et une marge intérieure.
nav ul est configuré en tant que conteneur Flexbox pour aligner les éléments de la barre de navigation horizontalement.
main est le conteneur principal du contenu. Nous utilisons flex: 1; pour que le contenu occupe tout l'espace disponible restant.
Les autres styles sont principalement pour le positionnement et la mise en forme des éléments.
Cet exemple illustre une mise en page de base, mais Flexbox offre de nombreuses possibilités pour créer des mises en page plus complexes et adaptatives.

N'hésitez pas à expérimenter avec les propriétés Flexbox pour créer différentes mises en page selon vos besoins spécifiques.



Commentaires

Posts les plus consultés de ce blog

Ionic 2 : Envoie d'une image vers un serveur web à l'aide de PHP et Angular 2

Premier tutoriel avec Arduino et Proteus ISIS

Login et password ,formulaire d'authentification sous android avec mysql et json