Impossible de créer une zone de grille réactive à l'aide de l'image SVG
P粉022140576
2023-08-30 19:15:16
<p>Lorsque j'essaie de créer une zone de grille réactive contenant une image svg, je rencontre un comportement étrange, tel que des largeurs de zone de grille arbitraires et une incapacité à faire agrandir ou réduire l'image jusqu'à un certain point sans s'arrêter. Le plus proche que j'ai obtenu était : </p>
<p>
<pre class="brush:css;toolbar:false;">* {
dimensionnement de la boîte : bordure-boîte ;
}
corps {
marge : 0 ;
}
entête {
affichage : grille ;
grille-modèle-colonnes : auto 1fr ;
couleur de fond : vert ;
rembourrage : 1rem ;
}
img {
largeur : 100 % ;
largeur maximale : 25vw ;
largeur min : 12 rem ;
couleur de fond : rose ;
}
div{
couleur de fond : rouge ;
alignement du texte : centre ;
}
navigation {
couleur de fond : jaune ;
colonne de grille : travée 2 ;
}</pré>
<pre class="brush:html;toolbar:false;"><header>
<img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 324 413.28'%3E%3Crect class='655de5e2- 44d3-4b5a-ae63-e6e7ec799246' x='18' y='18.12' width='288' height='324' fill='blue'/%3E%3C/svg%3E">
<div>
<h1>Titre</h1>
<p>Ligne de texte 1</p>
<p>Ligne de texte 2</p>
<p>Ligne de texte 3</p>
</div>
<nav>
<a href="#">Élément de menu 1</a>
<a href="#">Élément de menu 2</a>
<a href="#">Élément de menu 3</a>
<a href="#">Élément de menu 4</a>
<a href="#">Élément de menu 5</a>
<a href="#">Élément de menu 6</a>
</nav>
</en-tête></pre>
</p>
<p>J'ai essayé la hauteur, la hauteur minimale, la hauteur maximale et même l'utilisation de clips dans la largeur, sans grand succès. Peut-être que je manque simplement de compréhension, comme le suggèrent certaines réponses existantes, mais je ne sais pas comment y remédier. </p>
La largeur des colonnes d'images n'est pas arbitraire.
Le conteneur en grille présente d'abord la structure. . Ensuite, organise les articles.
Cela signifie que lorsque l'image atteint sa largeur naturelle (100 %), la première colonne sera redimensionnée.
Le navigateur ne revient pas en arrière et ne redimensionne pas la colonne lorsque les éléments sont rendus avec
宽度:50%
.La taille des colonnes n'est donc pas arbitraire ; c'est la largeur naturelle de l'image.
(Il s'agit sans doute d'un bug ou d'une limitation CSS.)
Veuillez noter que ce problème n'existe pas lorsque l'image est en pleine largeur :
Il reviendra lorsque vous essaierez
width: 150%
:Note latérale
En général, lorsque vous utilisez CSS Grid et Flexbox, ce n'est pas une bonne idée de créer des images en tant qu'enfants de conteneurs.
En d'autres termes, il est généralement préférable d'éviter d'utiliser des images comme grilles ou éléments flexibles.
Il y a trop de bugs et de différences de rendu entre les différents navigateurs.
Dans de nombreux cas, il suffit de placer l'image
div
中(使div
dans un élément de la grille) fera l'affaire.Évitez les images sous forme de grille ou d'éléments flexibles :