Eine Frage, die ich oft gestellt höre: Ist es möglich, Schatten aus Farbverläufen anstelle von Volltonfarben zu erstellen? Es gibt keine spezifische CSS-Eigenschaft, die dies tut (glauben Sie mir, ich habe nachgesehen), und jeder Blogbeitrag, den Sie darüber finden, besteht im Grunde aus einer Menge CSS-Tricks, um einen Farbverlauf anzunähern. Wir werden tatsächlich einige davon behandeln, während wir gehen.
Aber zuerst… ein anderer Artikel über Verlaufsschatten? Wirklich?
Ja, dies ist noch ein weiterer Beitrag zum Thema, aber es ist anders. Gemeinsam werden wir die Grenzen verschieben, um eine Lösung zu finden, die etwas abdeckt, was ich sonst nirgendwo gesehen habe: Transparenz. Die meisten Tricks funktionieren, wenn das Element einen nicht transparenten Hintergrund hat, aber was ist, wenn wir einen transparenten Hintergrund haben? Wir werden diesen Fall hier untersuchen!
Bevor wir beginnen, lassen Sie mich vorstellen mein Verlaufsschatten-Generator. Alles, was Sie tun müssen, ist, die Konfiguration anzupassen und den Code zu erhalten. Aber machen Sie weiter, denn ich werde Ihnen helfen, die gesamte Logik hinter dem generierten Code zu verstehen.
Inhaltsverzeichnis
Undurchsichtige Lösung
Beginnen wir mit der Lösung, die in 80 % der meisten Fälle funktioniert. Der typischste Fall: Sie verwenden ein Element mit Hintergrund und müssen ihm einen Verlaufsschatten hinzufügen. Da sind keine Transparenzprobleme zu berücksichtigen.
Die Lösung besteht darin, sich auf ein Pseudoelement zu verlassen, in dem der Gradient definiert ist. Sie platzieren es hinter dem eigentlichen Element und wenden Sie einen Unschärfefilter darauf an.
.box { position: relative;
}
.box::before { content: ""; position: absolute; inset: -5px; /* control the spread */ transform: translate(10px, 8px); /* control the offsets */ z-index: -1; /* place the element behind */ background: /* your gradient here */; filter: blur(10px); /* control the blur */
}
Es sieht aus wie eine Menge Code, und das liegt daran, dass es so ist. So hätten wir es mit a machen können box-shadow
stattdessen, wenn wir anstelle eines Farbverlaufs eine Volltonfarbe verwenden würden.
box-shadow: 10px 8px 10px 5px orange;
Das sollte Ihnen eine gute Vorstellung davon geben, was die Werte im ersten Snippet bewirken. Wir haben X- und Y-Offsets, den Unschärferadius und die Ausbreitungsentfernung. Beachten Sie, dass wir einen negativen Wert für die Spread-Distanz benötigen, die von kommt inset
Eigentum.
Hier ist eine Demo, die den Verlaufsschatten neben einem Klassiker zeigt box-shadow
:
Wenn Sie genau hinsehen, werden Sie feststellen, dass beide Schatten etwas unterschiedlich sind, insbesondere der Unschärfeteil. Es ist keine Überraschung, weil ich mir ziemlich sicher bin filter
Der Algorithmus der Eigenschaft funktioniert anders als der für box-shadow
. Das ist keine große Sache, da das Ergebnis am Ende ziemlich ähnlich ist.
Diese Lösung ist gut, hat aber noch einige Nachteile z-index: -1
Erklärung. Ja da ist „Kontext stapeln“ dort passiert!
Ich habe mich beworben transform
zum Hauptelement, und Boom! Der Schatten befindet sich nicht mehr unter dem Element. Dies ist kein Fehler, sondern das logische Ergebnis eines Stapelkontexts. Keine Sorge, ich werde keine langweilige Erklärung zum Stapelkontext beginnen (Ich habe das bereits in einem Stack Overflow-Thread gemacht), aber ich zeige dir trotzdem, wie du es umgehen kannst.
Die erste Lösung, die ich empfehle, ist die Verwendung eines 3D transform
:
.box { position: relative; transform-style: preserve-3d;
}
.box::before { content: ""; position: absolute; inset: -5px; transform: translate3d(10px, 8px, -1px); /* (X, Y, Z) */ background: /* .. */; filter: blur(10px);
}
Anstatt zu verwenden z-index: -1
verwenden wir eine negative Translation entlang der Z-Achse. Wir werden alles hineinstellen translate3d()
. Vergiss nicht zu benutzen transform-style: preserve-3d
auf dem Hauptelement; ansonsten die 3D transform
wird nicht wirksam.
Soweit ich weiß, hat diese Lösung keine Nebenwirkungen … aber vielleicht sehen Sie eine. Wenn das der Fall ist, teilen Sie es im Kommentarbereich mit und lassen Sie uns versuchen, eine Lösung dafür zu finden!
Wenn Sie aus irgendeinem Grund kein 3D verwenden können transform
, besteht die andere Lösung darin, sich auf zwei Pseudoelemente zu verlassen — ::before
und ::after
. Einer erstellt den Verlaufsschatten und der andere reproduziert den Haupthintergrund (und andere Stile, die Sie möglicherweise benötigen). Auf diese Weise können wir die Stapelreihenfolge beider Pseudoelemente leicht steuern.
.box { position: relative; z-index: 0; /* We force a stacking context */
}
/* Creates the shadow */
.box::before { content: ""; position: absolute; z-index: -2; inset: -5px; transform: translate(10px, 8px); background: /* .. */; filter: blur(10px);
}
/* Reproduces the main element styles */
.box::after { content: """; position: absolute; z-index: -1; inset: 0; /* Inherit all the decorations defined on the main element */ background: inherit; border: inherit; box-shadow: inherit;
}
Es ist wichtig zu beachten, dass wir es sind Zwingen das Hauptelement zum Erstellen eines Stapelkontexts durch Deklaration z-index: 0
, oder jede andere Eigenschaft, die dasselbe tut, drauf. Vergessen Sie auch nicht, dass Pseudoelemente die Paddingbox des Hauptelements als Referenz betrachten. Wenn also das Hauptelement einen Rahmen hat, müssen Sie dies bei der Definition der Pseudoelementstile berücksichtigen. Sie werden feststellen, dass ich verwende inset: -2px
on ::after
um die auf dem Hauptelement definierte Grenze zu berücksichtigen.
Wie ich bereits sagte, ist diese Lösung wahrscheinlich in den meisten Fällen gut genug, wenn Sie einen Verlaufsschatten wünschen, solange Sie keine Transparenz unterstützen müssen. Aber wir sind hier, um die Herausforderung zu meistern und die Grenzen zu überschreiten, also bleiben Sie bei mir, auch wenn Sie das, was als nächstes kommt, nicht brauchen. Sie werden wahrscheinlich neue CSS-Tricks lernen, die Sie an anderer Stelle verwenden können.
Transparente Lösung
Machen wir da weiter, wo wir beim 3D aufgehört haben transform
und entfernen Sie den Hintergrund vom Hauptelement. Ich beginne mit einem Schatten, der sowohl Offset als auch Ausbreitungsabstand gleich hat 0
.
Die Idee ist, einen Weg zu finden, alles innerhalb des Bereichs des Elements (innerhalb des grünen Rands) auszuschneiden oder zu verbergen, während das, was sich außerhalb befindet, erhalten bleibt. Wir werden verwenden clip-path
dafür. Aber Sie fragen sich vielleicht, wie clip-path
kann einen Schnitt machen innerhalb ein Element.
In der Tat gibt es dafür keine Möglichkeit, aber wir können es mit einem bestimmten Polygonmuster simulieren:
clip-path: polygon(-100vmax -100vmax,100vmax -100vmax,100vmax 100vmax,-100vmax 100vmax,-100vmax -100vmax,0 0,0 100%,100% 100%,100% 0,0 0)
Tada! Wir haben einen Verlaufsschatten, der Transparenz unterstützt. Wir haben nur a hinzugefügt clip-path
zum vorherigen Code. Hier ist eine Abbildung zur Veranschaulichung des Polygonteils.
Der blaue Bereich ist der sichtbare Teil nach dem Auftragen clip-path
. Ich verwende die blaue Farbe nur, um das Konzept zu veranschaulichen, aber in Wirklichkeit sehen wir nur den Schatten in diesem Bereich. Wie Sie sehen können, haben wir vier Punkte mit einem großen Wert definiert (B
). Mein großer Wert ist 100vmax
, aber es kann ein beliebig großer Wert sein. Die Idee ist, sicherzustellen, dass wir genug Platz für den Schatten haben. Wir haben auch vier Punkte, die die Ecken des Pseudo-Elements sind.
Die Pfeile veranschaulichen den Pfad, der das Polygon definiert. Wir gehen von aus (-B, -B)
bis wir ankommen (0,0)
. Insgesamt benötigen wir 10 Punkte. Nicht acht Punkte, weil zwei Punkte zweimal im Pfad wiederholt werden ((-B,-B)
und (0,0)
).
Es gibt immer noch eine Sache noch bleibt uns zu tun, und es ist die Ausbreitungsentfernung und die Offsets zu berücksichtigen. Der einzige Grund, warum die obige Demo funktioniert, ist, dass es sich um einen besonderen Fall handelt, in dem die Offsets und die Spreizdistanz gleich sind 0
.
Lassen Sie uns den Spread definieren und sehen, was passiert. Denken Sie daran, dass wir verwenden inset
mit einem negativen Wert, um dies zu tun:
Das Pseudoelement ist nun größer als das Hauptelement, also die clip-path
schneidet mehr als wir brauchen. Denken Sie daran, dass wir das Teil immer schneiden müssen innerhalb das Hauptelement (der Bereich innerhalb des grünen Rahmens des Beispiels). Wir müssen die Position der vier Punkte innerhalb von anpassen clip-path
.
.box { --s: 10px; /* the spread */ position: relative;
}
.box::before { inset: calc(-1 * var(--s)); clip-path: polygon( -100vmax -100vmax, 100vmax -100vmax, 100vmax 100vmax, -100vmax 100vmax, -100vmax -100vmax, calc(0px + var(--s)) calc(0px + var(--s)), calc(0px + var(--s)) calc(100% - var(--s)), calc(100% - var(--s)) calc(100% - var(--s)), calc(100% - var(--s)) calc(0px + var(--s)), calc(0px + var(--s)) calc(0px + var(--s)) );
}
Wir haben eine CSS-Variable definiert, --s
, für die gespreizte Distanz und aktualisierte die Polygonpunkte. Ich habe die Punkte, an denen ich den großen Wert verwende, nicht berührt. Ich aktualisiere nur die Punkte, die die Ecken des Pseudoelements definieren. Ich erhöhe alle Nullwerte um --s
und verringern Sie die 100%
Werte von --s
.
Es ist die gleiche Logik mit den Offsets. Wenn wir das Pseudoelement verschieben, ist der Schatten falsch ausgerichtet, und wir müssen das Polygon erneut korrigieren und die Punkte in die entgegengesetzte Richtung verschieben.
.box { --s: 10px; /* the spread */ --x: 10px; /* X offset */ --y: 8px; /* Y offset */ position: relative;
}
.box::before { inset: calc(-1 * var(--s)); transform: translate3d(var(--x), var(--y), -1px); clip-path: polygon( -100vmax -100vmax, 100vmax -100vmax, 100vmax 100vmax, -100vmax 100vmax, -100vmax -100vmax, calc(0px + var(--s) - var(--x)) calc(0px + var(--s) - var(--y)), calc(0px + var(--s) - var(--x)) calc(100% - var(--s) - var(--y)), calc(100% - var(--s) - var(--x)) calc(100% - var(--s) - var(--y)), calc(100% - var(--s) - var(--x)) calc(0px + var(--s) - var(--y)), calc(0px + var(--s) - var(--x)) calc(0px + var(--s) - var(--y)) );
}
Es gibt zwei weitere Variablen für die Offsets: --x
und --y
. Wir verwenden sie innerhalb von transform
und wir aktualisieren auch die clip-path
Werte. Wir berühren die Polygonpunkte immer noch nicht mit großen Werten, aber wir versetzen alle anderen – wir reduzieren --x
aus den X-Koordinaten und --y
von den Y-Koordinaten.
Jetzt müssen wir nur noch ein paar Variablen aktualisieren, um den Verlaufsschatten zu steuern. Und wenn wir schon dabei sind, machen wir auch den Blur-Radius zu einer Variablen:
Brauchen wir noch die 3D
transform
Trick?
Es hängt alles von der Grenze ab. Vergessen Sie nicht, dass die Referenz für ein Pseudo-Element das Polsterfeld ist. Wenn Sie also einen Rahmen auf Ihr Hauptelement anwenden, haben Sie eine Überlappung. Sie behalten entweder die 3D transform
Trick oder aktualisieren Sie die inset
Wert für die Grenze.
Hier ist die vorherige Demo mit einer aktualisierten inset
Wert anstelle des 3D transform
:
Ich würde sagen, dass dies ein besser geeigneter Weg ist, da die Ausbreitungsentfernung genauer ist, da sie von der Border-Box anstelle der Padding-Box ausgeht. Aber Sie müssen die anpassen inset
Wert entsprechend der Grenze des Hauptelements. Manchmal ist der Rand des Elements unbekannt und Sie müssen die vorherige Lösung verwenden.
Bei der früheren nicht transparenten Lösung ist es möglich, dass Sie mit einem Stapelkontextproblem konfrontiert werden. Und mit der transparenten Lösung ist es möglich, dass Sie stattdessen mit einem Grenzproblem konfrontiert werden. Jetzt haben Sie Optionen und Möglichkeiten, diese Probleme zu umgehen. Der 3D-Transformationstrick ist meine Lieblingslösung, weil er alle Probleme behebt (Der Online-Generator werde es mir auch überlegen)
Randradius hinzufügen
Wenn Sie versuchen, hinzuzufügen border-radius
mit der nicht transparenten Lösung, mit der wir begonnen haben, ist es eine ziemlich triviale Aufgabe. Alles, was Sie tun müssen, ist, den gleichen Wert vom Hauptelement zu erben, und Sie sind fertig.
Auch wenn Sie keinen Grenzradius haben, ist es eine gute Idee, ihn zu definieren border-radius: inherit
. Das macht jedes Potenzial aus border-radius
Vielleicht möchten Sie später noch einen Grenzradius hinzufügen, der von woanders kommt.
Anders sieht es bei der transparenten Lösung aus. Leider bedeutet es, eine andere Lösung zu finden, weil clip-path
kann mit Krümmungen nicht umgehen. Das bedeutet, dass wir den Bereich innerhalb des Hauptelements nicht schneiden können.
Wir stellen die vor mask
Eigentum an der Mischung.
Dieser Teil war sehr mühsam, und ich hatte Mühe, eine allgemeine Lösung zu finden, die nicht darauf angewiesen ist magische Zahlen. Am Ende hatte ich eine sehr komplexe Lösung, die nur ein Pseudoelement verwendet, aber der Code war ein Stück Spaghetti, das nur einige wenige Sonderfälle abdeckt. Ich glaube nicht, dass es sich lohnt, diesen Weg zu gehen.
Ich habe mich entschieden, ein zusätzliches Element für einfacheren Code einzufügen. Hier ist das Markup:
<div class="box"> <sh></sh>
</div>
Ich verwende ein benutzerdefiniertes Element, <sh>
, um mögliche Konflikte mit externem CSS zu vermeiden. Ich hätte a gebrauchen können <div>
, aber da es sich um ein gemeinsames Element handelt, kann es leicht von einer anderen CSS-Regel angegriffen werden, die von woanders kommt und unseren Code beschädigen kann.
Der erste Schritt ist die Positionierung <sh>
Element und erzeugen absichtlich einen Überlauf:
.box { --r: 50px; position: relative; border-radius: var(--r);
}
.box sh { position: absolute; inset: -150px; border: 150px solid #0000; border-radius: calc(150px + var(--r));
}
Der Code sieht vielleicht etwas seltsam aus, aber wir werden uns im Laufe der Zeit mit der Logik dahinter befassen. Als Nächstes erstellen wir den Verlaufsschatten mit einem Pseudo-Element von <sh>
.
.box { --r: 50px; position: relative; border-radius: var(--r); transform-style: preserve-3d;
}
.box sh { position: absolute; inset: -150px; border: 150px solid #0000; border-radius: calc(150px + var(--r)); transform: translateZ(-1px)
}
.box sh::before { content: ""; position: absolute; inset: -5px; border-radius: var(--r); background: /* Your gradient */; filter: blur(10px); transform: translate(10px,8px);
}
Wie Sie sehen können, verwendet das Pseudo-Element denselben Code wie alle vorherigen Beispiele. Der einzige Unterschied ist das 3D transform
definiert auf der <sh>
Element anstelle des Pseudo-Elements. Im Moment haben wir einen Verlaufsschatten ohne die Transparenzfunktion:
Beachten Sie, dass der Bereich der <sh>
Element wird durch die schwarze Umrandung definiert. Warum mache ich das? Denn so kann ich a anwenden mask
darauf, um den Teil innerhalb des grünen Bereichs zu verstecken und den überfließenden Teil dort zu halten, wo wir den Schatten sehen müssen.
Ich weiß, es ist ein bisschen schwierig, aber anders clip-path
, der mask
Eigentum gilt nicht für die Fläche aussen ein Element, um Dinge anzuzeigen und zu verbergen. Deshalb war ich verpflichtet, das zusätzliche Element einzuführen – um den „Außen“-Bereich zu simulieren.
Beachten Sie auch, dass ich eine Kombination aus verwende border
und inset
diesen Bereich zu definieren. Dadurch kann ich die Polsterbox dieses zusätzlichen Elements mit der des Hauptelements identisch halten, sodass das Pseudoelement keine zusätzlichen Berechnungen benötigt.
Eine weitere nützliche Sache, die wir durch die Verwendung eines zusätzlichen Elements erhalten, ist, dass das Element fixiert ist und sich nur das Pseudoelement bewegt (mithilfe von translate
). Dadurch kann ich die Maske, die die ist, leicht definieren letzte Schritt dieses Tricks.
mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
mask-composite: exclude;
Es ist fertig! Wir haben unseren Verlaufsschatten und er unterstützt border-radius
! Sie haben wahrscheinlich einen Komplex erwartet mask
Wert mit Unmengen von Farbverläufen, aber nein! Wir brauchen nur zwei einfache Farbverläufe und einen mask-composite
um die Magie zu vervollständigen.
Isolieren wir die <sh>
Element, um zu verstehen, was dort passiert:
.box sh { position: absolute; inset: -150px; border: 150px solid red; background: lightblue; border-radius: calc(150px + var(--r));
}
Hier ist, was wir bekommen:
Beachten Sie, wie der Innenradius mit dem des Hauptelements übereinstimmt border-radius
. Ich habe eine große Grenze definiert (150px
) Und eine border-radius
gleich der großen Grenze erfahren der Radius des Hauptelements. Auf der Außenseite habe ich einen Radius gleich 150px + R
. Auf der Innenseite habe ich 150px + R - 150px = R
.
Wir müssen den inneren (blauen) Teil ausblenden und sicherstellen, dass der (rote) Randteil noch sichtbar ist. Dazu habe ich zwei Maskenebenen definiert – eine, die nur den Bereich des Inhaltsfelds abdeckt, und eine andere, die den Bereich des Randfelds abdeckt (Standardwert). Dann schloss ich sie voneinander aus, um die Grenze aufzudecken.
mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
mask-composite: exclude;
Ich habe die gleiche Technik verwendet Erstellen Sie einen Rahmen, der Farbverläufe unterstützt und border-radius
. Ana Tudor hat auch einen guten Artikel über Abdeckkomposit zu deren Lektüre ich Sie einlade.
Gibt es Nachteile bei dieser Methode?
Ja, das ist definitiv nicht perfekt. Das erste Problem, auf das Sie möglicherweise stoßen, hängt mit der Verwendung eines Rahmens für das Hauptelement zusammen. Dies kann zu einer kleinen Fehlausrichtung in den Radien führen, wenn Sie dies nicht berücksichtigen. Wir haben dieses Problem in unserem Beispiel, aber vielleicht können Sie es kaum bemerken.
Die Lösung ist relativ einfach: Fügen Sie die Breite des Rahmens für die hinzu <sh>
Elemente inset
.
.box { --r: 50px; border-radius: var(--r); border: 2px solid;
}
.box sh { position: absolute; inset: -152px; /* 150px + 2px */ border: 150px solid #0000; border-radius: calc(150px + var(--r));
}
Ein weiterer Nachteil ist der große Wert, den wir für die Grenze verwenden (150px
im Beispiel). Dieser Wert sollte groß genug sein, um den Schatten aufzunehmen, aber nicht zu groß, um Überlauf- und Bildlaufleistenprobleme zu vermeiden. Glücklicherweise, der Online-Generator berechnet den optimalen Wert unter Berücksichtigung aller Parameter.
Der letzte Nachteil, der mir bekannt ist, ist, wenn Sie mit einem Komplex arbeiten border-radius
. Wenn Sie beispielsweise möchten, dass jeder Ecke ein anderer Radius zugewiesen wird, müssen Sie für jede Seite eine Variable definieren. Es ist nicht wirklich ein Nachteil, nehme ich an, aber es kann Ihren Code etwas schwieriger zu warten machen.
.box { --r-top: 10px; --r-right: 40px; --r-bottom: 30px; --r-left: 20px; border-radius: var(--r-top) var(--r-right) var(--r-bottom) var(--r-left);
}
.box sh { border-radius: calc(150px + var(--r-top)) calc(150px + var(--r-right)) calc(150px + var(--r-bottom)) calc(150px + var(--r-left));
}
.box sh:before { border-radius: var(--r-top) var(--r-right) var(--r-bottom) var(--r-left);
}
Der Online-Generator berücksichtigt der Einfachheit halber nur einen einheitlichen Radius, aber Sie wissen jetzt, wie Sie den Code ändern können, wenn Sie eine komplexe Radiuskonfiguration berücksichtigen möchten.
Wrapping up
Wir haben das Ende erreicht! Die Magie hinter Verlaufsschatten ist kein Geheimnis mehr. Ich habe versucht, alle Möglichkeiten und möglichen Probleme abzudecken, mit denen Sie möglicherweise konfrontiert sind. Wenn ich etwas übersehen habe oder Sie ein Problem entdecken, können Sie es gerne im Kommentarbereich melden, und ich werde es überprüfen.
Auch hier ist vieles davon wahrscheinlich übertrieben, wenn man bedenkt, dass die De-facto-Lösung die meisten Ihrer Anwendungsfälle abdecken wird. Trotzdem ist es gut, das „Warum“ und „Wie“ hinter dem Trick zu kennen und seine Grenzen zu überwinden. Außerdem haben wir gute Übung beim Spielen mit CSS-Clipping und -Maskierung.
Und natürlich haben Sie der Online-Generator Sie können jederzeit zugreifen, wenn Sie den Ärger vermeiden möchten.
- SEO-gestützte Content- und PR-Distribution. Holen Sie sich noch heute Verstärkung.
- Platoblockkette. Web3-Metaverse-Intelligenz. Wissen verstärkt. Hier zugreifen.
- Quelle: https://css-tricks.com/different-ways-to-get-css-gradient-shadows/
- 1
- 10
- 11
- 3d
- 7
- 9
- 98
- a
- Fähig
- Über uns
- darüber
- oben
- Absolute
- Nach
- Konto
- Trading Konten
- genau
- berührt das Schneidwerkzeug
- Zusätzliche
- Nach der
- Algorithmus
- Alle
- erlaubt
- bereits
- immer
- Ana
- und
- Ein anderer
- von jedem Standort
- angewandt
- Jetzt bewerben
- Anwendung
- Bereich
- um
- Artikel
- vermeiden
- Hintergrund
- Grundsätzlich gilt
- weil
- Bevor
- hinter
- Glauben
- unten
- Big
- größer
- Bit
- Schwarz
- Blog
- Blau
- verwischen
- Grenze
- Bohren
- Box
- Break
- Fehler
- Berechnen
- kann keine
- Häuser
- Fälle
- challenges
- aus der Ferne überprüfen
- klassisch
- Clip-Pfad
- eng
- Code
- Farbe
- Kombination
- Kommen
- Kommentar
- gemeinsam
- abschließen
- Komplex
- konzept
- Konfiguration
- Konflikt
- Geht davon
- Berücksichtigung
- überlegt
- Inhalt
- Kontext
- Smartgeräte App
- Ecke
- Ecken
- könnte
- Kurs
- Abdeckung
- deckt
- erstellen
- schafft
- CSS
- CSS-Tricks
- Original
- Schneiden
- Schnitte
- Deal
- Behandlung
- entschieden
- verringern
- Standard
- definiert
- Definiert
- Definition
- definitiv
- Demo
- hängt
- DID
- Unterschied
- anders
- Richtung
- entdeckt,
- Abstand
- Tut nicht
- Dabei
- Nicht
- Nachteile
- jeder
- Früher
- leicht
- bewirken
- entweder
- anderswo
- genug
- gewährleisten
- insbesondere
- Äther (ETH)
- Sogar
- alles
- Beispiel
- Beispiele
- ausgeschlossen
- Training
- erwartet
- Erklärung
- ERKUNDEN
- Möglichkeiten sondieren
- extern
- extra
- Gesicht
- Tatsache
- ziemlich
- Favorit
- Merkmal
- wenige
- Abbildung
- Filter
- Finden Sie
- Suche nach
- Vorname
- Fixieren
- fixiert
- folgen
- Zwingen
- Frei
- für
- Allgemeines
- erzeugt
- bekommen
- ABSICHT
- Go
- gehen
- gut
- Steigungen
- Grün
- das passiert
- Hilfe
- hier
- Verbergen
- Ultraschall
- Hilfe
- HTML
- HTTPS
- KRANK
- Idee
- wichtig
- in
- Erhöhung
- beantragen müssen
- einführen
- einladen
- Problem
- Probleme
- IT
- Behalten
- Aufbewahrung
- Wissen
- Nachname
- Lagen
- LERNEN
- wahrscheinlich
- Einschränkungen
- Grenzen
- wenig
- Lang
- länger
- aussehen
- sah
- SIEHT AUS
- Los
- Magie
- Main
- halten
- Mehrheit
- um
- Maske"
- Mittel
- Methode
- könnte
- ändern
- Moment
- mehr
- vor allem warme
- schlauer bewegen
- ziehen um
- Mozilla
- Mystery
- Need
- Negativ
- dennoch
- Neu
- weiter
- Offset
- EINEM
- Online
- gegenüber
- optimal
- Optionen
- Orange
- Auftrag
- Andere
- Anders
- Andernfalls
- skizzieren
- aussen
- Überwinden
- Parameter
- Teil
- besondere
- Weg
- Schnittmuster
- perfekt
- vielleicht
- wählen
- Ort
- Plato
- Datenintelligenz von Plato
- PlatoData
- spielend
- Bitte
- erfahren
- Punkte
- Vieleck
- Position
- Möglichkeiten
- möglich
- Post
- Potenzial
- ziemlich
- früher
- wahrscheinlich
- Resorts
- Push
- setzen
- Frage
- erreichen
- erreicht
- Lesen Sie mehr
- Realität
- Grund
- empfehlen
- Rot
- Veteran
- bezogene
- verhältnismäßig
- verlassen
- merken
- entfernen
- wiederholt
- berichten
- Folge
- zeigen
- Straße
- Regel
- Said
- Sake
- gleich
- Abschnitt
- Shadow
- Teilen
- sollte
- erklären
- ähnlich
- Einfacher
- Einfachheit
- da
- klein
- So
- solide
- Lösung
- einige
- etwas
- irgendwo
- Raumfahrt
- spezifisch
- Verbreitung
- Stapel
- Stapeln
- Anfang
- begonnen
- beginnt
- bleiben
- Schritt
- Immer noch
- Geschichte
- geeignet
- Support
- Unterstützt
- Überraschung
- Nehmen
- gezielt
- Aufgabe
- Das
- Die Gegend
- Ding
- Denken
- zu
- gemeinsam
- auch
- Thema
- Gesamt
- aufnehmen
- Transformieren
- Übersetzen
- Übersetzungen
- Transparenz
- transparent
- Tricks
- was immer dies auch sein sollte.
- typisch
- verstehen
- Aktualisierung
- aktualisiert
- us
- -
- Wert
- Werte
- sichtbar
- Wege
- Was
- Was ist
- welche
- während
- werden wir
- ohne
- Arbeiten
- arbeiten,
- Werk
- wert
- X
- Ihr
- Z-Index
- Zephyrnet
- Null