Heim Web-Frontend CSS-Tutorial Das Shadow DOM verstehen und wann man es verwenden sollte

Das Shadow DOM verstehen und wann man es verwenden sollte

Oct 11, 2024 am 10:23 AM

Understanding the Shadow DOM and When to Use It

Das Shadow DOM verstehen und wann man es verwenden sollte

Das Shadow DOM ist eine leistungsstarke Funktion im modernen Webentwicklungs-Toolkit, die Entwicklern hilft, Elemente zu kapseln und Stile zu isolieren. Im Wesentlichen ermöglicht Ihnen das Shadow DOM die Erstellung eines „Mini-DOM“ innerhalb eines Elements, das vollständig vom Rest der Seite isoliert ist. Das bedeutet, dass CSS und JavaScript in diesem Schatten-DOM nichts außerhalb davon beeinträchtigen und umgekehrt.

Eines der Hauptprobleme, das Shadow DOM löst, ist der Verlust von CSS-Stilen – wenn für einen Teil Ihrer Anwendung definierte Stile unbeabsichtigt Auswirkungen auf andere Teile haben, was zu mangelnder Vorhersehbarkeit und schwieriger zu wartendem Code führt. Das Shadow DOM erstellt eine Stilgrenze und verhindert so dieses Problem.

Hier ist ein Beispielanwendungsfall, bei dem das Shadow DOM besonders nützlich ist:

Stellen Sie sich vor, Sie haben ein Chatbot-Widget – wie das Hexabot-Widget –, das Sie auf mehreren Websites einbetten möchten. Jede dieser Websites verfügt über ihr eigenes CSS und einige Stile können das Aussehen und Verhalten Ihres Widgets beeinträchtigen. Beispielsweise könnte eine Website über globale Stile für

verfügen. Elemente, und wenn die Elemente Ihres Widgets einfach zum DOM hinzugefügt werden, können diese Stile das Erscheinungsbild Ihres Widgets verändern.

Um zu verhindern, dass das CSS der Website mit dem CSS Ihres Widgets in Konflikt gerät, können Sie das Shadow DOM nutzen, um Ihr Widget zu kapseln. Hier ist ein einfaches Beispiel, um dies zu veranschaulichen:

Ohne Shadow DOM:

<script crossorigin src="https://unpkg.com/react@18/umd/react.production.min.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"></script>
<link rel="stylesheet" href="./style.css">
<script src="<<WIDGET URL>>/hexabot-widget.umd.js"></script>

<div id="hb-chat-widget"></div>
<script>
  const el = React.createElement;
  const domContainer = document.getElementById('hb-chat-widget');
  ReactDOM.render(
    el(HexabotWidget, {
      apiUrl: 'https://api.yourdomain.com',
      channel: 'offline',
      token: 'token123',
    }),
    domContainer,
  );
</script>
Nach dem Login kopieren

In diesem Beispiel könnten alle globalen Stile der Website das Aussehen des Widgets beeinträchtigen.

Mit Shadow DOM:

<script crossorigin src="https://cdn.jsdelivr.net/npm/react@18/umd/react.production.min.js"></script>
<script crossorigin src="https://cdn.jsdelivr.net/npm/react-dom@18/umd/react-dom.production.min.js"></script>
<script src="<<WIDGET URL>>/hexabot-widget.umd.js"></script>

<div id="hb-chat-widget"></div>
<script>
  // Create the shadow root and attach it to the widget container
  const widgetContainer = document.getElementById('hb-chat-widget');
  const shadowRoot = widgetContainer.attachShadow({ mode: 'open' });

  // Create a new div inside the shadow root to serve as the rendering target
  const shadowContainer = document.createElement('div');
  shadowRoot.appendChild(shadowContainer);

  // Add styles inside the shadow root by importing the CSS file into the shadow DOM
  const linkElement = document.createElement('link');
  linkElement.rel = 'stylesheet';
  linkElement.href = './style.css';
  shadowRoot.appendChild(linkElement);

  // Render the widget inside the shadow root
  const el = React.createElement;
  ReactDOM.render(
    el(HexabotWidget, {
      apiUrl: 'https://api.yourdomain.com',
      channel: 'offline',
      token: 'token123',
    }),
    shadowContainer,
  );
</script>
Nach dem Login kopieren

In dieser Version wird das Widget in einem Schattenstamm gerendert. Das bedeutet, dass die für die Website definierten Stile keinen Einfluss auf das Widget haben und umgekehrt. Die CSS-Stile für Ihr Widget werden isoliert gehalten, um ein einheitliches Erscheinungsbild auf jeder Website zu gewährleisten, in die das Widget eingebettet ist.

Wann sollten Sie das Shadow DOM verwenden?

Das Shadow DOM ist immer dann nützlich, wenn Sie eigenständige Komponenten erstellen müssen, die nicht von anderen Teilen der Anwendung beeinflusst werden oder diese beeinträchtigen. Hier sind einige Szenarien, in denen Sie die Verwendung in Betracht ziehen sollten:

  • Widgets oder Plugins:Bei der Entwicklung wiederverwendbarer Widgets, die in verschiedene Umgebungen eingebettet werden könnten, verhindert die Verwendung des Shadow DOM externe CSS-Konflikte.
  • Komplexe UI-Komponenten: Wenn Sie benutzerdefinierte Elemente wie Schieberegler, Karussells oder andere UI-Komponenten erstellen, bei denen Sie eine strenge Kontrolle über das Styling wünschen.
  • Isolierungsanforderungen: Jedes Szenario, in dem Sie eine vollständige Isolierung von CSS und JavaScript benötigen, um unbeabsichtigte Interaktionen zu vermeiden.

Durch die Kapselung der Stile und des Verhaltens einer Komponente kann das Shadow DOM ein entscheidendes Werkzeug für Entwickler sein, die modulare, wiederverwendbare und robuste Webkomponenten erstellen.

Das Hexabot-Live-Chat-Widget nutzt diese Methode, um ein nahtloses und konsistentes Benutzererlebnis auf verschiedenen Websites zu gewährleisten, ohne dass es zu Störungen durch externe Stile kommt. Wenn Sie daran interessiert sind, dies in Aktion zu sehen, schauen Sie sich gerne Hexabot an und markieren Sie das GitHub-Repository, um das Projekt zu unterstützen!


 Star the Hexabot Github Repository ⭐

Das obige ist der detaillierte Inhalt vonDas Shadow DOM verstehen und wann man es verwenden sollte. 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
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
4 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
1677
14
PHP-Tutorial
1279
29
C#-Tutorial
1257
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

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

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

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

Schnellschluck -Cache -Busting Schnellschluck -Cache -Busting Apr 18, 2025 am 11:23 AM

Sie sollten auf jeden Fall weitausgestellte Cache-Header auf Ihren Vermögenswerten wie CSS und JavaScript (und Bilder und Schriftarten und was auch immer) festlegen. Das sagt dem Browser

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:

See all articles