Bonjour,
J'ai une page avec une liste d'amis très simple, avec un lien pour ouvrir le profil de l'ami, et une petite icône pour le supprimer. La liste peut contenir de 1 à 200 éléments.
J'aimerais que les petites icônes pour supprimer soient alignées les unes en-dessous des autres, à proximité raisonnable du texte, et je n'y arrive pas.
Je peux modifier le HTML comme je veux, mais l'objectif est si possible de ne pas complexifier le balisage inutilement.
L'objectif n'est pas non plus de spécifier une taille en dur genre 120px, ni même 30em. La longueur des pseudos peut être plus ou moins imprévisible.
Je ne veux pas non plus de <table>.
JE pensais que le flex layout faisait que la taille horizontale était définie par le plus long élément (le plus long pseudo donc). Mais visiblement pas !
Je ne dois pas avoir compris le concept.
J'ai le sentiment que c'est solvable avec display: grid; mais je ne pige pas comment, sans déclarer le nombre de lignes et de colonnes à l'avance avec leur taille.
Oui parce qu'à terme, il y aura sûrement plusieurs actions possibles: envoyer un message, inviter à une partie...
Si on peut afficher la liste en 2, 3 ou 4 colonnes quand il y en a beaucoup et qu'on a de la place horizontalement (et pas sur téléphone), ce serait du bonus, mais pas indispensable.
Merci pour votre aide !
Modifié par QuentinC (30 Jan 2024 - 22:59)
J'ai une page avec une liste d'amis très simple, avec un lien pour ouvrir le profil de l'ami, et une petite icône pour le supprimer. La liste peut contenir de 1 à 200 éléments.
J'aimerais que les petites icônes pour supprimer soient alignées les unes en-dessous des autres, à proximité raisonnable du texte, et je n'y arrive pas.
Je peux modifier le HTML comme je veux, mais l'objectif est si possible de ne pas complexifier le balisage inutilement.
L'objectif n'est pas non plus de spécifier une taille en dur genre 120px, ni même 30em. La longueur des pseudos peut être plus ou moins imprévisible.
Je ne veux pas non plus de <table>.
<ul class="menuList flexV">
<li><a href="...">Alice</a>
<div class="flexH">
[<a href="..."><span class="visually-hidden">Supprimer Alice</span><span aria-hidden="true">🗴</span></a>
</div>
</li>
<li><a href="...">Bob</a>
<div class="flexH">
[<a href="..."><span class="visually-hidden">Supprimer Bob</span><span aria-hidden="true">🗴</span></a>
</div>
</li>
</ul>
.menuList {
list-style-type: none;
}
.flexV {
display: flex;
flex-flow: column wrap;
}
.flexH {
display: flex;
flex-flow: row wrap;
}
JE pensais que le flex layout faisait que la taille horizontale était définie par le plus long élément (le plus long pseudo donc). Mais visiblement pas !
Je ne dois pas avoir compris le concept.
J'ai le sentiment que c'est solvable avec display: grid; mais je ne pige pas comment, sans déclarer le nombre de lignes et de colonnes à l'avance avec leur taille.
Oui parce qu'à terme, il y aura sûrement plusieurs actions possibles: envoyer un message, inviter à une partie...
Si on peut afficher la liste en 2, 3 ou 4 colonnes quand il y en a beaucoup et qu'on a de la place horizontalement (et pas sur téléphone), ce serait du bonus, mais pas indispensable.
Merci pour votre aide !
Modifié par QuentinC (30 Jan 2024 - 22:59)