Micro-mises en page

Lorsque nous pensons aux mises en page, nous pensons souvent aux conceptions au niveau de la page. Toutefois, les composants plus petits de la page peuvent avoir leurs propres mises en page autonomes.

Idéalement, ces mises en page au niveau du composant s'ajusteront automatiquement, quelle que soit leur position sur la page. Dans certains cas, vous ne savez pas si un composant sera placé dans la colonne de contenu principale, dans la barre latérale ou dans les deux. Sans savoir avec certitude où un composant finira, vous devez vous assurer que le composant peut s'adapter à son conteneur.

Une mise en page à deux colonnes, une large et une étroite. Les objets multimédias sont disposés différemment selon qu'ils se trouvent dans la colonne large ou la colonne étroite.

Grille

La grille CSS ne concerne pas uniquement les mises en page au niveau de la page. Il fonctionne également bien pour les composants qu'ils contiennent.

Dans cet exemple, ::before et ::after Les pseudo-éléments créent des lignes décoratives sur côté d'un titre. Le titre lui-même est un conteneur de grille. L'individu les éléments sont disposés de manière à ce que les lignes occupent toujours l'espace disponible.

h1 {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 1em;
}
h1::before,
h1::after {
  content: "";
  border-top: 0.1em double black;
  align-self: center;
}
<ph type="x-smartling-placeholder">
</ph> Outils de développement dans Firefox affichant une superposition de grille. Outils pour les développeurs dans Chrome affichant une grille en superposition <ph type="x-smartling-placeholder">
</ph> Les navigateurs pour ordinateur de bureau tels que Firefox et Chrome disposent d'outils pour les développeurs qui peuvent afficher des lignes et des zones de grille en superposition sur votre conception.

Découvrez comment inspecter les mises en page en grille dans les outils pour les développeurs Chrome.

Flexbox

Comme son nom l'indique, vous pouvez utiliser flexbox pour rendre la flexibilité des composants. Vous pouvez déclarer quels éléments du composant avoir une taille minimale ou maximale et laisser les autres éléments s'adapter ; en conséquence.

Dans cet exemple, l'image occupe un quart de l'espace disponible et l'image du texte occupe les trois autres quarts. Toutefois, la taille de l'image ne dépasse jamais 200 pixels.

.media {
  display: flex;
  align-items: center;
  gap: 1em;
}
.media-illustration {
  flex: 1;
  max-inline-size: 200px;
}
.media-content {
  flex: 3;
}
<ph type="x-smartling-placeholder">
</ph> Outils pour les développeurs dans Firefox affichant une superposition Flexbox Outils pour les développeurs dans Chrome affichant une superposition Flexbox <ph type="x-smartling-placeholder">
</ph> Les outils pour les développeurs dans Firefox et Chrome peuvent vous aider à visualiser la forme de vos composants Flexbox.

Découvrez comment inspecter des mises en page flexbox. dans les outils pour les développeurs Chrome.

Requêtes de conteneur

Flexbox vous permet de concevoir à partir du contenu. Vous pouvez spécifier les paramètres vos éléments (l'étroitesse et la largeur requises) et laissez pour déterminer l'implémentation finale.

Mais le composant lui-même n'a pas conscience de son contexte. Il ignore si elle est utilisée dans le contenu principal ou dans une barre latérale. Cela peut rendre la mise en page des composants plus délicate que celle des mises en page. Pour pouvoir appliquer des styles pertinents en fonction du contexte, vos composants doivent connaître plus de détails que la taille de la fenêtre d'affichage dans laquelle ils se trouvent.

Avec les mises en page, vous connaissez la largeur du conteneur, car est la fenêtre d'affichage du navigateur. les requêtes média indiquent les dimensions conteneur au niveau de la page.

Pour générer un rapport sur les dimensions d'un conteneur, utilisez requêtes de conteneur.

Pour commencer, définissez les éléments qui agissent en tant que conteneurs.

main,
aside {
  container-type: inline-size;
}

Cela signifie que vous souhaitez interroger la dimension intégrée. Pour l'anglais des documents, c’est l’axe horizontal. Vous allez modifier les styles en fonction la largeur du conteneur.

Si un composant se trouve à l'intérieur de l'un de ces conteneurs, vous pouvez appliquer des styles de la même manière à l'application des requêtes média.

.media-illustration {
  max-width: 200px;
  margin: auto;
}

@container (min-width: 25em) {
  .media {
    display: flex;
    align-items: center;
    gap: 1em;
  }

  .media-illustration {
    flex: 1;
  }

  .media-content {
    flex: 3;
  }
}

Si un objet multimédia se trouve à l'intérieur d'un conteneur dont la largeur est inférieure à 25em, le boîtier flexible styles ne sont pas appliqués. L'image et le texte s'affichent dans un ordre vertical.

Toutefois, si l'élément conteneur est plus large que 25em, l'image et le texte apparaissent côte à côte.

Les requêtes de conteneur vous permettent de styliser les composants de manière indépendante. Vous pouvez écrire règles basées sur la largeur de l'élément conteneur la largeur du la fenêtre d'affichage n'a plus d'importance.

Deux conteneurs de tailles différentes.

Combiner des requêtes

Vous pouvez utiliser des requêtes média pour la mise en page et des requêtes de conteneur pour composants de la page.

Ici, la structure globale de la page comporte un élément main et un élément aside. Il y a des objets multimédias dans les deux éléments.

<body>
  <main>
     <div class="media">…</div>
     <div class="media">…</div>
  </main>
  <aside>
     <div class="media">…</div>
  </aside>
</body>

Une requête média applique une mise en page sous forme de grille aux éléments main et aside lorsque la la largeur de la fenêtre d'affichage est supérieure à 45em.

@media (min-width: 45em) {
  body {
    display: grid;
    grid-template-columns: 3fr 1fr;
  }
}

La règle de requête du conteneur pour les objets multimédias reste la même: n'appliquez une mise en page Flexbox horizontale que si l'élément conteneur est plus large que 25em.

Une mise en page à deux colonnes, une large et une étroite. 
Les objets multimédias sont disposés différemment selon qu&#39;ils se trouvent dans la colonne large ou la colonne étroite.

Les requêtes de conteneur changent la donne pour les micro mises en page. Vos composants peuvent être autonomes, indépendamment de la fenêtre d'affichage du navigateur.

Testez vos connaissances

Testez vos connaissances sur les micro-mises en page.

Les options Grid et Flexbox sont-elles utiles pour les micro-mises en page ?

Vrai
🎉 Bonne réponse.
Faux
Pas tout à fait. Grid et Flexbox sont tous deux très utiles, même pour les plus petits de mises en page.

Précédemment, vous avez découvert les mises en page de macros au niveau de la page. Maintenant, vous connaissez de micro-mises en page au niveau du composant.

Ensuite, vous approfondirez les éléments de base de votre contenu et découvrirez comment rendre vos images responsives. Tout d’abord, vous découvrirez typographie responsive.