Ich habe die folgenden JavaScript-Variablen:
var fontsize = "12px"
var left= "200px"
var top= "100px"
Ich weiß, dass ich sie iterativ wie folgt auf mein Element setzen kann:
document.getElementById("myElement").style.top=top
document.getElementById("myElement").style.left=left
Ist es möglich, sie alle auf einmal zusammenzusetzen, so etwas?
document.getElementById("myElement").style = allMyStyle
javascript
coding-style
Mircea
quelle
quelle
allMyStyle
in Ihrem Beispiel? Am Anfang haben Sie eine Liste einzelner Variablen ...cssText
.Antworten:
Wenn Sie die CSS-Werte als Zeichenfolge haben und für das Element noch kein anderes CSS festgelegt ist (oder Sie sich nicht für das Überschreiben interessieren), verwenden Sie die
cssText
Eigenschaft :Dies ist in gewissem Sinne gut, da vermieden wird, dass das Element jedes Mal neu gestrichen wird, wenn Sie eine Eigenschaft ändern (Sie ändern sie alle irgendwie "auf einmal").
Auf der anderen Seite müssten Sie zuerst die Zeichenfolge erstellen.
quelle
display: block; position: absolute;
.Verwenden von Object.assign :
Auf diese Weise können Sie auch Stile zusammenführen, anstatt den CSS-Stil neu zu schreiben.
Sie können auch eine Verknüpfungsfunktion erstellen:
quelle
document.querySelector('html').style = Object.assign({}, document.querySelector('html').style, { color: 'red'})
aber nichts passiert.Object.assign(document.querySelector('html').style, { color: 'red' });
... Stellen Sie nur sicher, dass der Stil nicht in einem niedrigeren Element überschrieben wird. Dies ist sehr wahrscheinlich, wenn Sie es für dashtml
Element verwenden.@Mircea: Es ist sehr einfach, mehrere Stile für ein Element in einer einzelnen Anweisung festzulegen. Dies wirkt sich nicht auf die vorhandenen Eigenschaften aus und vermeidet die Komplexität von Loops oder Plugins.
VORSICHT: Wenn Sie diese Methode später zum Hinzufügen oder Ändern von Stileigenschaften verwenden, werden die vorherigen Eigenschaften, die mit 'setAttribute' festgelegt wurden, gelöscht.
quelle
removeAttribute
könnte für diejenigen nützlich sein, die daran denken könnten,setAttribute
den Stil zurückzusetzenErstellen Sie eine Funktion, um sich darum zu kümmern, und übergeben Sie die Parameter mit den Stilen, die Sie ändern möchten.
und nenne es so
Für die Werte der Eigenschaften im propertyObject können Sie Variablen verwenden.
quelle
Mit einer JavaScript-Bibliothek können Sie diese Dinge sehr einfach erledigen
jQuery
Objekt und eine For-in-Schleife
Oder eine viel elegantere Methode ist ein grundlegendes Objekt und eine for-Schleife
quelle
Legen Sie mehrere CSS-Stileigenschaften in Javascript fest
oder
Beispiel:
quelle
Ich bin gerade hier reingestolpert und verstehe nicht, warum so viel Code erforderlich ist, um dies zu erreichen.
Fügen Sie Ihren CSS-Code als Zeichenfolge hinzu.
quelle
Sie können einzelne Klassen in Ihren CSS-Dateien haben und dann Ihrem Element den Klassennamen zuweisen
oder Sie können die Eigenschaften von Stilen wie folgt durchlaufen:
quelle
Glaube nicht, dass es als solches möglich ist.
Sie können jedoch ein Objekt aus den Stildefinitionen erstellen und diese einfach durchlaufen.
Um sich weiterzuentwickeln, machen Sie eine Funktion dafür:
quelle
Mit einfachem Javascript können Sie nicht alle Stile gleichzeitig festlegen. Sie müssen für jede einzelne Zeile einzelne Zeilen verwenden.
Sie müssen den
document.getElementById(...).style.
Code jedoch nicht immer wieder wiederholen . Wenn Sie eine Objektvariable erstellen, um darauf zu verweisen, wird Ihr Code viel lesbarer:...etc. Viel einfacher zu lesen als Ihr Beispiel (und ehrlich gesagt genauso einfach zu lesen wie die jQuery-Alternative).
(Wenn Javascript richtig entworfen worden wäre, hätten Sie auch das
with
Schlüsselwort verwenden können, aber das sollte am besten in Ruhe gelassen werden, da es einige böse Namespace-Probleme verursachen kann.)quelle
cssText
.cssText
eignet sich gut zum Festlegen des Inline-Stylesheet-Werts. Wenn Sie jedoch auch Klassen haben oder nur einige, aber nicht alle Werte überschreiben möchten, kann die Verwendung recht schwierig seincssText
. Du hast also recht; Sie können es tun, aber ich würde für die meisten Anwendungsfälle dagegen empfehlen.obj.top
oderobj.style.color
legt nur den Inline-Stylesheet-Wert fest. Und ja, in meiner Antwort habe ich gesagt, dass man die Werte überschreiben würde ... es hängt vom Kontext ab, ob es nützlich ist oder nicht.Am besten erstellen Sie eine Funktion, mit der Sie Stile selbst festlegen können:
Beachten Sie, dass Sie weiterhin die Javascript-kompatiblen Eigenschaftsnamen verwenden müssen (daher
backgroundColor
)quelle
Siehe für .. in
Beispiel:
quelle
Dies ist ein alter Thread, daher habe ich für jeden, der nach einer modernen Antwort sucht, die Verwendung von Object.keys () vorgeschlagen.
quelle
Es gibt Szenarien, in denen die Verwendung von CSS neben Javascript bei einem solchen Problem möglicherweise sinnvoller ist. Sehen Sie sich den folgenden Code an:
Dies wechselt einfach zwischen CSS-Klassen und löst so viele Probleme im Zusammenhang mit überschreibenden Stilen. Es macht Ihren Code sogar aufgeräumter.
quelle
Sie können eine Funktion schreiben, mit der Deklarationen einzeln festgelegt werden, um vorhandene Deklarationen, die Sie nicht angeben, nicht zu überschreiben. Angenommen, Sie haben diese Objektparameterliste mit Deklarationen:
Sie könnten eine Funktion schreiben, die so aussieht:
Dies erfordert eine
element
und eineobject
Eigenschaftsliste von Stildeklarationen, die auf dieses Objekt angewendet werden sollen. Hier ist ein Anwendungsbeispiel:Code-Snippet anzeigen
quelle
Ich denke, dies ist ein sehr einfacher Weg in Bezug auf alle oben genannten Lösungen:
quelle
Verwenden Sie die
CSSStyleDeclaration.setProperty()
Methode innerhalbObject.entries
des Objekts of styles.Damit können wir auch die Priorität ("wichtig") für die CSS-Eigenschaft festlegen.
Wir werden CSS-Eigenschaftsnamen "Hypen-Case" verwenden.
quelle
Ist das unten stehende innerHtml gültig?
quelle
Mit ES6 + können Sie auch Backticks verwenden und das CSS sogar direkt von irgendwoher kopieren:
quelle
quelle
Wir können dem Node-Prototyp eine Styles-Funktion hinzufügen:
Rufen Sie dann einfach die Styles-Methode auf einem beliebigen Knoten auf:
Alle anderen vorhandenen Stile und Überschreibungswerte, die im Objektparameter vorhanden sind, bleiben erhalten.
quelle