adoptStyles / adoptSheetText
Bringt CSS in ein Shadow DOM ein und bevorzugt dabei Constructable Stylesheets: Ein CSS wird einmal geparst und dann als Referenz von allen Instanzen der Komponente geteilt, sodass auch tausend Instanzen nur ein geparstes Ergebnis halten. Wo es die nicht gibt, weichen beide darauf aus, ein <style>-Tag einzufügen.
Beide sind serverseitig sicher (sie kehren sofort zurück, wenn es kein document gibt) und idempotent.
Verwendung
import css from './index.less?inline';
import { adoptStyles } from 'ranuts/utils';
class MyElement extends HTMLElement {
constructor() {
super();
const root = this.shadowRoot || this.attachShadow({ mode: 'closed' });
adoptStyles(root, css);
}
}API
adoptStyles
Für die statischen Stile einer Komponente. Der Ausweichpfad entdoppelt je Wurzel: Ein Shadow Root behält genau ein markiertes <style>, und wer zuerst schreibt, gewinnt. Die statischen Stile einer Komponente sollten je Wurzel einmal vorhanden sein — ein zweiter Aufruf heißt also, dass die aufrufende Seite sich geirrt hat.
Parameter
| Parameter | Beschreibung | Typ | Standard |
|---|---|---|---|
shadowRoot | Das Ziel-Shadow-Root | ShadowRoot | Erforderlich |
cssText | Der Stiltext | string | Erforderlich |
marker | Markierendes Attribut am ausweichenden <style> | string | 'data-adopted-style' |
Rückgabe
Kein Rückgabewert (void)
adoptSheetText
Für dynamische Stile, die zur Laufzeit hereinkommen (etwa die sheet-Eigenschaft einer Komponente). Der einzige Unterschied zu adoptStyles ist, woran der Ausweichpfad entdoppelt: hier am cssText, sodass eine Wurzel mehrere verschiedene dynamische Stylesheets stapeln kann, während ein identisches nur einmal eingefügt wird.
Parameter
| Parameter | Beschreibung | Typ | Standard |
|---|---|---|---|
shadowRoot | Das Ziel-Shadow-Root | ShadowRoot | Erforderlich |
cssText | Der Stiltext | string | Erforderlich |
marker | Markierendes Attribut am ausweichenden <style> | string | 'data-adopted-sheet' |
Rückgabe
Kein Rückgabewert (void)
Konstanten
| Name | Wert | Bedeutung |
|---|---|---|
ADOPTED_STYLE_MARKER | 'data-adopted-style' | Standardmarkierung für das Ausweich-Tag von adoptStyles |
ADOPTED_SHEET_MARKER | 'data-adopted-sheet' | Standardmarkierung für das Ausweich-Tag von adoptSheetText |
Das Argument marker gibt es, damit eine Bibliothek die von ihr eingefügten Stile zeichnen und später wiederfinden kann. ranui übergibt zum Beispiel data-ranui und data-ranui-sheet.