Inhaltsverzeichnis
Fall 1: Kartengitter
In einem anderen Projekt brauche ich auch eine andere Kartenkomponente. Dieses Mal brauche ich die Karte, um vom horizontalen Layout zum vertikalen Layout zu wechseln, wenn der Bildschirm kleiner wird ... und dann wieder zum horizontalen Layout und wieder zum vertikalen Layout zurückkehren.
Zusätzlicher Inhalt: andere Arten von Containergröße Abfrage
Heim Web-Frontend CSS-Tutorial Ein paar Mal Containergröße Anfragen hätten mir geholfen

Ein paar Mal Containergröße Anfragen hätten mir geholfen

Mar 09, 2025 am 11:57 AM

A Few Times Container Size Queries Would Have Helped Me Out

Die

CSS -Container -Abfrage -Technologie wird immer reifer, und viele Entwickler versuchen, sie auf verschiedene Projekte anzuwenden, auch wenn es sich nur um einfache Experimente handelt. Während die Browser -Unterstützung nicht völlig beliebt ist, ist es in einigen Projekten praktisch genug, aber möglicherweise nicht ausreicht, um Medienanfragen in älteren Projekten vollständig zu ersetzen.

Containerabfrage ist in der Tat sehr bequem! Tatsächlich war ich in ein paar Situationen und war sehr bestrebt, es zu verwenden, aber ich bin durch Browserkompatibilität begrenzt. Wenn zu diesem Zeitpunkt Containerabfrage verwendet werden kann, ist der Effekt besser.

Alle folgenden Demos werden zum Zeitpunkt des Schreibens am besten in Chrome oder Safari betrachtet. Firefox plant, Unterstützung in Version 109 zu bieten.

Fall 1: Kartengitter

Jeder sollte mit diesem Fall vertraut sein, oder? Dies ist ein sehr häufiges Muster, dem wir fast begegnen. Die Wahrheit ist jedoch, dass, wenn Containerabfragen anstelle von Standard -Medienabfragen verwendet werden können, viel Zeit sparen und bessere Ergebnisse erzielen.

Angenommen, Sie müssen ein Kartennetz erstellen, für das jede Karte ein Seitenverhältnis von 1: 1 beibehält:

Das ist schwieriger als es scheint! Das Problem ist, dass die Änderung von Komponenteninhalten basierend auf der Breite der Ansichtsfenster Sie ermöglicht, wie die Komponente auf das Ansichtsfenster reagiert und wie alle anderen Vorfahren auf das Ansichtsfenster reagieren. Wenn Sie beispielsweise die Schriftgröße des Kartentitels abnehmen möchten, wenn er eine bestimmte Inline -Größe erreicht, gibt es keinen zuverlässigen Weg, dies zu tun.

Sie können die Schriftgröße mit VW -Einheiten festlegen, aber die Komponente ist immer noch an die Ansichtsfensterbreite des Browsers gebunden. Dies kann Probleme verursachen, wenn das Kartennetz in anderen Kontexten verwendet wird, die möglicherweise nicht den gleichen Haltepunkt haben.

In meinem eigentlichen Projekt habe ich die JavaScript -Methode übernommen:

  1. Hören Sie sich die Größe der Größe an.
  2. Berechnen Sie die Breite jeder Karte.
  3. Inline -Schriftgröße entsprechend der Kartenbreite hinzufügen.
  4. Verwenden Sie EM -Einheiten, um den internen Stil festzulegen.

Es sieht nach viel Arbeit aus, oder? Dies ist jedoch eine stabile Lösung, um die gewünschte Skalierung in verschiedenen Bildschirmgrößen und in verschiedenen Kontexten zu erreichen.

Containerabfrage ist besser, da sie Container -Abfrageeinheiten wie CQW -Einheiten enthält. Wie Sie vielleicht erfahren haben, entspricht 1CQW 1% der Breite des Behälters. Wir haben auch CQI -Einheiten, das ein Maß für die Inline -Breite des Containers ist, und CQB wird für die Breite der Behälterblocks verwendet. Wenn wir also einen 500px breiten Kartenbehälter haben, wird der Wert von 50 cqw als 250px berechnet.

Wenn ich Containerabfrage in meinem Kartenraster verwenden kann, kann ich die .card -Komponente auf den Container einstellen:

<code>.card { 
  container: card / size;
}</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Ich kann dann einen internen Wrapper mit Polsterung unter Verwendung von CQW -Einheiten einrichten, die um 10% der Breite von .card:

skaliert werden
<code>.card__inner { 
  padding: 10cqw; 
} </code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dies ist eine gute Möglichkeit, den Abstand zwischen dem Kandidatenrand und ihrem Inhalt konsequent zu skalieren, unabhängig davon, wo die Karte in einer bestimmten Ansichtsfensterbreite verwendet wird. Es sind keine Medienanfragen erforderlich!

Eine andere Idee? Verwenden Sie CQW -Einheiten als Schriftgröße des internen Inhalts und wenden Sie dann die Füllung mit EM -Einheiten an:

<code>.card { 
  container: card / size;
}</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

5CQW ist ein willkürlicher Wert - ich habe gerade einen Wert ausgewählt. Die Polsterung entspricht immer noch 10 cqw, da die EM -Einheit relativ zur .card__inner -Schriftgröße ist!

Hast du es bemerkt? 2EM relativ zu der 5CQW -Schriftgröße auf demselben Container ! Der Container funktioniert anders als wir es gewohnt sind, da die EM -Einheit relativ zum Schriftgrößenwert desselben Elements ist. Ich bemerkte jedoch schnell, dass das Container -Abfragegerät mit dem jüngsten übergeordneten Elternteil (auch einem Container) von zusammenhängt. In diesem Beispiel skaliert 5cqw beispielsweise nicht basierend auf der Breite des

Elements:

.card

Stattdessen skaliert es auf das nächste als Container definierte übergeordnete übergeordnete übergeordnete. Deshalb habe ich eine
<code>.card__inner { 
  padding: 10cqw; 
} </code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
-Warkerin eingerichtet.

.card__inner Fall 2: Wechsellayout

In einem anderen Projekt brauche ich auch eine andere Kartenkomponente. Dieses Mal brauche ich die Karte, um vom horizontalen Layout zum vertikalen Layout zu wechseln, wenn der Bildschirm kleiner wird ... und dann wieder zum horizontalen Layout und wieder zum vertikalen Layout zurückkehren.

Ich habe diesen entmutigenden Job gemacht, damit die Komponente innerhalb von zwei spezifischen Ansichtsfenster -Bereichen ein Porträt wird (ein Gruß an die neue Medien -Abfragebereichsyntax!), Aber das Problem ist, dass sie dann auf die Medienabfrage, die für sie festgelegt ist, und alles andere, was auf die Ansichtsfenster reagiert wird, gesperrt wird. Wir brauchen etwas, das in jeder Situation funktioniert, ohne sich Sorgen darüber zu machen, wo der Inhalt unterbrochen wird!

Containerabfrage kann dieses Problem aufgrund der Verwendung der

-Regel:

leicht lösen: @container

<code>.card__inner { 
  font-size: 5cqw; 
  padding: 2em;
} </code>
Nach dem Login kopieren
Nach dem Login kopieren
Eine Abfrage, unendlich glatt:

Aber warte! Es gibt einige Probleme, die Sie sich möglicherweise bewusst sein müssen. Insbesondere kann es schwierig sein, solche Containerabfragen in prop-basierten Designsystemen zu verwenden. Beispielsweise kann diese

-Komponente untergeordnete Komponenten enthalten, die auf Prop stützen, um ihr Erscheinungsbild zu ändern. .info-card

Warum ist das wichtig? Das Porträtlayout der Karte erfordert möglicherweise alternative Stile, aber Sie können die JavaScript -Requisite mit CSS nicht ändern. Daher können Sie den gewünschten Stil wiederholen. Ich habe dies tatsächlich besprochen und wie ich dies in einem anderen Beitrag lösen kann. Wenn Sie Containerabfragen für eine große Anzahl von Stilen verwenden müssen, müssen Sie möglicherweise ein ganzes Designsystem um sie herum erstellen, anstatt zu versuchen, sie in ein vorhandenes Designsystem einzulegen, das sich auf Medienabfragen beruht.

Fall 3: SVG -Schlaganfall

Dies ist ein weiteres sehr häufiges Muster, das ich kürzlich verwendet habe. Angenommen, Sie haben ein Symbol, das mit dem Titel gesperrt ist:

<code>.card { 
  container: card / size; 
  container-name: card; 
  font-size: 5cqw; 
}</code>
Nach dem Login kopieren
Nach dem Login kopieren
Auch ohne Medienanfragen ist es einfach, das Symbol gemäß der Größe des Titels zu skalieren. Das Problem ist jedoch, dass das

von SVG in kleineren Größen zu dünn sein kann und in größeren Größen zu dick und zu auffällig sein kann. stroke-width

Ich musste für jede Symbolinstanz Klassen erstellen und anwenden, um seine Größe und die Schlaganfallbreite zu bestimmen. Dies ist in Ordnung, wenn sich das Symbol neben einem Titel befindet, der eine feste Schriftgröße verwendet, aber bei Verwendung eines sich ständig ändernden Flüssigkeitstyps nicht so gut ist.

Die Schriftgröße des Titels kann auf der Ansichtsfensterbreite basieren, sodass das SVG -Symbol entsprechend angepasst werden muss und in jeder Größe ordnungsgemäß funktioniert. Sie können die Schlaganfallbreite relativ zur Schriftgröße des Titels mithilfe von EM -Einheiten einstellen. Wenn Sie sich jedoch an eine bestimmte Reihe von Schlaganfallgrößen halten müssen, funktioniert diese Methode nicht, da sie linear skaliert werden - ohne Medienabfragen in der Ansichtsfensterbreite zu verwenden, können Sie sie nicht an einen bestimmten Wert der Schlaganfallbreite anpassen, ohne auf Medienfragen in der Ansichtsfenster -Breite zurückzugreifen.

Wenn ich jedoch die Möglichkeit habe, Containerabfrage zu verwenden, werde ich dies tun:

<code>.card { 
  container: card / size;
}</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Vergleichen Sie diese Implementierungen und sehen Sie, wie die Container -Abfrageversion den Schlaganfall des SVG auf die spezifische Breite erfasst, die ich möchte, basierend auf der Breite des Containers.

Zusätzlicher Inhalt: andere Arten von Containergröße Abfrage

Ok, ich habe dies im eigentlichen Projekt nicht tatsächlich begegnet. Als ich jedoch die Informationen über Containeranfragen genau angesehen habe, bemerkte ich, dass wir andere Inhalte von Containern, die sich auf die Größe des Containers oder die physische Größe beziehen, abfragen können.

Die Beispiele, die ich in diesem Beitrag verwendet habe, hauptsächlich Abfragebreite, maximale und minimale Breite, Höhe, Blockgröße und Inline -Größe.

<code>.card__inner { 
  padding: 10cqw; 
} </code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Aber MDN skizziert zwei weitere Dinge, die wir abfragen können. Eine ist die Richtung, die viel Sinn macht, weil wir sie in Medienfragen verwendet haben. Gleiches gilt für Containerfragen:

<code>.card__inner { 
  font-size: 5cqw; 
  padding: 2em;
} </code>
Nach dem Login kopieren
Nach dem Login kopieren

Das andere ist das Seitenverhältnis, ob Sie es glauben oder nicht:

<code>.card { 
  container: card / size; 
  container-name: card; 
  font-size: 5cqw; 
}</code>
Nach dem Login kopieren
Nach dem Login kopieren

Dies ist eine bearbeitbare Demonstration, die verwendet werden kann, um mit diesen beiden Beispielen zu experimentieren:

Ich habe für diese beiden noch keine guten Anwendungsfälle gefunden. Wenn Sie Ideen haben oder der Meinung sind, dass dies Ihnen bei Ihrem Projekt helfen kann, lassen Sie es mich bitte in den Kommentaren wissen!

Das obige ist der detaillierte Inhalt vonEin paar Mal Containergröße Anfragen hätten mir geholfen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1672
14
PHP-Tutorial
1276
29
C#-Tutorial
1256
24
Ein Vergleich statischer Formanbieter Ein Vergleich statischer Formanbieter Apr 16, 2025 am 11:20 AM

Versuchen wir, hier einen Begriff zu prägen: "Statischer Formanbieter". Sie bringen Ihre HTML

Ein Beweis für das Konzept, um Sass schneller zu machen Ein Beweis für das Konzept, um Sass schneller zu machen Apr 16, 2025 am 10:38 AM

Zu Beginn eines neuen Projekts erfolgt die SASS -Zusammenstellung im Blinzeln eines Auges. Dies fühlt sich gut an, besonders wenn es mit Browsersync kombiniert ist, das nachlädt

Wöchentliche Plattformnachrichten: HTML -Ladeattribut, die Haupt -ARIA -Spezifikationen und Wechsel von Iframe zu Shadow Dom Wöchentliche Plattformnachrichten: HTML -Ladeattribut, die Haupt -ARIA -Spezifikationen und Wechsel von Iframe zu Shadow Dom Apr 17, 2025 am 10:55 AM

In der Zusammenfassung der Plattformnachrichten in dieser Woche stellt Chrome ein neues Attribut für das Laden, Zugänglichkeitspezifikationen für Webentwickler und die BBC -Bewegungen ein

Einige praktisch mit dem HTML-Dialogelement Einige praktisch mit dem HTML-Dialogelement Apr 16, 2025 am 11:33 AM

Ich schaue mir das HTML -Element zum ersten Mal an. Ich habe es für eine Weile dessen bewusst, aber Haven &#039; Es wurde es noch nicht für einen Dreh genommen. Es hat einige ziemlich cool und

Papierform Papierform Apr 16, 2025 am 11:24 AM

Buy or Build ist eine klassische Technologiedebatte. Das Aufbau von Dingen selbst ist vielleicht billiger, weil Ihre Kreditkartenrechnung keine Werbebuchung gibt, aber

Wöchentliche Plattform News: Textabstand Lesezeichen, Top-Level-Erwartung, neuer Verstärker-Ladeindikator Wöchentliche Plattform News: Textabstand Lesezeichen, Top-Level-Erwartung, neuer Verstärker-Ladeindikator Apr 17, 2025 am 11:26 AM

In der Roundup in dieser Woche, einem praktischen Lesezeichen für die Inspektion von Typografie, unter Verwendung dessen, wie sich JavaScript -Module gegenseitig importieren, sowie Facebook &#039; s.

Wohin sollte 'Podcast' -Link abonnieren? Wohin sollte 'Podcast' -Link abonnieren? Apr 16, 2025 pm 12:04 PM

Für eine Weile war iTunes der große Hund im Podcasting. Wenn Sie also "Abonnieren Sie Podcast" verlinkt haben, um zu mögen:

Optionen zum Hosting Ihrer eigenen nicht-javaScript-basierten Analysen Optionen zum Hosting Ihrer eigenen nicht-javaScript-basierten Analysen Apr 15, 2025 am 11:09 AM

Es gibt eine Menge Analyseplattformen, mit denen Sie Besucher- und Nutzungsdaten auf Ihren Websites verfolgen können. Vielleicht vor allem Google Analytics, das weit verbreitet ist

See all articles