Wie fügt man CSS-Regeln (zB strong { color: red }
) mithilfe von Javascript hinzu?
javascript
css
nickf
quelle
quelle
<strong>
dem Dokument ein neues Element hinzugefügt wird?Antworten:
Sie können dies auch über DOM Level 2 CSS-Schnittstellen ( MDN ) tun :
... auf allen außer (natürlich) IE8 und früheren Versionen, die ihre eigenen geringfügig unterschiedlichen Formulierungen verwenden:
Dies hat einen theoretischen Vorteil gegenüber der Methode createElement-set-innerHTML, da Sie sich keine Gedanken über das Einfügen spezieller HTML-Zeichen in innerHTML machen müssen, aber in der Praxis sind Stilelemente CDATA in Legacy-HTML und '<' und '&' werden in Stylesheets sowieso selten verwendet.
Sie benötigen ein Stylesheet, bevor Sie es wie folgt anhängen können. Das kann jedes vorhandene aktive Stylesheet sein: extern, eingebettet oder leer, es spielt keine Rolle. Wenn es keine gibt, ist die einzige Standardmethode, um sie zu erstellen, derzeit createElement.
quelle
sheet = window.document.styleSheets[0]
(Sie müssen mindestens ein <style type = "text / css"> </ style> dort haben).SecurityError: The operation is insecure.
Der einfache und direkte Ansatz besteht darin, einen neuen
style
Knoten zu erstellen und dem Dokument hinzuzufügen .quelle
document.body
ist auch kürzer zu tippen und schneller auszuführen alsdocument.getElementsByTagName("head")[0]
und vermeidet die browserübergreifenden Probleme von insertRule / addRule.document.head.appendChild
.document.body.appendChild(css);
Sie sicher, dass das neue CSS immer die letzte Regel ist.Die Lösung von Ben Blank würde in IE8 für mich nicht funktionieren.
Dies funktionierte jedoch in IE8
quelle
head
vor Einstellung.cssText
oder IE6-8 wird abstürzen , wenn dercssCode
eine enthält @ -Richtlinie, wie@import
oder@font-face
finden Sie in der Update phpied.com/dynamic-script-and-style-elements-in-ie und Stackoverflow .com / a / 7952904Hier ist eine leicht aktualisierte Version der Lösung von Chris Herring , die berücksichtigt, dass Sie sie auch verwenden können,
innerHTML
anstatt einen neuen Textknoten zu erstellen:quelle
head
vor Einstellung.cssText
oder IE6-8 wird abstürzen , wenn dercode
eine enthält @ -Richtlinie, wie@import
oder@font-face
finden Sie in der Update phpied.com/dynamic-script-and-style-elements-in-ie und Stackoverflow .com / a / 7952904Kürzester Einzeiler
quelle
Sie können Klassen oder Stilattribute Element für Element hinzufügen.
Beispielsweise:
Wo können Sie this.style.background, this.style.font-size usw. ausführen? Sie können einen Stil auch mit derselben Methode anwenden
Wenn Sie dies in einer Javascript-Funktion tun möchten, können Sie getElementByID anstelle von 'this' verwenden.
quelle
Dieses einfache Beispiel für das Hinzufügen
<style>
von HTML-KopfQuelle Dynamische Stil - Manipulation von CSS mit JavaScript
quelle
YUI hat kürzlich ein spezielles Dienstprogramm hinzugefügt . Siehe stylesheet.js hier.
quelle
Dies ist meine Lösung, um eine CSS-Regel am Ende der letzten Stylesheet-Liste hinzuzufügen:
quelle
Eine andere Option besteht darin, JQuery zu verwenden, um die Inline-Stileigenschaft des Elements zu speichern, an sie anzuhängen und dann die Stileigenschaft des Elements mit den neuen Werten zu aktualisieren. Wie folgt:
Führen Sie es dann mit den neuen CSS-Attributen als Objekt aus.
Dies ist möglicherweise nicht unbedingt die effizienteste Methode (ich bin offen für Vorschläge, wie dies verbessert werden kann. :)), aber es funktioniert definitiv.
quelle
Hier ist eine Beispielvorlage, die Ihnen den Einstieg erleichtert
Benötigt 0 Bibliotheken und verwendet nur Javascript, um sowohl HTML als auch CSS einzufügen.
Die Funktion wurde vom Benutzer @Husky oben ausgeliehen
Nützlich, wenn Sie ein Tampermonkey-Skript ausführen und einer Website ein Umschalt-Overlay hinzufügen möchten (z. B. eine Notiz-App).
quelle
Wenn Sie wissen, dass mindestens ein
<style>
Tag auf der Seite vorhanden ist, verwenden Sie diese Funktion:Verwendung :
quelle
Hier ist meine Allzweckfunktion, die den CSS-Selektor und die Regeln parametrisiert und optional einen CSS-Dateinamen (Groß- und Kleinschreibung beachten) verwendet, wenn Sie stattdessen einem bestimmten Blatt hinzufügen möchten (andernfalls, wenn Sie keinen CSS-Dateinamen angeben, diesen erstellt ein neues Stilelement und hängt es an den vorhandenen Kopf an. Es erstellt höchstens ein neues Stilelement und verwendet es bei zukünftigen Funktionsaufrufen wieder. Funktioniert mit FF, Chrome und IE9 + (möglicherweise auch früher, ungetestet).
quelle
Verwendung
.css
in Jquery wie$('strong').css('background','red');
quelle