Tengo las siguientes variables de JavaScript:
var fontsize = "12px"
var left= "200px"
var top= "100px"
Sé que puedo configurarlos en mi elemento de forma iterativa así:
document.getElementById("myElement").style.top=top
document.getElementById("myElement").style.left=left
¿Es posible ponerlos todos juntos a la vez, algo como esto?
document.getElementById("myElement").style = allMyStyle
javascript
coding-style
Mircea
fuente
fuente
allMyStyle
en tu ejemplo? Al principio tienes una lista de variables individuales ...cssText
.Respuestas:
Si tiene los valores CSS como cadena y no hay otro CSS ya establecido para el elemento (o no le importa sobrescribir), utilice la
cssText
propiedad :Esto es bueno en cierto sentido, ya que evita volver a pintar el elemento cada vez que cambia una propiedad (las cambia todas "de una vez" de alguna manera).
Por otro lado, primero tendría que construir la cadena.
fuente
display: block; position: absolute;
.Usando Object.assign :
Esto también le brinda la capacidad de fusionar estilos, en lugar de reescribir el estilo CSS.
También puede hacer una función de acceso directo:
fuente
document.querySelector('html').style = Object.assign({}, document.querySelector('html').style, { color: 'red'})
pero no pasa nada.Object.assign(document.querySelector('html').style, { color: 'red' });
... solo asegúrese de que el estilo no se sobrescriba en un elemento inferior. Esto es muy probable cuando se usa en elhtml
elemento.@Mircea: Es muy fácil configurar los múltiples estilos para un elemento en una sola declaración. No afecta las propiedades existentes y evita la complejidad de buscar bucles o complementos.
TENGA CUIDADO: si más adelante usa este método para agregar o alterar propiedades de estilo, se borrarán las propiedades anteriores establecidas mediante 'setAttribute'.
fuente
removeAttribute
podría ser útil para aquellos que estén pensando en usarsetAttribute
para restablecer el estiloHaga una función para cuidarlo y pase los parámetros con los estilos que desea cambiar.
y llamarlo así
para los valores de las propiedades dentro del objeto de propiedad puede usar variables.
fuente
Una biblioteca de JavaScript le permite hacer estas cosas muy fácilmente.
jQuery
Objeto y un for-in-loop
O, un método mucho más elegante es un objeto básico y for-loop
fuente
establecer múltiples propiedades de estilo CSS en Javascript
o
Ejemplo:
fuente
Acabo de tropezar aquí y no veo por qué se requiere tanto código para lograr esto.
Agregue su código CSS como una cadena.
fuente
Puede tener clases individuales en sus archivos css y luego asignar el nombre de clase a su elemento
o puede recorrer las propiedades de los estilos como:
fuente
No pienses que es posible como tal.
Pero podría crear un objeto a partir de las definiciones de estilo y simplemente recorrerlas.
Para desarrollar más, haga una función para ello:
fuente
Usando Javascript simple, no puede configurar todos los estilos a la vez; necesitas usar líneas individuales para cada una de ellas.
Sin embargo, no tiene que repetir el
document.getElementById(...).style.
código una y otra vez; cree una variable de objeto para hacer referencia a ella, y hará que su código sea mucho más legible:... etc. Mucho más fácil de leer que su ejemplo (y, francamente, tan fácil de leer como la alternativa jQuery).
(si Javascript se hubiera diseñado correctamente, también podría haber usado la
with
palabra clave, pero es mejor dejarlo solo, ya que puede causar algunos problemas desagradables en el espacio de nombres)fuente
cssText
.cssText
está bien para configurar el valor de la hoja de estilo en línea. Sin embargo, si también tiene clases, o si solo desea anular algunos valores pero no todos, puede ser bastante difícil de usarcssText
. Entonces tienes razón; puede hacerlo, pero lo recomendaría para la mayoría de los casos de uso.obj.top
oobj.style.color
también establece el valor de la hoja de estilo en línea. Y sí, en mi respuesta dije que uno sobrescribiría los valores ... depende del contexto si es útil o no.Su mejor opción puede ser crear una función que establezca estilos por su cuenta:
Tenga en cuenta que aún tendrá que usar los nombres de propiedad compatibles con javascript (por lo tanto
backgroundColor
)fuente
Ver para ... en
Ejemplo:
fuente
Este es un hilo viejo, así que pensé que para cualquiera que buscara una respuesta moderna, sugeriría usar Object.keys ();
fuente
Hay escenarios en los que usar CSS junto con javascript podría tener más sentido con este problema. Echa un vistazo al siguiente código:
Esto simplemente cambia entre clases CSS y resuelve muchos problemas relacionados con la anulación de estilos. Incluso hace que su código sea más ordenado.
fuente
Puede escribir una función que establezca declaraciones individualmente para no sobrescribir ninguna declaración existente que no proporcione. Digamos que tiene esta lista de declaraciones de parámetros de objeto:
Puede escribir una función que se vea así:
que toma una
element
y unaobject
lista de propiedades de declaraciones de estilo para aplicar a ese objeto. Aquí hay un ejemplo de uso:Mostrar fragmento de código
fuente
Creo que es una forma muy simple con respecto a todas las soluciones anteriores:
fuente
Utilice el
CSSStyleDeclaration.setProperty()
método dentroObject.entries
del objeto de estilos.También podemos establecer la prioridad ("importante") para la propiedad CSS con esto.
Usaremos nombres de propiedades CSS "hypen-case".
fuente
¿Es válido el siguiente innerHtml?
fuente
Con ES6 + puedes usar también backticks e incluso copiar el CSS directamente desde algún lugar:
fuente
fuente
Podemos agregar la función de estilos al prototipo de nodo:
Luego, simplemente llame al método de estilos en cualquier nodo:
Conservará cualquier otro estilo existente y sobrescribirá los valores presentes en el parámetro del objeto.
fuente