Heim >Web-Frontend >CSS-Tutorial >Einführung von Shoelace, eine von Framework-unabhängige Komponenten-basierte UX-Bibliothek
In diesem Artikel wird Shoelace eingeführt, eine von Cory Laviska erstellte Komponentenbibliothek, ist jedoch einzigartig. Es definiert alle Standard -UX -Komponenten: Tags, modale Felder, Akkordeon, automatische Vervollständigung und mehr. Diese Komponenten sind nicht in die Box, schön, einfach zu bedienen und vollständig anpassbar. Es erstellt diese Komponenten jedoch nicht mit Frameworks wie React, Solid oder Sufle, sondern verwendet Webkomponenten. Vorbereitung
reagieren
Eine andere Option, die ich persönlich bevorzugt, besteht darin, eine leichte Reaktionskomponente zu erstellen, die den Tag -Namen und alle Eigenschaften der Webkomponente akzeptiert und dann mit den Mängeln von React umgeht. Ich habe diese Option in einem früheren Beitrag besprochen. Ich mag dieses Schema, weil es so konzipiert ist, dass es entfernt werden soll. Der experimentelle Zweig von React hat das Problem der Interoperabilität der Webkomponente gelöst. Nachdem die verwendete leichte Interoperabilitätskomponente für leichte Webkomponenten nach der Veröffentlichung gesucht und entfernt werden kann, bleibt die direkte Nutzung der direkten Webkomponenten ohne React -Verpackungen zurück.
serverseitiges Rendering (SSR)
dh es gibt andere Möglichkeiten, Webkomponenten "ordnungsgemäß" mit Webanwendungen zu erstellen, die Tools wie als nächstes für SSR verwenden. Kurz gesagt, ein Skript, das Webkomponenten registriert, muss in einem Blockierungsskript ausgeführt werden, bevor das Tag analysiert wird. Dies wird jedoch Gegenstand eines anderen Beitrags sein.
Wenn Sie eine Art von Kunden -Rendering -Spa erstellen, ist dies natürlich kein Problem. Das werden wir in diesem Beitrag verwenden.starten
Da dieser Beitrag möchte, dass sich dieser Beitrag auf das Schnell und seine Webkomponentenfunktionen konzentriert, werde ich Selte für alles verwenden. Ich werde dieses Stackblitz -Projekt auch zur Demonstration verwenden. Wir werden diese Demo Schritt für Schritt zusammen erstellen, aber Sie können die Wiederholung jederzeit öffnen, um das Endergebnis zu sehen.
CSS -Selektor diskutieren - der für Sie möglicherweise brandneu sein kann - sogar sehen, wie Shoelace es uns ermöglicht, die verschiedenen Animationen zu überschreiben und anzupassen.
Wenn Sie nach dem Lesen dieses Artikels den Schnürsenkel genießen und ihn in Ihrem React -Projekt ausprobieren möchten, ist mein Vorschlag, den in meiner Einführung erwähnten Wrapper zu verwenden. Auf diese Weise können Sie eine beliebige Komponente des Shoelace verwenden und können sie vollständig entfernen, sobald React die Webkomponenten -Fix, die sie bereits haben (finden Sie in Version 19).
Shoelace hat recht detaillierte Installationsanweisungen. Am einfachsten ist es, die <script></script>
und <link>
-Tags zu Ihrem HTML -Dokument hinzuzufügen, und das war's. Für jede Produktionsanwendung möchten Sie jedoch möglicherweise nur selektiv das importieren, was Sie wollen, und es gibt auch Anweisungen entsprechend.
Erstellen wir nach der Installation von Shoelace eine schlechte Komponente, um Inhalte zu rendern, und gehen Sie dann die Schritte der vollständigen Anpassung durch. Um einige komplexere Inhalte auszuwählen, habe ich die Tags und Dialoge (oft als modal genannte Kästchen genannt) Komponenten verwendet. Hier sind einige Tags, die hauptsächlich aus der Dokumentation stammen:
<sl-tab-group> <sl-tab panel="general" slot="nav">General</sl-tab> <sl-tab panel="custom" slot="nav">Custom</sl-tab> <sl-tab panel="advanced" slot="nav">Advanced</sl-tab> <sl-tab disabled panel="disabled" slot="nav">Disabled</sl-tab> <sl-tab-panel name="general">This is the general tab panel.</sl-tab-panel> <sl-tab-panel name="custom">This is the custom tab panel.</sl-tab-panel> <sl-tab-panel name="advanced">This is the advanced tab panel.</sl-tab-panel> <sl-tab-panel name="disabled">This is a disabled tab panel.</sl-tab-panel> </sl-tab-group> <sl-dialog label="Dialog" no-header=""> Hello World! <sl-button> open = false}>Close</sl-button> </sl-dialog> <br><br> <button> open = true}>Open Dialog</button>
Dies wird einige schöne und gestaltete Etiketten präsentieren. Der Unterstrich des Aktivitäts -Tags animiert sogar gut und gleitet von einem Aktivitäts -Tag zum nächsten.
Ich werde Ihre Zeit nicht verschwenden, um jede API ausführlich zu beschreiben, die auf der Shoelace -Website ausführlich dokumentiert wurde. Schauen wir uns stattdessen an, wie diese Webkomponenten am besten interagieren und vollständig anpassen können.
Aufrufmethoden und Abonnementereignisse in Webkomponenten können sich geringfügig vom normalen Framework unterscheiden, an das Sie gewöhnt sind, dies ist jedoch nicht zu kompliziert. Mal sehen, wie es geht.
Tag -Komponente (<sl-tab-group></sl-tab-group>
) hat eine show
-Methode, mit der ein bestimmtes Tag manuell angezeigt wird. Um es zu nennen, müssen wir auf das zugrunde liegende DOM -Element des Tags zugreifen. In Selte bedeutet dies, bind:this
zu verwenden. In React wird es ein Schiedsrichter sein. usw. Da wir Svelte verwenden, deklarieren wir eine Tag -Instanzvariable:
let tabs;
… und binden Sie es:
<sl-tab-group bind:this="{tabs}"></sl-tab-group>
Jetzt können wir eine Schaltfläche hinzufügen, um sie anzurufen:
<button on:click="{()"> tabs.show("custom")}>Show custom</button>Gleiches gilt für die
Ereignisse. Wenn ein neues Tag angezeigt wird, wird ein sl-tab-show
-Ereigner ausgelöst. Wir können tabs
für unsere addEventListener
-Variable verwenden, oder wir können Svels on:event-name
Verknüpfung verwenden.
<sl-tab-group bind:this="{tabs}" on:sl-tab-show="{e"> console.log(e)}></sl-tab-group>
Dies funktioniert und protokolliert Ereignisobjekte, wenn verschiedene Tags angezeigt werden.
Normalerweise rendern wir die Tags und lassen den Benutzer zwischen ihm klicken, sodass diese Arbeit normalerweise nicht einmal benötigt wird, aber wenn Sie sie brauchen, ist es da. Lassen Sie uns nun die Dialogkomponenten interaktiv machen.
(<sl-dialog></sl-dialog>
) akzeptiert ein open
-Merkmals, das steuert, ob das Dialogfeld ... geöffnet ist. Lassen Sie es uns in unserer schlanken Komponente deklarieren:
<sl-tab-group> <sl-tab panel="general" slot="nav">General</sl-tab> <sl-tab panel="custom" slot="nav">Custom</sl-tab> <sl-tab panel="advanced" slot="nav">Advanced</sl-tab> <sl-tab disabled panel="disabled" slot="nav">Disabled</sl-tab> <sl-tab-panel name="general">This is the general tab panel.</sl-tab-panel> <sl-tab-panel name="custom">This is the custom tab panel.</sl-tab-panel> <sl-tab-panel name="advanced">This is the advanced tab panel.</sl-tab-panel> <sl-tab-panel name="disabled">This is a disabled tab panel.</sl-tab-panel> </sl-tab-group> <sl-dialog label="Dialog" no-header=""> Hello World! <sl-button> open = false}>Close</sl-button> </sl-dialog> <br><br> <button> open = true}>Open Dialog</button>
Es hat auch ein sl-hide
Ereignis zum Ausblenden des Dialogfelds. Lassen Sie uns unsere open
Eigenschaft übergeben und an das verborgene Ereignis binden, damit wir es zurücksetzen können, wenn der Benutzer klickt, um sie außerhalb des Dialoginhalts zu schließen. Fügen wir dieser Schließschaltfläche einen Klick -Handler hinzu, um unsere open
-Spertum auf false festzulegen, wodurch auch das Dialogfeld geschlossen wird.
let tabs;
Schließlich schließen wir unsere geöffnete Dialog -Taste an:
<sl-tab-group bind:this="{tabs}"></sl-tab-group>
Das war's. Die Interaktion mit der API der Komponentenbibliothek ist mehr oder weniger direkt. Wenn dieser Artikel dies nur tut, wäre es ziemlich langweilig.
Aber Shoelace - erstellt mit Webkomponenten - bedeutet, dass etwas, insbesondere Stile, etwas anders funktioniert als das, was wir gewohnt sind.
Zum Zeitpunkt des Schreibens befindet sich das Shoelace noch in der Beta, und die Schöpfer erwägen, einige Standardstile zu ändern und vielleicht sogar einige Standardstile zu entfernen, damit sie die Stile der Host -Anwendung nicht mehr überschreiben. Die Konzepte, die wir vorstellen werden, sind sowieso relevant, aber wundern Sie sich nicht, wenn einige der von mir erwähnten Schneiderdetails bei der Verwendung unterschiedlich sind.
Der Standardstil vonShoelac ist gut, aber unsere Webanwendung hat möglicherweise auch ein eigenes Design und hoffe, dass unsere UX -Komponenten ihm übereinstimmen. Lassen Sie uns sehen, wie das in der Welt der Webkomponenten dies geht.
Wir versuchen nicht, irgendetwas zu verbessern. Der Schöpfer von Shoelace ist besser im Design als ich. Stattdessen schauen wir uns nur an, wie Sie Dinge ändern können, damit Sie sich an Ihre eigene Webanwendung anpassen können. Schnelle Ansicht Shadow Dom
und
Klassen und einem, während gleichzeitig der Text angezeigt wird, den wir für dieses Tag eingegeben haben. Bitte beachten Sie jedoch, dass es sich innerhalb von .tab
Shadow Root .tab--active
befindet. Auf diese Weise können Webkomponentenautoren ihren Webkomponenten ihre eigenen Tags hinzufügen und gleichzeitig einen Ort bieten, an dem wir bereitstellen. Auf die tabindex
Elemente achten? Dies bedeutet grundsätzlich "Stellen Sie den Benutzer, was der Benutzer zwischen Webkomponenten -Tags in hier " rendert. <slot></slot>
Die -Komponente erstellt also eine Schattenwurzel und fügt ihm etwas hinzu, um einen schönen Etikettentitel sowie einen Platzhalter (
<sl-tab></sl-tab>
Verpackungsstil <slot></slot>
Ausnahme davon ist ein vererbbarer Stil. Natürlich müssen Sie nicht für jedes Element in Ihrer Webanwendung font-family
Stile anwenden. Stattdessen können Sie Ihr letztes Mal :root
oder html
angeben und alles darunter erben lassen. Diese Vererbung wird tatsächlich die Schattenwurzel durchdringen. font-family
::part
, das nicht erbt), dann haben wir Pech? Es stellt sich heraus, dass wir es nicht getan haben. Schauen Sie sich das obige Etikettelementbild und seine Schattenwurzel erneut an. Achten Sie auf das -attribut auf der Div? Auf diese Weise können Sie das Element außerhalb der Schattenwurzel mithilfe des -Auskurs befinden und stylen. Wir werden Schritt für Schritt einen Beispiel einführen. cursor
part
Überschreiben Sie den Schnellstil ::part
Öffnen Sie die Datei app.css im SRC -Verzeichnis des Stackblitz -Projekts. Im Abschnitt unten sollten Sie eine
-Anweisung sehen. Da das Attribut
:root
Überschreibe CSS -Variablen letter-spacing: normal;
überschreiben
Die letter-spacing
2px
-Komponente liest eine
Das ist es, wir haben jetzt den grünen Indikator! <sl-tab-group></sl-tab-group>
--indicator-color
Anfrage -Teile
<sl-tab-group> <sl-tab panel="general" slot="nav">General</sl-tab> <sl-tab panel="custom" slot="nav">Custom</sl-tab> <sl-tab panel="advanced" slot="nav">Advanced</sl-tab> <sl-tab disabled panel="disabled" slot="nav">Disabled</sl-tab> <sl-tab-panel name="general">This is the general tab panel.</sl-tab-panel> <sl-tab-panel name="custom">This is the custom tab panel.</sl-tab-panel> <sl-tab-panel name="advanced">This is the advanced tab panel.</sl-tab-panel> <sl-tab-panel name="disabled">This is a disabled tab panel.</sl-tab-panel> </sl-tab-group> <sl-dialog label="Dialog" no-header=""> Hello World! <sl-button> open = false}>Close</sl-button> </sl-dialog> <br><br> <button> open = true}>Open Dialog</button>In der Shoelace-Version verwende ich derzeit (2.0.0-beta.83), in jedem nicht behinderten Tag einen Zeigercursor. Wechseln Sie es in den Standard -Cursor für das aktive (ausgewählte) Tag. Wir haben gesehen, wie das
Element ein
-Merkmal auf dem Container des Tag -Titels hinzugefügt wird. Zusätzlich empfängt das aktuell ausgewählte Tag ein
<sl-tab></sl-tab>
Das ist es! part="base"
Um den Kuchen zu verleihen, sehen wir sehen, wie Schnürsenkel Animationen anpassen können. Shoelace verwendet die Webanimationen -API und enthüllt eine setDefaultAnimation
-API, um zu kontrollieren, wie unterschiedliche Elemente ihre verschiedenen Interaktionen animieren. Weitere Informationen finden Sie in der Dokumentation. Weitere Informationen finden Sie beispielsweise hier, wie Sie die Standarddialoganimation von Shoelace von der Ausdehnung und Schrumpfung nach innen in die Top -Animation ändern und nach unten bewegt werden, wenn sie versteckt sind.
<sl-tab-group> <sl-tab panel="general" slot="nav">General</sl-tab> <sl-tab panel="custom" slot="nav">Custom</sl-tab> <sl-tab panel="advanced" slot="nav">Advanced</sl-tab> <sl-tab disabled panel="disabled" slot="nav">Disabled</sl-tab> <sl-tab-panel name="general">This is the general tab panel.</sl-tab-panel> <sl-tab-panel name="custom">This is the custom tab panel.</sl-tab-panel> <sl-tab-panel name="advanced">This is the advanced tab panel.</sl-tab-panel> <sl-tab-panel name="disabled">This is a disabled tab panel.</sl-tab-panel> </sl-tab-group> <sl-dialog label="Dialog" no-header=""> Hello World! <sl-button> open = false}>Close</sl-button> </sl-dialog> <br><br> <button> open = true}>Open Dialog</button>
Dieser Code befindet sich in der App.selte -Datei. Kommentieren Sie es, um die ursprüngliche Standardanimation anzuzeigen.
Shoelace ist eine sehr ehrgeizige Komponentenbibliothek, die mit Webkomponenten erstellt wurde. Da Webkomponenten rahmenfrei sind, können sie mit jedem Framework für jedes Projekt verwendet werden. Da neue Frameworks erstaunliche Leistungsfunktionen und Benutzerfreundlichkeit zeigen, ist es attraktiver als je zuvor, qualitativ hochwertige Benutzererfahrungskomponenten zu verwenden.
Das obige ist der detaillierte Inhalt vonEinführung von Shoelace, eine von Framework-unabhängige Komponenten-basierte UX-Bibliothek. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!