Heim > Web-Frontend > CSS-Tutorial > Alvaro Montoro präsentiert: Spaß mit Flaggen… mit CSS

Alvaro Montoro präsentiert: Spaß mit Flaggen… mit CSS

Susan Sarandon
Freigeben: 2024-11-25 11:52:11
Original
279 Leute haben es durchsucht

In diesem Artikel werden wir CSS-Verläufe untersuchen, indem wir verschiedene Flags erstellen und dabei jeweils ein einzelnes HTML-Element verwenden. Im Rahmen der Erfahrung werden wir auch die Pseudoelemente ::before und ::after sowie die Clip-Path-Eigenschaft überprüfen.

Wir werden einfache Flaggen codieren und die Codierung der Wappen vermeiden, da diese in CSS schwierig wären. Es wäre nicht unmöglich, aber es ist auch keine lohnenswerte Aufgabe. Verwenden Sie dazu SVG.

Ich habe die Wikipedia-Seite für die verschiedenen Flaggen verwendet, um Abmessungen, Größen, Positionen und Farben zu erhalten. Ich entschuldige mich im Voraus, falls darin Fehler enthalten sind.

Die Bühne bereiten

Beginnen wir mit dem Hinzufügen des HTML-Codes unserer Flaggen und einiger allgemeiner Stile:

<div>





<pre class="brush:php;toolbar:false">.flag {
  display: inline-grid;
  height: 1em;
  vertical-align: top;
  position: relative;
  overflow: hidden;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Hier ist eine kurze Erklärung, was sie tun:

  • display: inline-grid: Dies wird das Element (fast) wie ein Bild behandeln und es im Einklang mit dem Text anzeigen. Die Verwendung von Inline-Flex oder Inline-Grid bietet leistungsfähigere Ausrichtungsmöglichkeiten.
  • Höhe: 1em: Verschiedene Flaggen haben unterschiedliche Größen. Durch Festlegen einer festen Höhe können wir die Eigenschaft „aspect-ratio“ hinzufügen, um die entsprechende Breite zu generieren, während alle Flags eine einheitliche Höhe beibehalten.
  • position: relative: Wenn wir Pseudoelemente benötigen, benötigen sie wahrscheinlich eine absolute Position, und wir möchten unsere Flagge zum Bezugspunkt für diese absolute Positionierung machen.
  • Überlauf: ausgeblendet: Wenn die Pseudoelemente aus irgendeinem Grund den Container überlaufen, möchten wir den Überlauf ausblenden.
  • Vertical-align: top: Wenn Sie die Flaggen in einer Linie mit dem Text platzieren, sehen sie schöner aus, da ihre Ausrichtung „natürlicher“ ist.

Einige davon sind überdimensioniert – ja, Sie können CSS überkonstruieren –, weil die meisten Flags sie nicht benötigen. Vor allem diejenigen, die wir in diesem Artikel codieren werden … aber irgendwann werden Sie einige finden, die die Eigenschaften erfordern, und warum nicht sie direkt in der Klasse haben, anstatt sie mehrmals einzeln hinzufügen zu müssen?


Lineare Farbverläufe

Ein linearer Farbverlauf erzeugt einen progressiven Farbübergang in eine einzige Richtung (entlang einer Linie, daher der Name). Standardmäßig ist die Richtung vertikal von oben nach unten, was das Erstellen von Flaggen vereinfacht.

Polen

Beginnen wir mit der polnischen Flagge. Es hat zwei Farben, die die gleiche Höhe einnehmen: die Oberseite ist weiß und die Unterseite ist rot. Dies ist einer der einfachsten Farbverläufe, die Sie finden werden.

.flag.poland {
  background: linear-gradient(white 50%, red 50%);
  aspect-ratio: 8 / 5;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dieser Farbverlauf legt Weiß als Farbe von oben fest, bis er 50 % (die Hälfte der Flagge) erreicht, und wechselt dann zu Rot, was ebenfalls bei 50 % beginnt.

Wir haben auch ein Seitenverhältnis hinzugefügt: 8 / 5; denn das ist das offizielle Verhältnis für die Flagge Polens (5:8). Sie können diese Eigenschaft in den folgenden Beispielen gerne ignorieren, aber denken Sie daran, sie hinzuzufügen, sonst hat die Flagge keine Breite und ist unsichtbar!

Alvaro Montoro Presents: Fun with Flags… with CSS


Deutschland

CSS-Verläufe sind nicht auf zwei Farben beschränkt, sie können so viele haben, wie Sie möchten – beachten Sie jedoch, dass einige Browser den Verlauf möglicherweise nicht richtig anzeigen, wenn zu viele Farben vorhanden sind.

Ein Beispiel hierfür wäre die Deutschlandflagge, bei der wir von oben nach unten drei Farben haben:

<div>





<pre class="brush:php;toolbar:false">.flag {
  display: inline-grid;
  height: 1em;
  vertical-align: top;
  position: relative;
  overflow: hidden;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wir haben die Notation dieses Beispiels absichtlich mehrzeilig und besonders lang gemacht. Beachten Sie, wie wir nach dem Wert zwei Werte hinzugefügt haben. Sie sind jeweils der Anfangs- und Endanschlag für jede Farbe. Im obigen Beispiel beginnt Schwarz von oben (0 %) und reicht bis zu einem Drittel der Flagge (33,33 %), Rot beginnt direkt danach (33,33 %) und reicht bis zu zwei Dritteln der Flagge (66,66 %). ), und schließlich beginnt Gelb direkt nach 66,66 % und reicht bis zum unteren Rand der Flagge (100 %). Im Falle einer Flagge stimmen die End- und folgenden Startwerte überein, wenn dies nicht der Fall ist, ändert der Browser die Farben schrittweise.

Angesichts der Tatsache, dass die erste Farbe standardmäßig bei 0 beginnt und die letzte bei 100 % endet, können wir diese Werte aus dem linearen Farbverlauf eliminieren. Außerdem führt jeder Startwert, der niedriger als der vorherige Endwert ist, zu einem scharfen Stopp zwischen den Farben. Wir wollen das für unsere Flags und wollen nicht zu viel tippen, also können wir einfach den niedrigstmöglichen Wert für den Startwert eingeben: 0 % oder einfach 0. Auf diese Weise würde das obige CSS auf etwas reduziert, das etwas ergibt ein ähnliches Ergebnis, aber das ist deutlich kürzer:

.flag.poland {
  background: linear-gradient(white 50%, red 50%);
  aspect-ratio: 8 / 5;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Alvaro Montoro Presents: Fun with Flags… with CSS


Belgien

Es wäre langweilig – und nutzlos –, wenn wir nur vertikale lineare Farbverläufe erzeugen könnten. Es gibt Möglichkeiten, die Richtung zu ändern, in der der Farbverlauf gezeichnet wird. Schauen wir uns ein paar davon an:

  • Richtung mit Schlüsselwörtern angeben: Sollen die Farben von rechts nach links verlaufen? Geben Sie es mit den Schlüsselwörtern links vor der Farbliste an. Von unten nach oben? nach oben. Diagonal von links unten nach rechts oben? Mit nach oben rechts. Es ist wirklich so einfach!
  • Angabe des Aktionswinkels: könnte knifflig sein, bietet aber mehr Möglichkeiten als die vorherige Option. Sie können jede Richtung auswählen, indem Sie den Aktionswinkel angeben, anstatt sich auf acht zu beschränken. In diesem Fall verläuft 0 Grad von unten nach oben, 90 Grad von links nach rechts, 180 Grad von oben nach unten und 270 Grad (oder -90 Grad) von rechts nach links.

Nehmen wir als Beispiel die belgische Flagge. Die Farben sind nicht vertikal, sondern horizontal gestapelt: Schwarz, Gelb und Rot jeweils von links nach rechts. Wir können dies auf mindestens zwei verschiedene Arten erreichen:

<div>





<pre class="brush:php;toolbar:false">.flag {
  display: inline-grid;
  height: 1em;
  vertical-align: top;
  position: relative;
  overflow: hidden;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Alvaro Montoro Presents: Fun with Flags… with CSS


Radiale Farbverläufe

Ein radialer Farbverlauf erzeugt einen progressiven Farbübergang von einem Ursprungspunkt in alle Richtungen und erzeugt einen radialen Effekt, der wie eine Farbellipse aussieht (oder wie ein Kreis, wenn die Seiten gleich sind). Standardmäßig ist dieser Punkt der absolute Mittelpunkt des Elements – horizontal und vertikal.

Ein paar wichtige Dinge, die Sie beachten sollten:

  • Es erzeugt eine Ellipse, keinen Kreis. Wenn der Behälter rechteckig ist, sieht er wie eine Ellipse aus. Wenn der Behälter quadratisch ist, sieht er wie ein Kreis aus. Es gibt Schlüsselwörter (Kreis), um sicherzustellen, dass die resultierende Form kreisförmig und keine Ellipse ist.
  • Die Größe der Ellipse variiert je nach Behälter und seiner Position (mehr dazu in Kürze). 0 % ist der Ursprungspunkt und 100 % ist die am weitesten entfernte Ecke dieses Ursprungs. Wir können Schlüsselwörter (nächste Seite, am weitesten entfernte Seite, nächstgelegene Ecke usw.) verwenden, um dies zu ändern.

Mit diesen ersten Gedanken (und Schlüsselwörtern) im Hinterkopf erstellen wir einige Flaggen!

Japan

Die Flagge Japans ist ein großer roter Kreis in der Mitte einer weißen Flagge. Dies ist einer der einfachsten radialen Farbverläufe, die wir finden können, und wir können das zuvor besprochene Schlüsselwort „circle“ verwenden, da die Flagge rechteckig ist. Wenn wir es nicht verwenden, erhalten wir stattdessen eine Ellipse.

.flag.poland {
  background: linear-gradient(white 50%, red 50%);
  aspect-ratio: 8 / 5;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wir haben das Schlüsselwort „Größe der nächsten Seite“ mit dem Schlüsselwort „Kreisform“ kombiniert, um einen Kreis zu generieren, der 60 % der Höhe hat (da die Ober- und Unterseite näher beieinander liegen als die linke und rechte).

Alvaro Montoro Presents: Fun with Flags… with CSS


Bangladesch

Wenn wir nur Kreise und Ellipsen vom Mittelpunkt des Elements aus erstellen könnten, könnten wir einige Flaggen mit CSS replizieren (z. B. Laos oder Burundi). Dennoch konnten wir keine anderen mit außermittigen Kreisen entwickeln (z. B. Costa Rica oder Äthiopien).

Mit der radial-gradient()-Methode können wir den Ursprungspunkt des Gradienten angeben. Wir tun dies, indem wir at posX posY nach den Schlüsselwörtern size und shape (falls vorhanden) verwenden. Versuchen wir, damit die Flagge Bangladeschs zu erstellen:

<div>





<pre class="brush:php;toolbar:false">.flag {
  display: inline-grid;
  height: 1em;
  vertical-align: top;
  position: relative;
  overflow: hidden;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Was passiert, wenn wir beginnen, die Mitte des Farbverlaufs zu verschieben? Der Abstand zur hintersten Ecke ändert sich! Das führt zu trigonometrischen Berechnungen, um die Größe entsprechend anzupassen … oder stattdessen könnten wir einen anderen Bezugspunkt identifizieren, der nicht die am weitesten entfernte Ecke ist (wie in diesem Fall die nächstgelegene Seite).

Um dies zu vermeiden, können wir eine absolute Größe für Breite und Höhe angeben. Wenn wir das tun, können wir nicht erkennen, ob es sich um einen Kreis oder eine Ellipse handelt, da diese absoluten Werte die Form bestimmen.

Alvaro Montoro Presents: Fun with Flags… with CSS


Konische Farbverläufe

Ein konischer Farbverlauf erzeugt einen progressiven Farbübergang von einem Ursprungspunkt, der im Uhrzeigersinn um ihn herum rotiert. Es mag komplex klingen, sich das so vorzustellen, deshalb verwende ich lieber ein Beispiel, wenn ich es den Leuten erkläre: Stellen Sie sich einen regelmäßigen linearen Farbverlauf vor, der auf Papier gedruckt ist (so weit, so gut); Jetzt nimmst du das Papier, faltest eine Seite um und rollst es zu einem Kegel (daher der Name!). Die resultierende Figur sieht von oben wie ein konischer Farbverlauf aus. Ich hoffe, das war hilfreich.

Wie bei den radialen Farbverläufen ist der Standardursprungspunkt eines konischen Farbverlaufs der absolute Mittelpunkt des Elements. Ebenso wie die radialen Verläufe können wir diesen Punkt ändern, indem wir at posX posY.

verwenden

Benin

Dies ist eine ziemlich einfach zu erstellende Flagge mit einem konischen Farbverlauf. Zuerst müssen wir die Mitte auf 40 % horizontal und 50 % vertikal positionieren und dann die Haltepunkte angeben.

.flag.poland {
  background: linear-gradient(white 50%, red 50%);
  aspect-ratio: 8 / 5;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wie gesagt, ein Kinderspiel! Da es nicht viel dahinter steckt, ist hier eine Tatsache, die Sie vielleicht nicht über die Flagge Benins wissen: Gelb steht für die Schätze der Nation, Rot steht für den Mut ihrer Vorfahren und Grün steht für die Hoffnungen der Demokratie.

Alvaro Montoro Presents: Fun with Flags… with CSS


Tschechische Republik

Auf dieser Grundlage sehen wir uns eine Möglichkeit an, die Flagge der Tschechischen Republik zu zeichnen:

.flag.germany {
  aspect-ratio: 5 / 3;
  background: linear-gradient(
    #000  0.00%  33.33%,
    #f00 33.33%  66.66%,
    #fc0 66.66% 100.00%
  );
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Das funktioniert ganz gut, aber beachten Sie, dass wir #fff zweimal verwenden. Wäre es nicht schön, wenn wir es nur einmal verwenden könnten? Wie Sie vielleicht schon erraten haben, lautet die Antwort: Wir können es! Ein Farbverlauf muss nicht unbedingt bei 0 Grad beginnen. Mit from [angle] können wir eine Startposition angeben.

Nehmen wir zum Beispiel an, wir möchten mit der roten Farbe beginnen:

<div>





<pre class="brush:php;toolbar:false">.flag {
  display: inline-grid;
  height: 1em;
  vertical-align: top;
  position: relative;
  overflow: hidden;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Der Winkel kann ein positiver oder negativer Wert sein, dann würden wir den Startpunkt im oder gegen den Uhrzeigersinn verschieben.

Alvaro Montoro Presents: Fun with Flags… with CSS


Farbverläufe kombinieren

Wir haben gelernt, wie man lineare, radiale und konische Farbverläufe verwendet, um relativ einfache Flaggen zu erzeugen … aber manchmal können Flaggen kompliziert werden und ein einzelner Farbverlauf reicht nicht aus. Was können wir in diesem Fall tun?

CSS erlaubt mehrere Hintergrundbilder (und Verläufe) in einem Element. Wir müssen ihre Werte durch ein Komma trennen. Auch wenn dies möglicherweise nicht intuitiv ist, ist es wichtig, sich daran zu erinnern, dass die oberen Hintergründe die unteren überlappen und verdecken.

Schweden

Die Flagge Schwedens ist ein gelbes Kreuz auf blauem Hintergrund. Wir können jeden gelben Balken mit einem linearen Farbverlauf transparent-gelb-transparent erzeugen:

.flag.poland {
  background: linear-gradient(white 50%, red 50%);
  aspect-ratio: 8 / 5;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dieses Beispiel hat mehr, als man auf den ersten Blick sieht: 

  • Es zeigt, wie man mehr als einen Farbverlauf kombiniert –durch Kommas trennt.
  • Es fügt eine Hintergrundfarbe hinzu. Beachten Sie, dass die Farbe in der Liste der Hintergründe immer an letzter Stelle steht. Wenn Sie es an einer anderen Stelle in der Liste platzieren, ist es ungültig und zeigt keinen Hintergrund an.
  • Es werden absolute Einheiten verwendet. Bisher haben wir Prozentsätze für die Steigungen verwendet, aber es gibt keinen Grund, bei Bedarf keine anderen Einheiten zu verwenden.

Alvaro Montoro Presents: Fun with Flags… with CSS


Bahamas

Während die vorherige Flagge mehrere Farbverläufe in Aktion zeigte, war es aufgrund der Verwendung von Transparenzen nicht besonders gut, deren Stapelung zu zeigen. Sehen wir uns also ein weiteres Beispiel an – eines, das mehrere Farbverläufe unterschiedlicher Art verwendet.

.flag.germany {
  aspect-ratio: 5 / 3;
  background: linear-gradient(
    #000  0.00%  33.33%,
    #f00 33.33%  66.66%,
    #fc0 66.66% 100.00%
  );
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Beim Kombinieren von Hintergründen sind Sie nicht auf nur einen Verlaufstyp beschränkt. Sie können jede Art verwenden.

Alvaro Montoro Presents: Fun with Flags… with CSS


Ändern von Größen und Positionen

Bisher haben wir lineare, radiale und konische Farbverläufe gesehen und wie sie kombiniert werden können. Aber in allen Fällen nahm das Gefälle die gesamte Flagge ein. Bei einigen Transparenzen sieht es vielleicht nicht so aus, aber die Größe der Farbverläufe entsprach immer 100 % der Breite und Höhe.

Aber es gibt Möglichkeiten, die Größe des Farbverlaufs zu ändern, um ihn besser an unsere Bedürfnisse anzupassen. Am einfachsten ist es, eine Hintergrundgröße anzugeben. Wenn die Größe kleiner als der Container ist, wird der Hintergrund wiederholt (es sei denn, wir verwenden etwas wie „background-repeat: none“)

Katar

Sehen wir uns ein Beispiel mit der Flagge von Katar an. Die Flagge wiederholt ein Muster neunmal und lässt sich leicht mit einem konischen Farbverlauf nachbilden. Wenn wir angeben, dass die Breite des Farbverlaufs 100 % der Flagge und seine Höhe ein Neuntel der Flaggenhöhe betragen soll, wiederholt der Browser den Hintergrund, bis der Container gefüllt ist, und vervollständigt die Zeichnung für uns.

<div>





<pre class="brush:php;toolbar:false">.flag {
  display: inline-grid;
  height: 1em;
  vertical-align: top;
  position: relative;
  overflow: hidden;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Alvaro Montoro Presents: Fun with Flags… with CSS


Schweden... schon wieder!

Sobald wir eine Größe angegeben haben, können wir natürlich auch die Position angeben, an der sich der Farbverlauf befinden soll. Das würden wir mit „background-position“ machen (und hier kommt die Eigenschaft „background-repeat“ zum Einsatz).

.flag.poland {
  background: linear-gradient(white 50%, red 50%);
  aspect-ratio: 8 / 5;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Beachten Sie, dass wir für die letzte Farbe keine Größe und Position angeben müssen. Sie können nur einen festlegen, der automatisch den gesamten Container belegt.

Wir können die Werte der Hintergrundbilder, Größen und Positionen durch Kommas trennen. Das ist praktisch, wenn es nur wenige von ihnen gibt, aber wenn wir mehrere Hintergründe haben, kann es sehr nervig sein. Es ist leicht, sich zu verirren und Werte zu vermischen.

Stattdessen können wir die Kurzform der Hintergrundeigenschaft verwenden, um alle Werte auf einmal bereitzustellen: Hintergrund: Verlaufsposition/-größenwiederholung, wie unten gezeigt:

.flag.germany {
  aspect-ratio: 5 / 3;
  background: linear-gradient(
    #000  0.00%  33.33%,
    #f00 33.33%  66.66%,
    #fc0 66.66% 100.00%
  );
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Alvaro Montoro Presents: Fun with Flags… with CSS


Wiederholte Farbverläufe

Wir haben lineare, radiale und konische Farbverläufe gesehen, aber jede Variation ermöglicht es uns, „Farbmuster“ hinzuzufügen. Flaggen eignen sich hierfür perfekt: Viele bestehen aus sich wiederholenden horizontalen Linien.

Ich spreche von den sich wiederholenden Farbverläufen. Sie verhalten sich genauso wie die regulären Farbverläufe und wiederholen das angegebene Muster, bis es 100 % oder 360 Grad erreicht. Es gibt drei sich wiederholende Farbverläufe:

  • repeating-linear-gradient
  • repeating-radial-gradient
  • repeating-conic-gradient

Griechenland

Nehmen wir als Beispiel die griechische Flagge. Wir könnten 3 oder 4 große lineare Farbverläufe haben, um dies zu erreichen, oder wir können drei sich wiederholende lineare Farbverläufe verwenden:

  • Ein sich wiederholender linearer Farbverlauf, um den vertikalen Teil des Kreuzes zu erzeugen (mit Transparent und Weiß)
  • Ein zweiter sich wiederholender linearer Farbverlauf, um den horizontalen Teil des Kreuzes zu erzeugen (mit Blau und Weiß)
  • Ein letzter sich wiederholender linearer Farbverlauf, um die neun Balken dahinter zu zeichnen.

Um das Kreuz oben links zu erreichen, müssen wir sowohl Position als auch Größe für die ersten beiden linearen Farbverläufe definieren.

.flag.germany {
  aspect-ratio: 5 / 3;
  background: linear-gradient(#000 33.33%, #f00 0 66.66%, #fc0 0);
}
Nach dem Login kopieren

Alvaro Montoro Presents: Fun with Flags… with CSS


Uganda

Die Flagge Ugandas hat einen wunderschönen Graukronenkranich, den wir aus praktischen Gründen nicht in CSS codieren. Wir konzentrieren uns auf die anderen beiden Flaggenteile: einen weißen Kreis in der Mitte und mehrere horizontale Linien in Schwarz, Gelb und Rot.

Diese Zusammensetzung kann auf zwei verschiedene Arten erreicht werden:

  • Verwendung eines sich wiederholenden linearen Farbverlaufs, der die gesamte Höhe der Flagge einnimmt; oder
  • Bei einem einzelnen linearen Farbverlauf, der nur die Hälfte der Flagge einnimmt, wiederholt der Browser ihn automatisch, um den verbleibenden Platz auszufüllen.

Die erste Option wäre so:

<div>





<pre class="brush:php;toolbar:false">.flag {
  display: inline-grid;
  height: 1em;
  vertical-align: top;
  position: relative;
  overflow: hidden;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Die zweite Option würde so aussehen:

.flag.poland {
  background: linear-gradient(white 50%, red 50%);
  aspect-ratio: 8 / 5;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Aber am Ende sehen beide Optionen gleich aus. Es ist wichtig, sich daran zu erinnern, dass es in CSS, wie in jedem anderen Programmierstil, normalerweise mehr als einen Weg gibt, unsere Ziele zu erreichen.

Alvaro Montoro Presents: Fun with Flags… with CSS


Verwendung von Pseudoelementen

Der Begriff „Einzelelement-Flags“ kann irreführend sein. Alle nicht leeren HTML-Elemente enthalten mindestens zwei Pseudoelemente, die wir auch zum Zeichnen verwenden können: ::before und ::after. Wir haben also wirklich drei Elemente, die separat gestylt werden können und viele Möglichkeiten bieten:

  • Zeichnungen, die eine gewisse Drehung erfordern. Eine Einschränkung bei der Verwendung von Hintergründen in CSS besteht darin, dass sie nicht gedreht werden können.
  • Komplexe Formen, die von der Leistungsfähigkeit der Verwendung von Randradius, Clippfad, Maske usw. profitieren könnten.
  • Damit Designs sauberer aussehen: Die Kanten eines beschnittenen Pfads sind glatter als die eines Farbverlaufs.

Bahrain

Wenn Sie die Flagge Katars wie oben beschrieben mit Farbverläufen codiert haben, ist Ihnen möglicherweise aufgefallen, dass die dreieckigen Kanten des Farbverlaufs auf einigen Monitoren zu scharf und hässlich aussehen. Es gibt viele Möglichkeiten, dieses Problem zu lösen, aber eine Lösung, die mir gefällt, ist die Verwendung eines Pseudoelements mit Clip-Pfad, um glattere und klarere Linien zu erzeugen.

Diese Option vereinfacht den Code im Vergleich zur Verwendung mehrerer linearer Farbverläufe und dem Pixeldifferenz-Trick, der im folgenden Abschnitt erläutert wird.

.flag.germany {
  aspect-ratio: 5 / 3;
  background: linear-gradient(
    #000  0.00%  33.33%,
    #f00 33.33%  66.66%,
    #fc0 66.66% 100.00%
  );
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Alvaro Montoro Presents: Fun with Flags… with CSS

Die Pseudoelemente müssen in diesem Fall nicht auf komplexe Muster beschränkt sein. Nehmen Sie zum Beispiel die Flaggen von Kuba, den Bahamas oder Jordanien. Sie haben auf der linken Seite Dreiecke, die wir mit konischen Farbverläufen gezeichnet haben. Bei diesen Verläufen gibt es ein Problem: Die Kanten sehen auf bestimmten Monitoren zu hart oder pixelig aus – im folgenden Abschnitt finden Sie einen Trick, um dieses Problem mit linearen Verläufen zu lösen. Stattdessen könnten wir das Dreieck mit einem Pseudoelement (einem Dreipunkt-Polygonpfad) erstellen und die Kanten würden glatter aussehen. Ähnlich der Flagge von Bahrain oben.


Panama

Ich habe die ungefähren Punkte der Scheitelpunkte für einen fünfzackigen Stern erhalten und sie mithilfe von Clip-Pfad in den Pseudoelementen ::before und ::after angewendet. Viele CSS-Künstler ziehen den Einsatz von Clip-Path-Cheat in Betracht, und der Stern kann mit konischen Farbverläufen gezeichnet werden. Aber der Einfachheit halber belasse ich es als Clip-Pfad.

Durch das Hinzufügen eines konischen Farbverlaufs als Flaggenhintergrund und der Sterne in den Pseudoelementen können wir im Handumdrehen die Flagge Panamas zeichnen:

<div>





<pre class="brush:php;toolbar:false">.flag {
  display: inline-grid;
  height: 1em;
  vertical-align: top;
  position: relative;
  overflow: hidden;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Alvaro Montoro Presents: Fun with Flags… with CSS


Erinnerungen und Tipps

Farbverläufe stapeln

Denken Sie daran, dass beim Kombinieren von Hintergründen diese in der Reihenfolge gestapelt werden, in der sie aufgelistet sind. Das heißt, der erste wird oben platziert und überlappt die darunter und danach.

Während es aus gestalterischer Sicht sinnvoll ist, kann es aus CSS-Sicht kontraintuitiv sein, da die Kaskade dafür sorgt, dass das letzte Auftreten einer Eigenschaft oder Klasse Vorrang vor den zuvor definierten hat.

Der 1px-Differenz-Trick

In dem Artikel habe ich erwähnt, dass die Verlaufskanten möglicherweise zu scharf oder pixelig aussehen. Dies geschieht aufgrund der Art und Weise, wie der Browser die Verläufe rendert – und es ist ärgerlich, insbesondere weil dies bei Hard-Stop-Kanten in SVG nicht der Fall ist.

Zum Beispiel sieht die Zeile hier möglicherweise nicht auf allen Monitoren gut aus:

.flag.poland {
  background: linear-gradient(white 50%, red 50%);
  aspect-ratio: 8 / 5;
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Ein Trick, um dies zu vermeiden, besteht darin, einen Pixelunterschied zwischen dem Endpunkt und dem nächsten Anfangspunkt hinzuzufügen. Entweder durch Subtrahieren bzw. Addieren von 0,5 Pixel von jedem von ihnen oder, einfacher, einfach durch Subtrahieren/Addieren von 1 Pixel von einem von ihnen. Diese Linie wird auf allen Monitoren glatt aussehen:

.flag.germany {
  aspect-ratio: 5 / 3;
  background: linear-gradient(
    #000  0.00%  33.33%,
    #f00 33.33%  66.66%,
    #fc0 66.66% 100.00%
  );
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Vergessen Sie nicht die 0 in sich wiederholenden Verläufen

Ein häufiger Fehler beim Arbeiten mit sich wiederholenden Farbverläufen besteht darin, keinen Startpunkt für die erste Farbe hinzuzufügen. Dadurch sieht der Farbverlauf unkonventionell aus. Wenn Ihre sich wiederholenden Farbverläufe nicht wie erwartet funktionieren, überprüfen Sie immer, ob Sie dort eine 0 (oder einen anderen Wert) hinzugefügt haben!

Haben Sie keine Angst vor Pseudoelementen

Pseudoelemente können auf den ersten Blick einschüchternd wirken, aber sie unterscheiden sich nicht mehr von anderen Elementen, sie werden lediglich mit ihnen an das HTML-Element angehängt.

Vergessen Sie nicht, die Inhaltseigenschaft mit einem Wert hinzuzufügen (eine leere Zeichenfolge ist üblich, wenn sie nur angezeigt werden soll). Andernfalls sind die Pseudoelemente nicht sichtbar!

Clip-Path ist Ihr Freund

Beim Zeichnen in CSS und beim Erstellen von CSS-Grafiken behaupten viele Leute, dass die Verwendung der Clip-Path-Eigenschaft Betrug sei. Es erleichtert die Arbeit und ist ein nützliches Werkzeug in Ihrem Gürtel. Ich würde es nicht wegwerfen, nur weil es „Betrug“ ist.

Lernen Sie, wie Sie den Clip-Pfad – und die Maske – verwenden. Dies wird sich irgendwann in einem Projekt als nützlich erweisen.

Abschluss

Jetzt ist es an der Zeit, CSS-Verläufe zu üben. Bitte probieren Sie es aus und versuchen Sie, einige Flaggen selbst nachzubilden. Hier ist eine Liste von Ländern mit guten Flaggen zum Üben (sortiert nach Komplexität):

  • Monaco
  • Jemen
  • Vereinigte Arabische Emirate
  • Laos
  • Island
  • Dominikanische Republik (ohne Wappen)
  • St. Lucia

Und denken Sie daran: Es gibt keine eindeutige Möglichkeit, eine Flagge zu codieren. Jeder von ihnen kann auf viele verschiedene Arten durchgeführt werden. Verwenden Sie die Farbverläufe, mit denen Sie vertrauter sind oder von denen Sie wissen, dass sie am besten aussehen.

Das obige ist der detaillierte Inhalt vonAlvaro Montoro präsentiert: Spaß mit Flaggen… mit CSS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage