Maison > Questions et réponses > le corps du texte
P粉2949544472023-08-31 11:33:30
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 :
* { box-sizing: border-box; } body { margin: 0; } header { display: grid; grid-template-columns: auto 1fr; background-color: green; padding: 1rem; } img { width: 100%; background-color: pink; } div { background-color: red; } nav { background-color: yellow; grid-column: span 2; }
<header> <div style="background-color: blue"> <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> <div> <h1>Heading</h1> <p>Text Line 1</p> <p>Text Line 2</p> <p>Text Line 3</p> </div> <nav> <a href="#">Menu Item 1</a> <a href="#">Menu Item 2</a> <a href="#">Menu Item 3</a> <a href="#">Menu Item 4</a> <a href="#">Menu Item 5</a> <a href="#">Menu Item 6</a> </nav> </header>
Il reviendra lorsque vous essaierez width: 150%
:
* { box-sizing: border-box; } body { margin: 0; } header { display: grid; grid-template-columns: auto 1fr; background-color: green; padding: 1rem; } img { width: 150%; background-color: pink; } div { background-color: red; } nav { background-color: yellow; grid-column: span 2; }
<header> <div style="background-color: blue"> <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> <div> <h1>Heading</h1> <p>Text Line 1</p> <p>Text Line 2</p> <p>Text Line 3</p> </div> <nav> <a href="#">Menu Item 1</a> <a href="#">Menu Item 2</a> <a href="#">Menu Item 3</a> <a href="#">Menu Item 4</a> <a href="#">Menu Item 5</a> <a href="#">Menu Item 6</a> </nav> </header>
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 :