In diesem Artikel wird das Problem untersucht, dass CSS -Stile möglicherweise weltweit verschmutzt werden, wenn SVGs, die -Tags in HTML enthalten, dynamisch beladen. Angesichts des schlechten Stils der <style> -Tags in SVG, insbesondere in der Szene, in der die Ansichtskapselung in Frameworks wie Angular ungültig ist, wird eine Lösung bereitgestellt, um den Stil von der SVG in die externe CSS -Klasse zu verschieben und ihn auf das SVG -Element selbst anzuwenden, um die Lokalisierung des Stils zu verwirklichen und unnötig zu vermeiden, dass unnötiger Stil in der Ineritäten und Konflikte im Intensivstand und in Konflikten zu vermeiden ist.<h3> Umfangsproblem des SVG -Inline -Stils<p> In der Webentwicklung laden wir manchmal SVG -Bilder dynamisch oder direkt als Teil von HTML. Der SVG -Standard ermöglicht die Verwendung von <style> -Tags in <svg> Elementen, um Stile zu definieren. Ein weit verbreitetes Missverständnis ist jedoch, dass diese Inline-Stile automatisch wie Stile auf Komponentenebene geschoben werden. Tatsächlich werden CSS -Regeln in <Styles> Tags oft vom Browser in den globalen Stil analysiert, was bedeutet, dass sie andere Elemente auf der Seite beeinflussen können, nicht nur die SVGs, die sie enthalten.<p> Zum Beispiel, wenn der folgende Stil im SVG definiert ist:<pre> <div class = "svg-Image"> <Svg> <Styles> svg { Hintergrundfarbe: weiß; /* Diese Regel kann alle SVG -Elemente beeinflussen*/ } Wenn dieses SVG zum HTML-Dokument hinzugefügt wird, svg {Hintergrundfarbe: White; } Diese Regel kann versehentlich für alle Elemente auf der Seite gelten, was zu einer unerwünschten Vererbung und visuellen Problemen führt. Obwohl HTML5 in Betracht gezogen hat, ein Umfangsattribut für -Tags einzuführen, um ihren Umfang zu begrenzen, wurde dieses Attribut veraltet und nicht mehr unterstützt. Für Front-End-Frameworks wie Angular ist der Einkapselungsmechanismus der Ansicht in der Regel beim Isolieren von Komponentenstilen wirksam, aber dieser Mechanismus funktioniert möglicherweise nicht wie erwartet, wenn es sich um dynamisch belastete oder direkt eingebettete SVG-interne <style> -Tags handelt. Lösung: Externalisiert CSS -Stile und verwenden Sie Klassenauswahlern Die Kernidee, um das Problem der globalen Verschmutzung von SVG -Inline -Stilen zu lösen, besteht darin, die Stildefinition aus dem SVG im Inneren zu entfernen und den CSS -Klassenauswahlmechanismus zu verwenden, um den Stil genau auf die Ziel -SVG -Elemente anzuwenden. Diese Methode kann nicht nur den Stilumfang effektiv definieren, sondern auch die Wartbarkeit des Stilmanagements verbessern. Im Folgenden finden Sie die spezifischen Implementierungsschritte: Entfernen Sie das -Tag im SVG : Entfernen Sie zunächst alle internen -Tags und deren CSS -Regeln aus der SVG -Datei. Fügen Sie eine benutzerdefinierte Klasse für das Ziel -SVG -Element hinzu : Fügen Sie in HTML- oder Komponentenvorlagen eine eindeutige CSS -Klasse zum SVG -Element hinzu, das einen bestimmten Stil erfordert. Definieren Sie Stile in externen CSS : Definieren Sie die entsprechenden CSS -Regeln für neu hinzugefügte Klassen in der globalen CSS -Datei des Projekts, den Stildateien der Komponenten (z. Beispielcode: Angenommen, wir haben eine SVG, die einen weißen Hintergrund erfordert. Nach den obigen Schritten können wir dies implementieren: 1. HTML/Komponentenvorlage ändern (app.comPonent.html) Fügen Sie eine benutzerdefinierte Klasse für das Ziel-SVG-Element wie SVG-Background-White hinzu. 2. Definieren Sie den externen CSS -Stil (App.comPonent.css) Definieren Sie in der Style-Datei oder der globalen Style-Datei der Komponente den gewünschten Stil für die SVG-Background-White-Klasse. / * app.component.css */ .svg-background-White { Hintergrundfarbe: weiß; /* Andere SVG-spezifische Stile können hier hinzugefügt werden*/ } Auf diese Weise die Hintergrundfarbe: weiß; Der Stil wird nur auf bestimmte SVG-Elemente mit der SVG-Background-White-Klasse angewendet, ohne andere SVGs oder Elemente auf der Seite zu beeinflussen. Notizen und Zusammenfassung Stillokalisierung : Diese Methode stellt sicher, dass der Stil streng auf die Ziel -SVG -Elemente wirkt und die globale Verschmutzung vermeidet. Wartbarkeit : Separate Stile von SVG -Inhalten und erleichtern die zu verwaltenden und modifizierten Stile. Framework-Kompatibilität : In Front-End-Frameworks wie Angular, React, Vue usw. kann das Definieren von Stilen in der CSS-Datei der Komponenten den Stilungskapselungsmechanismus des Frameworks besser nutzen, und der erwartete lokale Bereich kann auch für SVG erreicht werden. Leistungsüberlegungen : Externalisierte CSS hat normalerweise eine bessere Cache- und Lastleistung als Inline -Stile für große SVGs oder komplexe Stile. Inline-SVG- und externe SVG-Dateien : Wenn SVG als separate .svg-Datei über das Tag oder CSS-Hintergrund eingeführt wird, kann es seinen internen Stil über die CSS-Klasse nicht direkt steuern. In diesem Fall müssen Sie möglicherweise die SVG -Datei selbst bearbeiten oder in Betracht ziehen, das SVG in und die Isolation von Stile zu bitten (aber dieser Ansatz wird normalerweise nicht empfohlen). Dieses Tutorial zielt hauptsächlich darauf ab, SVG -Inhalte direkt in HTML einzubetten. Durch die Übernahme dieser Strategie zur Externalisierung von SVG -Stilen und der Verwendung von Klassenauswahlern können Entwickler die globalen Verschmutzungsprobleme, die SVG -Inline -Stile verursachen, effektiv lösen und dadurch eine robustere, wartbare und visuell konsistente Webanwendung aufbauen.