Erstellen Sie zur Laufzeit eine CSS-Regel / Klasse mit jQuery
Normalerweise habe ich eine CSS-Datei, die die folgende Regel:
#my-window {
position: fixed;
z-index: 102;
display:none;
top:50%;
left:50%;
}
Wie kann ich vermeiden, solch eine statische CSS-Datei durch hinzufügen der CSS-Informationen während der Laufzeit Aktionen auf den Körper, oder etwas ähnliches? (nur mit jQuery)
Ich will definieren Sie es doch mal mit jQuery und verwenden Sie es viele Male später; das ist, warum ich nicht wollen, fügen Sie es zu jeder Zeit an den bestimmten DOM-elements.
Ich weiß, die einfache Funktionen (css("attr1", "value");
), aber wie kann ich erstellen ein vollständiges wiederverwendbare CSS-Regel?
InformationsquelleAutor der Frage stephan | 2009-07-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erstellen, die style-element und fügen Sie es in DOM
getestet auf Opera10 FF3.5 iE8, iE6
InformationsquelleAutor der Antwort Taras Bulba
Einfach
Bemerkt die Schrägstriche zurück? Sie werden verwendet, um die join-strings, die auf neuen Linien. Verlassen Sie aus, wird ein Fehler generiert.
InformationsquelleAutor der Antwort
können Sie anwenden, css und ein Objekt. So können Sie definieren Ihr Objekt in javascript so:
Und dann einfach anwenden, um alle Elemente, die Sie wollen
Damit es wiederverwendbar ist. Welchen Zweck würde Sie dies tun, wenn?
InformationsquelleAutor der Antwort Yuval Karmi
Können Sie insertRulewenn Sie nicht brauchen, um Unterstützung von IE < 9, nach dottoro. Es ist ein bisschen cross-browser-code dort auch.
InformationsquelleAutor der Antwort Sean
Hier ist ein jquery-plugin, das Ihnen erlaubt, um zu injizieren, CSS:
https://github.com/kajic/jquery-injectCSS
Beispiel:
InformationsquelleAutor der Antwort Robert Kajic
Wenn Sie nicht wollen, zu fest die CSS in eine CSS-block/- Datei, können Sie jQuery verwenden, um dynamisch hinzufügen von CSS -, HTML-Elemente, IDS und Klassen.
InformationsquelleAutor der Antwort Mike Trpcic
Dies ist nicht etwas neues, im Vergleich zu einigen der anderen Antworten, da Sie mit dem Konzept beschrieben hier und hieraber ich wollte die Verwendung der JSON-style-Deklaration:
Verwendung:
Ich bin mir nicht sicher, ob es deckt alle Funktionen von CSS, aber so weit es funktioniert für mich. Falls nicht, betrachten Sie es als Startpunkt für Ihre eigenen Bedürfnisse. 🙂
InformationsquelleAutor der Antwort sjngm
Beachten Sie, dass
jQuery().css()
nicht ändern, stylesheet-Regeln, es ändert nur den Stil jedes passende element.Statt, hier ist eine javascript-Funktion, die ich schrieb, ändern Sie die stylesheet-Regeln selbst.
Vorteile:
<head>
Skript vor der DOM-Elemente erstellt und damit vor dem ersten Rendern des Dokuments, die Vermeidung einer optisch-ärgerlich machen, dann berechnen, dann neu Rendern. Mit jQuery, Sie würde warten, bis die DOM-Elemente erstellt werden, dann re-style und re-render.jQuery(newElement).css()
Vorsichtsmaßnahmen:
s.cssRules
definiert, so dass Sie zurückgreifen, ums.rules
die hat einige Besonderheiten, solcher als sonderbar/buggy Verhalten im Zusammenhang mit Kommata getrennte Selektoren, wie"body, p"
. Wenn Sie vermeiden, diejenigen, die Sie vielleicht ok sein, die in älteren IE-Versionen ohne änderungen, aber ich habe es noch nicht getestet noch nicht."first, second"
ich.e das Trennzeichen ist ein Komma gefolgt von einem Leerzeichen.!important
modifier, ohne zu viel Mühe.Wenn Sie Lust haben, machen einige Verbesserungen zu dieser Funktion finden Sie einige nützliche API-docs hier:
https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet
InformationsquelleAutor der Antwort Craig
Hinzufügen von benutzerdefinierten Regeln ist nützlich, wenn Sie erstellen Sie ein jQuery-widget, das erfordert eine benutzerdefinierte CSS-Datei (wie die Ausweitung der bestehenden jQueryUI CSS-framework für Ihr widget). Diese Lösung baut auf Taras Antwort (die erste oben).
Vorausgesetzt, Ihr HTML-markup hat einen button mit der id "addrule" und ein div mit der id "Ziel" mit text:
jQuery-code:
Der Vorteil dieses Ansatzes ist, dass Sie wiederverwenden können variable cssrules in Ihrem code zu addieren oder zu subtrahieren Regeln. Wenn cssrules ist eingebettet in ein persistentes Objekt wie ein jQuery-widget, das Sie über eine permanente lokale variable, mit zu arbeiten.
InformationsquelleAutor der Antwort fbloggs
Was ist, wenn Sie dynamisch schrieb < script > - Abschnitt auf Ihrer Seite (mit Ihrer dynamischen Regeln), und dann verwendet, jQuerys .addClass( class ) hinzufügen, diese dynamisch erstellten Regeln?
Habe ich nicht ausprobiert, nur mit einer Theorie, die funktionieren könnte.
InformationsquelleAutor der Antwort Bryan Denny
In (ungewöhnlichen) Fällen, wo Sie wollen in der Lage sein, dynamisch zu ändern, die Stile oft-z.B. ein theme builder app -- hinzufügen <style> tags oder rufen CSSStyleSheet.insertRule() führt zu einer wachsenden stylesheet, die haben Leistung und design-debugging Auswirkungen.
Mein Ansatz erlaubt nur eine einzige Regel pro Selektor/Eigenschaft combo, beseitigen Sie alle vorhandenen auf die Setzung einer Regel. Die API ist einfach und flexibel:
Verwendung:
InformationsquelleAutor der Antwort Jason Boyd
Bisschen faul diese Frage beantworten, aber die folgenden Artikel helfen:
http://www.javascriptkit.com/dhtmltutors/externalcss3.shtml
Auch, geben Sie "ändern Sie die css-Regeln" in google
Nicht sicher, whatwould passiert, wenn man versucht, wickeln Sie ein Dokument.styleSheets[0] mit jQuery() obwohl man könnte es versuchen
InformationsquelleAutor der Antwort James Wiseman
Können Sie eine der cssRule plug-in. Der code war einfach dann:
Einer der Kommentare bisher gefragt, warum man das wollen würde, so etwas zu tun. Zum Beispiel das erstellen von Stilen für eine Liste, wo jedes Element muss eine eindeutige Hintergrundfarbe (zB. GCal ist die Liste der Kalender), wo die Anzahl der Spalten ist bis zur Laufzeit nicht bekannt.
InformationsquelleAutor der Antwort Robert Gowland
Hier ist ein setup gibt das Kommando über Farben mit diesem json-Objekt
diese Funktion
zur Herstellung dieses Stil-element
InformationsquelleAutor der Antwort Chris Glasier
wenn Sie don' t wollen, weisen Sie ein display:none, um eine css-Klasse, den richtigen Ansatz in Anhängen zu Stil, jQuery.Regel die Arbeit machen.
Ich einige Fälle, die Sie anwenden möchten stiles, bevor Sie die append-event des ajax content fade Inhalte nach Anhängen, und das ist es!
InformationsquelleAutor der Antwort Mattia
Hier haben Sie eine Funktion, um die vollständige definition einer CSS-Klasse:
InformationsquelleAutor der Antwort berniecc
Können Sie diese lib genannt cssobj
Können Sie jederzeit aktualisieren Sie Ihre Regeln wie diese:
Dann haben Sie die Regel geändert. jQuery ist nicht die lib dies zu tun.
InformationsquelleAutor der Antwort James Yang
Ich war Herumspielen mit einigen dieser vor kurzem und ich habe zwei verschiedene Vorgehensweisen beim Programmieren einer iPhone - /iPod-Website.
Ersten Weise stieß ich bei der Suche nach Orientierung ändert, so dass Sie sehen können, ob sich das Telefon im hoch-oder Querformat, dies ist eine sehr statische Weise, sondern einfach und clever:
CSS :
In der JS-Datei:
In PHP/HTML (Importieren Sie Ihre JS-Datei zuerst, dann im body-tag):
Diesem Grunde wählt eine andere pre-set CSS-block ausgeführt, je nach dem Ergebnis zurück gegeben aus der JS-Datei.
Auch die dynamischere Art, die ich bevorzugt war eine sehr einfache neben einem script-tag, oder Ihre JS-Datei:
Dies funktioniert für die meisten Browser, aber IE ist es am besten zu nehmen, es ist Munition mit etwas enger:
Oder verwenden Sie
getElementByClass()
zu ändern und eine Reihe von Gegenständen.Hoffe, das hilft!
Asche.
InformationsquelleAutor der Antwort Ash
Vielleicht können Sie die style-Informationen in einer separaten Klasse in der css-Datei, z.B.:
und dann die jQuery an der Stelle Ihrer Wahl, um dieses classname das element?
InformationsquelleAutor der Antwort JorenB
Könntest du einfach eine css-Klasse namens etwas wie .Feste-Objekt, das alle Ihre css...
Dann in jquery, Wann immer Sie wollen, etwas zu haben, dass Stil nur hinzufügen, dass Klasse...
Dass scheint, wie die einfachste Weg, es zu tun, es sei denn, ich bin Missverständnis, was getan werden muss.
InformationsquelleAutor der Antwort Sir David of Lee
Mithilfe .addClass() in jquery können wir dynamisch Stil hinzufügen, um Elemente auf der Seite.
zB. wir haben Stil
Sich jetzt im Status "bereit" von jquery können wir hinzufügen, css wie
.addClass(myStyle)
InformationsquelleAutor der Antwort Avinash