J'ai les variables JavaScript suivantes:
var fontsize = "12px"
var left= "200px"
var top= "100px"
Je sais que je peux les définir sur mon élément de manière itérative comme ceci:
document.getElementById("myElement").style.top=top
document.getElementById("myElement").style.left=left
Est-il possible de les mettre tous ensemble à la fois, quelque chose comme ça?
document.getElementById("myElement").style = allMyStyle
javascript
coding-style
Mircea
la source
la source
allMyStyle
dans votre exemple? Au début, vous avez une liste de variables uniques ...cssText
.Réponses:
Si vous avez les valeurs CSS sous forme de chaîne et qu'aucun autre CSS n'est déjà défini pour l'élément (ou que vous ne vous souciez pas de l'écrasement), utilisez la
cssText
propriété :C'est bien dans un sens car cela évite de repeindre l'élément à chaque fois que vous modifiez une propriété (vous les changez tous "à la fois" d'une manière ou d'une autre).
De l'autre côté, vous devrez d'abord créer la chaîne.
la source
display: block; position: absolute;
.En utilisant Object.assign :
Cela vous donne également la possibilité de fusionner les styles, au lieu de réécrire le style CSS.
Vous pouvez également créer une fonction de raccourci:
la source
document.querySelector('html').style = Object.assign({}, document.querySelector('html').style, { color: 'red'})
mais rien ne se passe.Object.assign(document.querySelector('html').style, { color: 'red' });
... Assurez-vous simplement que le style n'est pas écrasé dans un élément inférieur. Ceci est très probable lors de son utilisation sur l'html
élément.@Mircea: Il est très facile de définir les styles multiples pour un élément dans une seule instruction. Cela n'affecte pas les propriétés existantes et évite la complexité des boucles ou des plugins.
ATTENTION: si, plus tard, vous utilisez cette méthode pour ajouter ou modifier des propriétés de style, les propriétés précédentes définies à l'aide de 'setAttribute' seront effacées.
la source
removeAttribute
pourrait être utile pour ceux qui pourraient envisager d'utilisersetAttribute
pour réinitialiser le styleCréez une fonction pour vous en occuper et transmettez-lui les paramètres avec les styles que vous souhaitez modifier.
et appelle ça comme ça
pour les valeurs des propriétés à l'intérieur de propertyObject, vous pouvez utiliser des variables.
la source
Une bibliothèque JavaScript vous permet de faire ces choses très facilement
jQuery
Objet et une boucle for-in
Ou, une méthode beaucoup plus élégante est un objet de base et une boucle for
la source
définir plusieurs propriétés de style css en Javascript
ou
Exemple:
la source
Je viens de trébucher ici et je ne vois pas pourquoi il faut tant de code pour y parvenir.
Ajoutez votre code CSS sous forme de chaîne.
la source
Vous pouvez avoir des classes individuelles dans vos fichiers css, puis attribuer le nom de classe à votre élément
ou vous pouvez parcourir les propriétés des styles comme -
la source
Ne pensez pas que c'est possible en tant que tel.
Mais vous pouvez créer un objet à partir des définitions de style et simplement les parcourir en boucle.
Pour développer davantage, faites-lui une fonction:
la source
En utilisant du Javascript brut, vous ne pouvez pas définir tous les styles à la fois; vous devez utiliser des lignes uniques pour chacun d'eux.
Cependant, vous n'avez pas à répéter le
document.getElementById(...).style.
code encore et encore; créez une variable objet pour la référencer, et vous rendrez votre code beaucoup plus lisible:...etc. Beaucoup plus facile à lire que votre exemple (et franchement, tout aussi facile à lire que l'alternative jQuery).
(si Javascript avait été conçu correctement, vous auriez pu également utiliser le
with
mot - clé, mais il vaut mieux le laisser seul, car cela peut causer des problèmes d'espace de noms désagréables)la source
cssText
.cssText
convient pour définir la valeur de la feuille de style en ligne. Cependant, si vous avez aussi des classes, ou si vous ne voulez remplacer que certaines valeurs mais pas toutes, cela peut être assez difficile à utilisercssText
. Alors vous avez raison; vous pouvez le faire, mais je vous le déconseille pour la plupart des cas d'utilisation.obj.top
ouobj.style.color
définit également la valeur de la feuille de style en ligne. Et oui, dans ma réponse j'ai dit qu'on écraserait les valeurs ... ça dépend du contexte si c'est utile ou pas.Votre meilleur pari peut être de créer une fonction qui définit vous-même les styles:
Notez que vous devrez toujours utiliser les noms de propriétés compatibles javascript (d'où
backgroundColor
)la source
Voir pour .. dans
Exemple:
la source
C'est un vieux fil, donc j'ai pensé que pour tous ceux qui recherchent une réponse moderne, je suggérerais d'utiliser Object.keys ();
la source
Il existe des scénarios où l'utilisation de CSS avec javascript pourrait avoir plus de sens avec un tel problème. Jetez un œil au code suivant:
Cela bascule simplement entre les classes CSS et résout de nombreux problèmes liés aux styles de remplacement. Cela rend même votre code plus ordonné.
la source
Vous pouvez écrire une fonction qui définira les déclarations individuellement afin de ne pas écraser les déclarations existantes que vous ne fournissez pas. Disons que vous avez cette liste de paramètres d'objet de déclarations:
Vous pourriez écrire une fonction qui ressemble à ceci:
qui prend une
element
et uneobject
liste de propriétés de déclarations de style à appliquer à cet objet. Voici un exemple d'utilisation:Afficher l'extrait de code
la source
Je pense que c'est un moyen très simple en ce qui concerne toutes les solutions ci-dessus:
la source
Utilisez la
CSSStyleDeclaration.setProperty()
méthode à l'intérieur de l'Object.entries
objet de styles.Nous pouvons également définir la priorité ("important") pour la propriété CSS avec ceci.
Nous utiliserons des noms de propriétés CSS "hypen-case".
la source
Le fichier innerHtml ci-dessous est-il valide?
la source
Avec ES6 +, vous pouvez également utiliser des backticks et même copier le css directement de quelque part:
la source
la source
Nous pouvons ajouter une fonction de styles au prototype Node:
Ensuite, appelez simplement la méthode styles sur n'importe quel nœud:
Il conservera tous les autres styles existants et écrasera les valeurs présentes dans le paramètre d'objet.
la source