Avez-vous déjà créé un composant qui semble parfait dans votre contenu principal mais qui tombe en panne dans la barre latérale ? ?
Les requêtes multimédias ne résolvent que la moitié du problème : elles se soucient de la taille de l'écran, et non de l'endroit où se trouve réellement votre composant. C'est là qu'interviennent les requêtes de conteneur.
Disons que vous avez créé ce composant de carte :
@media (min-width: 768px) { .card { display: flex; gap: 2rem; } }
A fière allure sur mobile et sur ordinateur ! Jusqu'à ce que... votre coéquipier le mette dans une barre latérale étroite. Maintenant, votre disposition « bureau » essaie de se faufiler dans un espace de 300 px. Aïe.
Vous cherchez à renforcer vos compétences CSS ? Consultez « Techniques CSS modernes qui ont remplacé mon JavaScript » pour voir comment le CSS pur peut remplacer le code JavaScript complexe.
Au lieu de demander « quelle est la largeur de l'écran ? », les requêtes de conteneur demandent « quelle est la largeur de mon conteneur ? » Voici comment ils fonctionnent :
/* Step 1: Mark the container */ .card-wrapper { container-type: inline-size; } /* Step 2: Style based on container width */ @container (min-width: 400px) { .card { display: flex; gap: 2rem; } }
Désormais, votre carte s'adapte à son contenant, et non à l'écran. Placez-le n'importe où - ça marche !
Voici une fiche produit qui s'adapte à tous les espaces :
<div> <pre class="brush:php;toolbar:false">.product-wrapper { container-type: inline-size; } /* Mobile-first: Stack everything */ .product { display: grid; gap: 1rem; padding: 1rem; background: white; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); } /* Medium container: Side-by-side layout */ @container (min-width: 400px) { .product { grid-template-columns: 200px 1fr; } } /* Large container: More sophisticated layout */ @container (min-width: 600px) { .product .content { display: grid; grid-template-columns: 1fr auto; align-items: start; } .product .desc { grid-column: 1 / -1; } }
Bonne nouvelle ! Les requêtes de conteneur fonctionnent dans tous les navigateurs modernes. Pour les navigateurs plus anciens, votre mise en page mobile devient la solution de repli :
/* Default mobile layout */ .product { display: grid; } /* Enhance for modern browsers */ @supports (container-type: inline-size) { /* Container query styles */ }
Vous voulez connaître ces détails de l'interface utilisateur ? "12 micro-interactions frontales que les utilisateurs jugent secrètement" révèle les interactions subtiles qui donnent l'impression que les sites Web sont raffinés.
Déposez un commentaire si vous créez quelque chose de sympa avec Container Queries ! ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!