J'ai une grille qui dessine des carrés dans les cellules. Il a le nombre de lignes et de colonnes, puis dessine les cellules de la grille et vérifie s'il doit y avoir un carré dans chaque cellule (selon le tableau) et dessine un carré si nécessaire. Le résultat final HTML ressemble à ceci : (en supposant que j'ai 1 ligne et 3 colonnes, seules 2 cellules devraient avoir des carrés)
.row { display: flex; flex-wrap: wrap; flex: 10000 1 0%; } .column { display: flex; flex-wrap: wrap; max-width: 100px; min-width: 10px; padding: 4px; border: 1px solid grey; } .square { background-color: red; width: 100%; aspect-ratio: 1/1; border-radius: 5px; }
<div class="row"> <div class="column"> <div class="square"></div> </div> <div class="column"> <div class="square"></div> </div> <div class="column"></div> </div>
Les lignes occupent toute la largeur de l'écran et les tailles des colonnes doivent être les mêmes entre toutes les colonnes et changer en fonction du nombre de colonnes à l'écran (par exemple, si j'ai 5 colonnes, elles doivent toutes avoir une largeur de 100). pixels mais si j'ai 1000 colonnes, elles devraient toutes avoir une largeur de 10 pixels).
Mon problème est que le remplissage et le rayon de bordure semblent bizarres après un certain point d'arrêt dans la taille de la colonne et je souhaite modifier leurs valeurs lorsque j'atteins ce point d'arrêt. Je ne peux pas utiliser les requêtes @container car elles ne sont toujours pas entièrement prises en charge.
Si cela peut aider, j'utilise vue 2. Mais je pense qu'une solution CSS serait meilleure dans ce cas.
Essayez de résoudre le problème décrit :
J'ai fait une petite démo pour m'aider à mieux explorer ce qu'il faut pour réaliser ce scénario.
Obtenir la bordure : réduire l'équivalent sur l'élément flexbox
.row
元素仍然是一个 Flexbox 容器,但它的 Flex 项目没有设置border
,而是使用outline
Paramètres de style.Le contour ne prend pas de place et "s'effondrera" en cas de collision avec le contour généré par un autre élément.
Ainsi, pour garantir que la mise en page n'est pas affectée par des bizarreries de style, lorsque vous essayez d'afficher les bordures d'un élément Flex, cette démo s'appuie sur seulement 2 aspects clés pour restituer ces bordures :
间隙
轮廓
taille pour couvrir l'espace laissé entre ÉlémentUtilisez ::after pour ajouter du contenu aux éléments
De plus, le point rouge est appliqué avec un pseudo-élément
position:absolute
的::after
, garantissant encore une fois que rien n'affecte la disposition de la grille :Tableau de bord - Explorer les options
A partir de là, j'ai ajouté un "tableau de bord" avec
position:fixed
qui reste en haut de la page et permet de contrôler :display: none;
不会更改网格布局它完全取决于通过自定义变量--col-width
设置的.column
taille de l'élémentConclusion jusqu'à présent :
Bien que nous nous efforcions de minimiser les distractions et de prendre toutes les mesures nécessaires pour configurer correctement la disposition de la grille en fonction uniquement de la taille fixe des cellules, il reste encore quelques problèmes de rendu et parfois de taille de bordure de certaines lignes. un schéma de disparités se produit. Je dois dire que je n'ai des problèmes qu'avec les écrans d'ordinateurs portables, pas avec les moniteurs de bureau , c'est donc un autre facteur.
J'ai essayé différents paramètres et calculé les chiffres dans la démo, en tenant également compte des lacunes. Une disposition efficace et sûre peut minimiser les problèmes potentiels (par exemple, elle peut également augmenter la taille des bordures).
Je ne pouvais pas aller plus loin avec la mise en page Flex.