Technologie
Les Zones de Grille CSS : Maîtrisez l’Art de la Mise en Page !
CSS Grid support has been widely available since March 2017 in all major browsers. Yet, here we are in 2024, and I still see few people using the grid template areas feature. It’s no surprise that many avoid template areas as making sense of the grid is challenging enough. In this interactive article, I aim
Technologie
Le support de CSS Grid est largement disponible depuis mars 2017 dans tous les navigateurs majeurs. Pourtant, en 2024, il est encore rare de voir des utilisateurs tirer parti de la fonctionnalité des zones de modèle de grille.
Il n’est pas surprenant que beaucoup évitent les zones de modèle, car comprendre la grille peut s’avérer complexe. Dans cet article interactif, je vais éclairer cette fonctionnalité et, espérons-le, vous convaincre de l’utiliser plus souvent. Une fois que vous aurez saisi la simplicité et la puissance des zones de modèle, vous serez peut-être amené à les utiliser plus fréquemment.
Introduction
Prenons un exemple de mise en page en grille avec trois colonnes.
.page {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 1rem;
}
Pour positionner les éléments enfants dans la grille, il est nécessaire de spécifier le numéro de ligne pour chaque élément en utilisant grid-column
.
.item-1 {
grid-column: 1 / 3;
}
.item-2 {
grid-column: 3 / 4;
}
Voici le résultat.
À première vue, cela semble correct et fonctionne comme prévu. Mais avez-vous réfléchi à la manière dont j’ai déterminé les numéros de ligne ? Personnellement, je n’aime pas toujours ouvrir les outils de développement pour activer les numéros de ligne afin de placer les éléments où je le souhaite.
Les numéros de ligne ressemblent à ceci :
Vous ne pouvez pas voir les numéros de ligne tant que vous n’inspectez pas l’élément dans les outils de développement du navigateur. Faisons un petit quiz.
Considérez la grille CSS suivante :
.page {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
gap: 1rem;
}
Écrivez les numéros de ligne nécessaires pour placer le deuxième élément dans les trois dernières colonnes.
⚠️ Ne pas ouvrir les outils de développement, devinez par vous-même.
Si vous avez deviné correctement du premier coup, c’est super. Cependant, pour ma part, il m’arrive parfois de me tromper de numéro de ligne et de devoir ouvrir les outils de développement pour corriger cela.
Voyez l’exemple ci-dessous avec les numéros de ligne activés.
En regardant les numéros de ligne, cela semble plus simple, n’est-ce pas ? Je suis d’accord. Cela peut devenir plus compliqué si nous devons placer à la fois les colonnes et les lignes.
Allons plus loin.
Dans la démo suivante, nous avons une mise en page avec 5 colonnes et 2 lignes.
.page {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr;
gap: 1rem;
}
Pouvez-vous deviner quels sont les numéros de ligne corrects pour placer « Élément 1 » dans les trois premières colonnes ?
Bien, la prochaine étape consiste à positionner le deuxième élément dans les trois dernières colonnes. Essayez de deviner la valeur des numéros de ligne.
Bon travail ! Pour moi, gérer les numéros de ligne n’est possible que si les outils de développement sont actifs. Souvent, mon esprit doit gérer de nombreux détails lors de la création d’une mise en page, et « imaginer » les numéros de ligne n’en fait pas partie.
Zones de grille nommées en CSS
Dans CSS Grid, nous pouvons nommer chaque zone de la grille et y faire référence dans tout le CSS. Prenons l’exemple suivant.
Exemple 1 : Problème de base
Nous avons une grille à deux colonnes. J’ai utilisé grid-template-areas
pour définir une zone pour chaque élément.
.page {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-areas: "item1 item2";
gap: 1rem;
}
Ensuite, je peux mapper les noms de chaque élément, respectivement :
.item-1 {
grid-area: item1;
}
.item-2 {
grid-area: item2;
}
En utilisant grid-area
, c’est comme si je cartographiais chaque élément de la grille à sa zone désignée. Dans l’exemple suivant, voyez comment chaque colonne est mappée à un nom de zone de grille.
Ne vous inquiétez pas si ce n’est pas encore clair, je vais l’expliquer plus en détail dans les exemples suivants.
Exemple 2 : Mise en page de cartes
Dans l’exemple suivant, nous avons une grille de 3 colonnes.
.wrapper {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-areas: "featured featured article";
gap: 1rem;
}
J’ai mappé les lignes de grille nommées de manière à donner :
- 2 colonnes pour l’article en vedette
- 1 colonne pour l’article normal
Supposons que nous ayons un composant de carte. Nous pouvons positionner cette carte soit dans la zone « mise en avant », soit dans la zone « article ».
Explorez la démo suivante et essayez de manipuler les bascules dans la propriété grid-area
.
Remarquez comment la carte modifie sa position et sa taille ? Nous changeons les numéros de ligne en utilisant uniquement la propriété nommée grid-area
.
Dans les sections suivantes, je vais détailler la syntaxe des zones de grille et vous guider à travers divers exemples et cas d’utilisation.
Règles des zones de modèle de grille
La zone définie doit avoir une forme rectangulaire
Une zone définie doit avoir une forme rectangulaire dans le code.
/* Ceci est invalide */
.layout {
grid-template-areas:
"header header"
"sidebar main"
"header footer";
}
/* Ceci est valide */
.layout {
grid-template-areas:
"header header"
"sidebar main"
"sidebar footer";
}
Consultez l’illustration suivante :
Toutes les zones doivent être définies
Lorsque vous utilisez grid-template-areas
, toutes les zones doivent être définies, même si vous ne les utiliserez pas toutes.
/* Ceci est invalide */
.layout {
grid-template-areas:
"header header"
"sidebar main"
"header";
}
/* Ceci est valide */
.layout {
grid-template-areas:
"header header"
"sidebar main"
"sidebar footer";
}
Syntaxe du modèle de grille
Pour utiliser les zones de modèle CSS, nous devons définir les zones de grille via la propriété grid-template-areas
. Voici les points essentiels à retenir :
- Elle peut accepter plusieurs chaînes de zones.
- Une chaîne signifie un agencement unidimensionnel (uniquement en colonne).
- Plusieurs chaînes de zones signifient un agencement multidimensionnel (colonnes et lignes).
Ce que j’apprécie avec les zones de grille, c’est qu’elles nous offrent une visualisation de la grille en CSS.
Exemple de syntaxe de zone de grille 1
Dans cet exemple, nous avons une grille unidimensionnelle avec deux colonnes. La première est fixe et l’autre s’adapte à l’espace disponible.
.element {
display: grid;
grid-template-columns: 200px 1fr;
grid-template-areas: "aside main";
gap: var(--gutter-1);
}
Consultez l’illustration suivante :
Une fois les zones de modèle définies, nous pouvons les référencer en CSS et attribuer chaque zone nommée à son élément désigné en utilisant la propriété grid-area
.
.aside {
grid-area: aside;
}
.main {
grid-area: main;
}
Cet exemple constitue une base simple pour l’article. Continuez à lire pour découvrir pourquoi les zones nommées sont puissantes dans les exemples suivants.
Exemple de syntaxe de zone de grille 2
En nous basant sur l’exemple précédent, nous devons ajouter un pied de page à la mise en page de la grille. Que devons-nous faire ?
Nous pouvons ajouter une autre chaîne de zone à grid-template-areas
.
Lorsque nous définissons plusieurs valeurs de chaînes de zones pour les zones de modèle de grille, des lignes de grille implicites sont créées automatiquement.
.element {
display: grid;
grid-template-columns: 200px 1fr;
grid-template-areas:
"aside main"
"footer footer";
gap: var(--gutter-1);
}
Visualisation de la grille CSS
Essayez d’imaginer la grille en fonction des zones définies ci-dessus. Pouvez-vous la deviner ?
Lorsque nous ajoutons plusieurs chaînes de zones dans grid-template-areas
, il est conseillé de les empiler sur plusieurs lignes, car cela facilite leur visualisation.
.element {
/* autres styles */
grid-template-areas:
"aside main"
"footer footer";
}
Chaque chaîne de zone représente une ligne dans la grille, semblable à un tableau.
Exemple de syntaxe de zone de grille
Nous pouvons modifier la disposition simplement en changeant le grid-template-areas
pour le conteneur principal. Le CSS suivant reste constant, il suffit de modifier la chaîne de zone de la grille.
.aside {
grid-area: aside;
}
.main {
grid-area: main;
}
.footer {
grid-area: footer;
}
Consultez la démo suivante et essayez de modifier la disposition.
.page {
grid-template-areas:
"aside main"
"footer footer";
}
En modifiant la chaîne grid-template-areas
, l’ensemble de la disposition se met à jour automatiquement, en utilisant les mêmes noms de grid-area
(aside, main, footer). Cela centralise le contrôle de la mise en page, rendant les ajustements simples et efficaces.
Dans l’exemple suivant, nous pouvons changer la disposition des éléments de l’interface utilisateur simplement en mettant à jour la ou les chaînes grid-template-areas
.
Essayez de changer la valeur du menu déroulant et observez ce qui se passe. Remarquez à quel point cela ressemble à une cartographie de la disposition.
grid-template-areas:
« aside main » « footer «
Cellules de grille vides
Nous pouvons définir une cellule vide en ajoutant un ou plusieurs points. Par exemple :
.element {
/* autres styles */
grid-template-areas:
"aside main"
"... footer";
}
Les points « … » ici représentent une cellule vide dans la grille. Voyons cela en action :
Un exemple montrant une cellule de grille vide
grid-template-areas:
« aside main » « footer «
Lignes de grille nommées en CSS
Introduction
Lorsque j’ai découvert les lignes de grille nommées, j’ai vu des choses comme ceci :
.layout {
grid-template-columns: [full-start] 1fr
[content-start] 2fr
[content-end] 1fr [full-end];
}
Je ne comprenais pas si les suffixes *-start
ou *-end
étaient des noms personnalisés de l’auteur ou générés par le navigateur. En général, cette syntaxe peut prêter à confusion, mais elle est utile dans certains cas. Je vais essayer de l’expliquer clairement dans cette section.
Dans l’exemple suivant, nous avons une grille avec trois colonnes.
.layout {
display: grid;
grid-template-columns: 1fr 2fr 1fr;
gap: 1rem;
}
Dans une grille, le nombre de lignes est égal au nombre de colonnes plus un. Si nous avons 3 colonnes, alors nous aurons 4 lignes de grille.
Consultez l’exemple suivant :
Imaginons que nous souhaitions déplacer un élément de la ligne 2 à la ligne 3. Voici comment procéder :
.element {
grid-column: 2 / 3;
}
En utilisant des lignes de grille nommées, l’idée est que nous pouvons attribuer un nom unique à chaque ligne de la grille au lieu d’utiliser les numéros de ligne par défaut.
.disposition {
/* Avant */
grid-template-columns: 1fr
2fr
1fr;
/* Après */
grid-template-columns: [debut-complet] 1fr
[debut-contenu] 2fr
[fin-contenu] 1fr [fin-complet];
}
Il est essentiel de garder à l’esprit que les numéros de ligne sont toujours disponibles pour votre utilisation. Nommer les lignes ne remplace pas les numéros de ligne.
Supposons que nous souhaitions positionner l’élément de la même manière que dans la démonstration précédente, mais en utilisant des lignes de grille nommées.
.element {
grid-column: debut-contenu / fin-contenu;
}
Cela semble plus clair, n’est-ce pas ?
Peut-être souhaitons-nous le placer sur l’un des côtés.
.element {
grid-column: debut-complet / fin-contenu;
}
Dans la démonstration suivante, vous pouvez activer ou désactiver les numéros de ligne. Essayez par vous-même et observez les résultats.
Si ce n’est pas encore clair, ne vous inquiétez pas. Je vais expliquer le concept d’une autre manière ci-dessous.
Pistes de grille
Dans le CSS grid, nous utilisons le terme « taille de piste », qui désigne la dimension d’une colonne ou d’une ligne. Voici un exemple :
.disposition {
display: grid;
grid-template-columns: 1fr 1fr;
}
Les 1fr
et 1fr
représentent les tailles de piste. Avec des lignes de grille nommées, nous nous concentrons sur le fait de nommer les lignes entourant ces pistes.
N’oubliez pas que nous nommons les lignes de la grille.
Consultez la figure suivante :
Remarquez comment les numéros de ligne entourent les pistes. Nous avons deux pistes, donc trois lignes sont présentes.
Dans cet exemple, nous avons une section latérale et une section principale.
.disposition {
display: grid;
grid-template-columns:
[debut-aside] 200px [fin-aside debut-main] 1fr [fin-main];
}
Examinez la figure suivante :
Le nom de ligne doit être écrit avant la taille de la piste. Notez que les valeurs entre crochets peuvent partager plusieurs noms de ligne. Dans notre exemple ci-dessous, la ligne fin-aside
est identique à debut-main
.
L’un des avantages d’utiliser des lignes nommées de cette manière est que nous pouvons positionner les éléments comme suit :
.aside {
grid-column: debut-aside / fin-aside;
}
ou de cette manière :
.aside {
grid-column: aside;
}
Lorsque nous définissons le début et la fin d’une ligne comme debut-aside
et fin-aside
, cela s’appelle la nomination implicite des lignes. Le navigateur les prendra et nous permettra d’utiliser la zone (par exemple : grid-column: aside
);
De plus, nous pouvons également…
Comprendre les Lignes de Grille Nommées en CSS
Les lignes de grille nommées en CSS offrent une flexibilité précieuse lors de la création de mises en page. En définissant des noms pour les lignes, on peut facilement gérer la disposition des éléments dans une grille. Cela permet d’améliorer la lisibilité du code et de simplifier les ajustements futurs.
Configuration de la Grille avec des Lignes Nommées
Pour illustrer l’utilisation des lignes nommées, considérons un exemple de configuration de grille. En utilisant des noms personnalisés pour les lignes, nous pouvons créer une structure de grille plus intuitive.
.layout {
display: grid;
grid-template-columns: [aside-start] 200px [aside-end main-start] 1fr [main-end];
grid-template-rows: [aside-start main-start] auto [aside-end main-end footer-start] 40px [footer-end];
}
Dans cet exemple, les lignes sont définies avec des noms, ce qui facilite la compréhension de la structure de la grille.
Utilisation des Lignes Nommées
Il n’est pas nécessaire de nommer toutes les lignes de la grille. On peut choisir de nommer uniquement celles qui sont les plus pertinentes pour notre mise en page. Par exemple, nous pouvons nommer uniquement les lignes de la deuxième colonne.
.layout {
grid-template-columns: 1fr [content-start] 2fr [content-end] 1fr;
}
Cette approche permet de garder le code propre tout en conservant la fonctionnalité nécessaire.
Mélanger Nombres de Lignes et Noms
Il est également possible de combiner les numéros de lignes et les noms lors de la position des éléments dans la grille. Par exemple, nous pouvons placer un élément de la ligne 1 jusqu’à la ligne nommée « content-end ».
.item {
grid-column: 1 / content-end;
}
Cette flexibilité dans l’utilisation des grilles CSS est un atout majeur, permettant de choisir la méthode qui convient le mieux à chaque situation.
Applications Pratiques des Zones de Grille
Inverser la Direction de la Grille
Imaginons que nous ayons un composant de carte et que nous souhaitions inverser la direction de la mise en page. Dans le cas de Flexbox, cela se fait facilement avec flex-direction: row-reverse
. Cependant, avec CSS Grid, il faut ajuster la position de chaque élément dans la grille.
Voici un exemple de configuration de carte :
.card {
--cols: 150px 1fr;
display: grid;
grid-template-columns: var(--cols);
}
.card__thumb {
grid-column: 1 / 2;
}
.card__content {
grid-column: 2 / 3;
}
Pour inverser la mise en page, nous devons :
- Modifier la définition des colonnes.
- Ajuster la propriété
grid-column
pour chaque élément enfant.
.card--flip {
--cols: 1fr 150px;
}
.card__thumb {
grid-column: 2 / 3;
}
.card__content {
grid-column: 1 / 2;
grid-row: 1;
}
Cette méthode permet de créer des mises en page dynamiques et adaptables, offrant ainsi une expérience utilisateur améliorée.
Explorer la nature : Une vie agréable
Un aperçu de la beauté naturelle.
Nous pouvons améliorer notre approche en utilisant des zones de grille nommées. Dans la solution actuelle, il est nécessaire de modifier les numéros de début et de fin de grid-column
pour chaque élément enfant.
.card {
display: grid;
grid-template-columns: 150px 1fr;
grid-template-areas: "thumb content";
}
.card__thumb {
grid-area: thumb;
}
.card__content {
grid-area: content;
}
Pour inverser la disposition, il suffit de faire :
.card--flip {
grid-template-columns: 1fr 150px;
grid-template-areas: "content thumb";
}
Il n’est plus nécessaire de se soucier des numéros de ligne. Cela simplifie le travail du designer web qui construit la mise en page.
Essayez la démonstration suivante :
Explorer la nature : Une vie agréable
Un aperçu de la beauté naturelle.
.card { grid-template-columns: 150px 1fr; grid-template-areas: "image content"; } .card-image { grid-area: image; } .card-content { grid-area: content; }
Nous ne faisons que changer l’ordre des colonnes et des zones nommées. Qu’est-ce qui est plus facile à modifier, l’utilisation de zones nommées ou de numéros de ligne ?
De plus, nous pouvons également utiliser la propriété abrégée grid-template
.
.card--flip {
grid-template: "content image" / 1fr 150px;
}
Le choix d’utiliser l’abrégé ou non vous appartient, mais je préfère la version longue car elle est plus facile à lire.
Utilisation des zones de grille dans une mise en page d’en-tête
Dans le design suivant,
En CSS, j’ai créé une grille avec trois colonnes de taille égale.
.header {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
}
Si nous voulons les placer en utilisant des numéros de ligne, cela ressemblera à ceci :
.logo {
grid-column: 1 / 2;
}
.nav {
grid-column: 2 / 3;
}
.actions {
grid-column: 3 / 4;
}
Voici le résultat :
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio placeat, ipsum suscipit reprehenderit nobis iusto omnis vero tempore officia accusantium minima repellendus. Blanditiis voluptatum accusantium ut et architecto ab dolorum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quis nesciunt perspiciatis ratione sapiente est sunt pariatur hic? Accusantium asperiores quam nihil dicta tempora ipsa cum, non cumque a minus facere.
Cela fonctionne bien. Explorons comment rendre cela réactif en utilisant uniquement des zones de grille. Tout d’abord, je dois définir chaque zone de grille pour les éléments enfants.
.header {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-areas: "logo nav actions";
}
.logo {
grid-area: logo;
}
.nav {
grid-area: nav;
}
.actions {
grid-area: actions;
}
Voici le résultat. Cela semble…
Optimisation de la mise en page avec CSS Grid
Introduction à CSS Grid
La mise en page d’un site web peut être grandement améliorée grâce à l’utilisation de CSS Grid. Cette méthode permet de créer des structures flexibles et réactives, facilitant ainsi l’adaptation des éléments en fonction de la taille de l’écran. Dans cet article, nous allons explorer comment configurer une mise en page responsive en utilisant des zones de grille.
Configuration de la mise en page par défaut
Pour commencer, définissons la mise en page par défaut. Voici un exemple de code qui illustre comment organiser les éléments principaux :
/* Mise en page par défaut */
.header {
grid-template-areas:
"logo logo actions"
"nav nav nav";
}
Cette configuration place le logo et les actions dans la partie supérieure, tandis que la navigation occupe la ligne suivante.
Adaptation pour les écrans moyens
Pour les écrans de taille moyenne, nous pouvons ajuster la disposition comme suit :
@media (min-width: 380px) {
.header {
grid-template-areas:
"logo nav nav"
"logo actions actions";
}
.nav {
justify-self: end;
}
}
Ici, le logo est toujours présent, mais la navigation est repositionnée pour s’adapter à l’espace disponible.
Mise en page pour les grands écrans
Pour les écrans plus larges, la configuration peut être modifiée de cette manière :
@media (min-width: 900px) {
.header {
grid-template-areas:
"logo nav actions";
}
}
Cette approche permet d’optimiser l’utilisation de l’espace, en alignant tous les éléments sur une seule ligne.
Avantages de l’utilisation des zones de grille
L’utilisation des zones de grille dans CSS offre une clarté remarquable dans la structuration de l’interface utilisateur. Cela permet de visualiser la disposition directement dans le code CSS, rendant le processus de développement plus intuitif.
Démonstration interactive
Pour illustrer ces concepts, une démonstration interactive peut être mise en place. En redimensionnant la fenêtre du navigateur, vous pourrez observer comment la mise en page s’ajuste dynamiquement. Cela met en évidence la flexibilité de CSS Grid et son efficacité pour créer des designs adaptatifs.
Conclusion
CSS Grid est un outil puissant pour les développeurs web souhaitant créer des mises en page réactives et bien structurées. En utilisant des zones de grille, il est possible de concevoir des interfaces utilisateur qui s’adaptent harmonieusement à différentes tailles d’écran, améliorant ainsi l’expérience utilisateur.
Exploration des Dispositions Éditoriales en CSS Grid
Dans cet article, nous allons examiner comment utiliser CSS Grid pour créer des mises en page éditoriales attrayantes et fonctionnelles. Grâce à des exemples pratiques, nous découvrirons comment adapter les dispositions en fonction des différentes tailles d’écran.
Introduction aux Dispositions Flexibles
Les mises en page flexibles sont essentielles pour offrir une expérience utilisateur optimale sur divers appareils. En utilisant la propriété grid-template-areas
, il est possible de définir des zones spécifiques pour le contenu, ce qui facilite la gestion de la disposition.
Pour illustrer cela, nous allons explorer plusieurs options de mise en page. En changeant simplement la définition de grid-template-areas
, nous pouvons voir comment la disposition s’adapte.
Exemple de Mise en Page Éditoriale : Option 1
Dans cet exemple, nous avons une structure qui inclut un titre, un texte descriptif et une image. En utilisant CSS Grid, nous pouvons facilement organiser ces éléments et les ajuster en fonction de la taille de l’écran.
.section {
display: grid;
grid-template-areas:
". title title"
"thumb content content";
gap: 1rem;
}
Notez que le « point » représente un espace vide à gauche du titre, connu sous le nom de token de cellule nulle, qui fait partie des spécifications CSS Grid.
Recette de Shawarma avec Pain Fait Maison
Découvrez les saveurs exquises de la cuisine du Moyen-Orient avec notre recette détaillée de Shawarma, accompagnée de pain fait maison. Que vous ayez envie d’un repas copieux ou que vous planifiez une réunion entre amis, ce plat saura ravir vos convives.
La combinaison de viande marinée tendre enveloppée dans un pain fait maison moelleux, agrémentée de légumes frais et d’une sauce acidulée, est tout simplement irrésistible.
Exemple de Mise en Page Éditoriale : Option 2
En analysant le site time.com, nous pouvons observer l’utilisation des zones CSS Grid pour gérer la disposition des sections. Cet exemple met en lumière comment les éléments peuvent être organisés de manière efficace.
Voici une représentation de la mise en page :
.featured-section {
display: grid;
grid-template-areas:
". feature most-read ."
". secondary most-read .";
grid-template-columns: 1fr minmax(auto, 57.313rem) minmax(12rem, 18.75rem) 1fr;
grid-template-rows: minmax(auto, 25rem) 1fr;
}
Pour se concentrer sur l’implémentation de la mise en page principale, les démonstrations suivantes se concentreront uniquement sur la structure de base, sans entrer dans les détails des composants internes.
Points à Surveiller
- Il y a une colonne vide au début et à la fin de la grille, servant de marge de chaque côté.
- Le choix d’utiliser
minmax()
pour les colonnes et les lignes est intéressant, bien que la mise en page passe rapidement à un design mobile. - Il n’est pas nécessaire de définir
grid-template-rows
car cela peut être géré dans la définition des zones de la grille.
Création d’une Grille Réactive
Maintenant que nous avons établi la structure de base, voyons comment rendre la section réactive en modifiant les définitions des colonnes et des zones.
.featured-section {
display: grid;
grid-template-columns: 32px 1fr 32px;
grid-template-areas:
". feature ."
". secondary ."
". most-read .";
gap: 1rem;
@media (min-width: 500px) {
grid-template-columns: 32px minmax(auto, 57.313rem) minmax(90px, 130px) 32px;
grid-template-areas:
". feature feature ."
". secondary most-read .";
}
@media (min-width: 900px) {
grid-template-columns: 32px 1fr 32px;
grid-template-areas:
". feature ."
". secondary ."
". most-read .";
}
}
En ajustant ces paramètres, nous pouvons créer une mise en page qui s’adapte parfaitement aux différents appareils, garantissant ainsi une expérience utilisateur fluide et agréable.
Exploration de l’application Threads : Une approche innovante du CSS
En examinant la manière dont le CSS est structuré dans l’application Threads de Meta, j’ai découvert une utilisation fascinante de la grille CSS.
Structure de la grille dans Threads
.post {
display: grid;
grid-template-columns: 48px minmax(0, 1fr);
grid-template-rows: 21px 19px max-content max-content;
}
Pour la première fois, j’essaie Threads. C’est vraiment intéressant !
Pour positionner un élément dans la grille, l’équipe a utilisé des numéros de ligne. Voici un exemple :
.postBody {
grid-column-start: 2;
grid-row-start: 2;
grid-row-end: span 3;
}
Le composant de publication présente plusieurs variations. L’utilisation de grid-template-areas
permet de définir chacune d’elles, ce qui me semble plus simple.
Définir des zones de grille en CSS
Voici comment procéder :
.post {
/* Autres styles */
grid-template-areas:
"avatar header"
"avatar body"
". body"
". footer";
}
.post--reply {
grid-template-rows: 40px max-content max-content;
grid-template-areas:
"avatar header"
"body body"
"body body"
"footer footer";
}
.post--nested {
grid-template-areas:
"avatar header"
"avatar body"
"line body"
"footer footer";
}
Expérimentez avec ces variations dans la démo interactive ci-dessous.
Pour la première fois, j’essaie Threads. C’est vraiment intéressant !
Gestion des éléments superposés avec les zones de grille
En utilisant grid-template-areas
, il est possible de disposer des éléments en formes rectangulaires. Prenons l’exemple suivant :
.layout {
display: grid;
grid-template-columns: 1fr 1fr fr;
grid-template-areas:
"card tag tag"
"title title card";
}
Dans cet exemple, j’ai utilisé card
deux fois. Cela n’est pas valide et perturbera la grille. Les valeurs doivent correspondre à une forme rectangulaire.
Voici une illustration pour clarifier ce que j’entends par forme rectangulaire.
Que faire alors ? Nous pouvons définir un nouveau nom de zone et l’utiliser pour positionner à la fois la colonne et la ligne de l’élément souhaité.
Voici un exemple avec un composant de carte :
Boulangerie
Pain au thym avec fromage et olives
Pain au thym avec fromage et olives
# Fromage et Olives
## Pâtisserie
Nous pouvons superposer le titre et l’étiquette sur l’image en utilisant `grid-template-areas`, comme illustré dans l’exemple suivant.
« `css
.card {
display: grid;
grid-template-columns: auto auto 1fr;
grid-template-rows: auto auto;
grid-template-areas:
« thumb-1 tag »
« title thumb-2 »;
}
« `
Remarquez comment j’ai défini `thumb-1` et `thumb-2`. Je peux les utiliser avec `grid-area`.
« `css
.thumb {
grid-column: thumb-1 / thumb-2;
grid-row: thumb-1 / thumb-2;
}
« `
J’ai placé à la fois le titre et l’étiquette dans leurs zones respectives tout en veillant à ce qu’ils soient correctement alignés.
« `css
.tag {
grid-area: tag;
align-self: start;
justify-self: end;
}
.title {
grid-area: title;
align-self: end;
}
« `
Gardez à l’esprit que vous devrez gérer l’ordre de superposition des éléments enfants si nécessaire. Dans mon cas, l’ordre source a déjà résolu ce problème pour moi.
Voici la démonstration finale :
![Pain aux herbes avec fromage et olives](https://tecknews.com/wp-content/uploads/2024/08/localimages/bread.jpg)
*Pâtisserie*
*Pain au thym avec fromage et olives*
Les exemples précédents étaient inspirés de la page des mises en page en cascade d’Oddbird.
## Mises en page conditionnelles avec CSS :has()
Nous pouvons porter les zones de grille à un niveau supérieur en les combinant avec le sélecteur CSS `:has()`. Par exemple, nous pouvons modifier une mise en page en fonction de la présence d’un élément.
Dans cet exemple, je change la mise en page d’un élément `
Général
Le pare-brise de la BMW Panoramic iDrive : une expérience immersive à couper le souffle !
BMW a révélé son nouveau système Panoramic iDrive, révolutionnant l’expérience de conduite avec un affichage tête haute 3D qui s’étend sur tout le pare-brise. Imaginez un intérieur où toutes les informations essentielles, comme la vitesse et les directions, sont projetées directement dans votre champ de vision ! C’est une véritable couche de réalité augmentée qui connecte le conducteur à la route.
Avec des boutons haptiques sur le volant et un écran tactile central innovant, chaque détail est conçu pour une personnalisation optimale. Préparez-vous à découvrir cette technologie futuriste dans le prochain SUV électrique X-Class de BMW fin 2025 !
Une Révolution Technologique : Le Nouveau Système BMW : un aperçu captivant du futur de l'infodivertissement »>iDrive Panoramique de BMW
une Vision d’Avenir
BMW a récemment présenté son innovant système iDrive Panoramique,qui se distingue par un affichage tête haute en 3D impressionnant,occupant l’intégralité du pare-brise. si vous pensiez que l’intérieur épuré des Tesla était à la pointe, attendez de découvrir cette nouvelle approche.
Un Affichage Révolutionnaire
Fini le tableau de bord traditionnel devant le volant. Désormais, toutes les informations sont projetées directement dans le champ de vision du conducteur via le pare-brise. Cela inclut la vitesse, les données d’assistance à la conduite, les feux de circulation, les panneaux routiers et même des indications de navigation et niveaux de batterie. Chaque élément est personnalisable pour que chaque conducteur puisse choisir ce qu’il souhaite afficher. Par exemple, lorsque l’assistance au conducteur est activée, le chemin navigué s’illumine en vert.
Frank Weber, directeur technique chez BMW, décrit cette configuration comme une couche de réalité augmentée qui maintient le conducteur connecté à la route.
Intégration des Retours Clients
La société a déclaré que l’intégration des instructions de navigation avec les données d’assistance au conducteur représente une évolution naturelle alors que nous nous dirigeons vers des niveaux plus élevés d’automatisation dans la conduite.De plus, ils ont souligné que les retours clients ont été essentiels pour façonner plusieurs fonctionnalités intelligentes affichées sur ce nouveau système.
Un Volant Repensé
Les innovations ne s’arrêtent pas au pare-brise ; BMW a également repensé son volant en y intégrant des boutons haptiques qui s’illuminent selon différents réglages.
Un nouvel écran tactile central en forme de losange accompagne cet interface sur le pare-brise et permet aux utilisateurs d’interagir directement avec lui.Ce dernier offre une interface hautement personnalisable où chacun peut prioriser ses applications favorites (appelées « pixels » par BMW) pour un accès rapide et facile. La marque envisage également un magasin d’applications pour encore plus de fonctionnalités et personnalisations.
Un Système opérationnel Innovant
Le logiciel qui alimente ce système est appelé BMW Operating System X ; il est développé entièrement en interne par l’entreprise et repose sur Android Open Source Project.
L’Intelligence Artificielle au Service du Conducteur
Aucun lancement technologique en 2025 ne serait complet sans une touche d’intelligence artificielle (IA).Le système iDrive utilise cette technologie pour apprendre les habitudes et comportements des conducteurs afin d’afficher automatiquement les applications pertinentes ainsi que leurs réglages préférés. Par exemple, si un utilisateur emprunte souvent un itinéraire spécifique vers son domicile tout en activant le mode sport, ces paramètres seront proposés proactivement lors du prochain trajet.De plus, selon BMW ,les modèles linguistiques avancés rendent les commandes vocales beaucoup plus naturelles et conversationnelles ; plutôt que d’utiliser des mots-clés spécifiques comme « station », il suffit simplement aux conducteurs dire quelque chose comme « trouve une station de recharge près du supermarché ».
Début D’une Nouvelle Ère
Ce design intérieur audacieux fera ses débuts dans le futur SUV électrique X-Class prévu fin 2025; plusieurs autres véhicules basés sur la nouvelle plateforme « Neue Klasse » suivront bientôt après cela.
Considérations Sécuritaires Émergentes
Un changement aussi radical pourrait diviser l’opinion parmi ceux attachés aux intérieurs classiques dotés depuis longtemps d’aiguilles traditionnelles et compteurs analogiques caractéristiques chez BMW . Il sera également intéressant d’observer comment la marque abordera les préoccupations relatives à la sécurité; celles-ci étant devenues cruciales pour toutes entreprises automobiles électriques adoptant entièrement interfaces tactiles . En effet , Euro NCAP introduira dès 2026 nouvelles directives exigeant certaines fonctions essentielles soient accessibles via boutons physiques afin qu’un véhicule puisse obtenir cinq étoiles lors évaluations sécurité .
Général
Nvidia révolutionne le monde physique avec GenAI et Cosmos !
Lors de la keynote très attendue du CES 2025, le PDG de Nvidia, Jensen Huang, a captivé l’audience avec des annonces révolutionnaires. Parmi les innovations présentées, le modèle Cosmos se distingue par sa capacité à transformer l’IA générative en actions physiques. Cela signifie que des robots et véhicules autonomes pourront réagir plus efficacement aux stimuli du monde réel. Nvidia ouvre ainsi la voie à une nouvelle ère d’applications robotiques et automobiles, tout en rendant ses modèles disponibles gratuitement pour encourager l’expérimentation.
Innovations Technologiques : les Annonces Marquantes de Nvidia au CES 2025
Un Événement Incontournable
Lors du CES 2025, l’une des conférences les plus attendues a été celle de Jensen Huang, le PDG de Nvidia. Ce dernier a présenté une série d’annonces captivantes touchant à divers sujets technologiques d’actualité tels que l’intelligence artificielle (IA), la robotique et les véhicules autonomes.
Nouveaux Produits et Progrès Technologiques
Vêtu d’une version scintillante de son emblématique blouson en cuir noir,Huang a détaillé les dernières cartes graphiques GeForce RTX 50 ainsi que des modèles fondamentaux d’IA appelés Nemotron. Il a également partagé des plans pour des agents alimentés par IA.
Parmi les innovations notables figurent des extensions à la plateforme Omniverse, qui permet la création de jumeaux numériques et simule l’interaction entre l’IA et le monde physique. De plus, un superordinateur AI compact nommé Project Digits a été introduit, propulsé par le GPU Grace Blackwell.
Cosmos : Une Révolution dans l’Intelligence Artificielle
Une annonce particulièrement intrigante fut celle du projet Cosmos. Ce dernier est défini comme un ensemble complet de modèles fondamentaux mondiaux intégrant des tokenizers avancés et une pipeline vidéo sophistiquée.L’objectif principal est d’étendre les capacités génératives de l’IA au-delà du numérique vers le monde physique.
En termes simples, alors que la plupart des systèmes génératifs se concentrent sur la création numérique basée sur une vaste base documentaire ou visuelle, Cosmos vise à produire des actions physiques en s’appuyant sur ses données issues d’environnements simulés numériquement.
Implications pratiques pour Divers secteurs
Les implications pratiques sont significatives pour divers domaines tels que la robotique ou les véhicules autonomes. Par exemple, grâce à Cosmos, il devient possible pour un robot humanoïde d’apprendre à exécuter efficacement une tâche spécifique comme retourner une omelette ou manipuler des pièces dans une chaîne de production.De même,un véhicule autonome peut s’adapter dynamiquement aux différentes situations rencontrées sur la route.
Actuellement,ces formations reposent souvent sur un travail manuel intensif où il faut filmer plusieurs fois chaque action humaine ou faire parcourir aux voitures autonomes plusieurs millions de kilomètres. Avec Cosmos cependant,ces méthodes peuvent être automatisées ce qui réduit considérablement coûts et délais tout en élargissant le volume de données disponibles pour entraîner ces systèmes.
La Plateforme cosmo : Un Outil Puissant
Nvidia présente donc Cosmos comme une plateforme dédiée au développement mondial fondée sur l’IA générative qui intègre divers outils facilitant cette évolution technologique rapide. En tant qu’extension directe du simulateur Omniverse déjà existant chez Nvidia, elle permet non seulement d’extrapoler les modèles numériques mais aussi leur request concrète dans notre réalité quotidienne.
Au cœur même du projet se trouvent ces modèles fondamentaux construits grâce à millions heures vidéos accumulées permettant ainsi aux machines formées avec cette technologie réagir avec précision face aux stimuli physiques variés qu’elles rencontrent dans leur environnement réel.
Vers un Avenir Prometteur
Jensen Huang n’a pas manqué souligner lors sa présentation comment nous assistons actuellement à une transition majeure vers ce qu’il appelle « l’IA physique ». en rendant ses modèles disponibles gratuitement afin encourager recherche avancée en robotique et véhicules autonomes , Nvidia montre sa volonté soutenir innovation tout en anticipant tendances futures .
À court terme cependant , cet impact pourrait rester limité car principalement destiné développeurs spécialisés . Néanmoins , son potentiel transformationnel pourrait accélérer considérablement progrès produits concernés tout en améliorant sécurité efficacité systèmes associés .Ces développements témoignent également transformation continue chez Nvidia vers entreprise axée logiciel capable bâtir plateformes adaptées nouvelles applications émergentes. Pour ceux intéressés comprendre direction future société , ces annonces offrent perspectives fascinantes quant maintien croissance impressionnante entreprise .
Général
L’écran tactile secondaire Corsair Xeneon Edge : un 32:9 qui s’installe partout !
Qu’est-ce qui vient de se passer ? Le CES est toujours une vitrine incroyable de produits technologiques, et cette année, Corsair nous surprend avec son écran tactile Xeneon Edge. Avec ses 14,5 pouces et un rapport d’aspect 32:9, cet écran secondaire pourrait bien devenir l’outil indispensable pour les passionnés de technologie. Grâce à sa résolution impressionnante de 2560 par 720 pixels et à sa connectivité polyvalente via USB Type-C ou HDMI, il s’adapte à tous vos besoins. Imaginez pouvoir gérer vos réseaux sociaux tout en surveillant votre système ! Restez à l’affût pour plus d’infos !
Nouveaux Horizons Technologiques : Le Xeneon Edge de Corsair
Qu’est-ce qui se passe ?
Chaque année, le CES présente une multitude de nouveaux produits technologiques, certains étant plus pratiques que d’autres. L’intérêt que vous portez à l’écran tactile Xeneon Edge de Corsair dépendra probablement de votre besoin d’un écran secondaire de 14,5 pouces au format 32:9.
Une Évolution des Écrans Secondaires
Bien que les écrans secondaires ne soient pas une nouveauté, leur complexité a considérablement augmenté ces dernières années. Le Xeneon Edge se distingue par son design innovant et ses caractéristiques techniques impressionnantes. Avec une résolution LCD de 2560 x 720 pixels, il offre une densité d’affichage remarquable de 183 PPI, un niveau de luminosité atteignant 350 nits et un taux de rafraîchissement à 60 Hz sur son panneau IPS.
Flexibilité et Installation
Le Xeneon Edge est conçu pour s’adapter à divers environnements. Il peut être placé sur un bureau grâce au support inclus ou fixé à un PC ou toute surface ferromagnétique grâce aux quatorze aimants intégrés. De plus, il peut être installé dans un boîtier via un point de montage pour radiateur de 360 mm, ce qui est plutôt séduisant. Corsair affirme également qu’il est plus mince qu’un ventilateur classique, minimisant ainsi les préoccupations liées à l’espace.
Connectivité et Utilisation Pratique
Pour la connexion, le dispositif utilise soit le port USB Type-C DP-Alt Mode soit un port HDMI standard. Une caractéristique intéressante est sa capacité à fonctionner en orientation verticale ou horizontale.Cela en fait un outil idéal pour ceux qui souhaitent faire défiler leurs fils d’actualités sur les réseaux sociaux ou surveiller Discord simultanément. Windows reconnaîtra le Xeneon Edge comme écran additionnel.
Corsair indique également que cet écran tactile capacitif multi-touch à cinq points fonctionne comme n’importe quel autre affichage tactile sous Windows.!Fonctionnalités du Xeneon Edge
Intégration avec iCue
L’écran s’intègre parfaitement avec le logiciel iCue de Corsair permettant aux utilisateurs d’accéder facilement aux informations concernant la vitesse des ventilateurs du système, les températures ainsi que l’utilisation du CPU et GPU. Les utilisateurs peuvent aussi ajuster différents paramètres tels que les profils lumineux et la gestion des ventilateurs directement depuis l’écran tactile.
Disponibilité et Prix
Aucune details précise n’a encore été communiquée concernant le prix du xeneon Edge; cependant, il pourrait s’avérer assez onéreux compte tenu des fonctionnalités avancées proposées par cet appareil innovant. La disponibilité est prévue pour le deuxième trimestre 2025 chez les revendeurs Corsair ainsi que sur leur site officiel.
Dans cette même veine technologique, nous avons déjà vu plusieurs écrans LCD intégrés dans des systèmes AIO (All-in-One) refroidis par liquide auparavant; notamment celui proposé par Lamptron l’année dernière qui servait également d’écran secondaire ou encore Tryx qui a dévoilé en mars dernier ce qui était considéré comme le premier refroidisseur AIO doté d’un écran AMOLED incurvé.
-
Général5 mois ago
X (anciennement Twitter) permet enfin de trier les réponses sur iPhone !
-
Technologie4 mois ago
Le PDG de Broadcom anticipe la montée en puissance des hyperscalers avec des clusters d’un million d’accélérateurs !
-
Général4 mois ago
L’Inter brille de mille feux face à Man City – Inzaghi enflamme le match !
-
Science et nature4 mois ago
Une OLED révolutionnaire pour une vision nocturne compacte et légère !
-
Divertissement4 mois ago
Résumé de l’épisode 2 de « Agatha All Along » : Plongée dans le monde des sorcières !
-
Général4 mois ago
Jáder Obrian marque à la 47e minute et propulse Austin FC en tête 1-0 face à LAFC !
-
Général4 mois ago
L’interdiction de l’avortement en Géorgie a coûté la vie à une jeune mère : la droite chrétienne désigne désormais la victime comme coupable
-
Général4 mois ago
Les scientifiques redéfinissent l’avenir scientifique de l’Afrique lors de la 15e conférence de l’AAS à Abuja