Respuestas:
Uso element.style
:
var element = document.createElement('select');
element.style.width = "100px";
Solo configura el style
:
var menu = document.createElement("select");
menu.style.width = "100px";
O si lo desea, puede usar jQuery :
$(menu).css("width", "100px");
:)
Para la mayoría de los estilos, haga esto:
var obj = document.createElement('select');
obj.style.width= "100px";
Para los estilos que tienen guiones en el nombre, haga esto:
var obj = document.createElement('select');
obj.style["-webkit-background-size"] = "100px"
Eso es realmente bastante simple con JavaScript vainilla:
menu.style.width = "100px";
Todas las respuestas le dicen correctamente cómo hacer lo que pidió, pero le recomendaría usar JavaScript para establecer una clase en el elemento y darle estilo mediante CSS. De esa manera, mantienes la separación correcta entre comportamiento y estilo.
Imagínese si tiene un diseñador para cambiar el estilo del sitio ... ellos deberían poder trabajar puramente en CSS sin tener que trabajar con su JavaScript.
En prototipo haría:
$(newElement).addClassName('blah')
$(selector).addClass('blah')
Solo para personas que quieren hacer lo mismo en 2018
Puede asignar una propiedad personalizada de CSS a su elemento (a través de CSS o JS) y cambiarlo:
Asignación a través de CSS:
element {
--element-width: 300px;
width: var(--element-width, 100%);
}
Asignación a través de JS
ELEMENT.style.setProperty('--element-width', NEW_VALUE);
Obtenga valor de la propiedad a través de JS
ELEMENT.style.getPropertyValue('--element-width');
Aquí enlaces útiles:
Al depurar, me gusta poder agregar un montón de atributos css en una línea:
menu.style.cssText = 'width: 100px';
Acostumbrándose a este estilo, puede agregar un montón de CSS en una línea de esta manera:
menu.style.cssText = 'width: 100px; height: 100px; background: #afafaf';
<h1>Silence and Smile</h1>
<input type="button" value="Show Red" onclick="document.getElementById('h1').style.color='Red'"/>
<input type="button" value="Show Green" onclick="document.getElementById('h1').style.color='Green'"/>
<body>
<h1 id="h1">Silence and Smile</h1><br />
<h3 id="h3">Silence and Smile</h3>
<script type="text/javascript">
document.getElementById("h1").style.color = "Red";
document.getElementById("h1").style.background = "Green";
document.getElementById("h3").style.fontSize = "larger" ;
document.getElementById("h3").style.fontFamily = "Arial";
</script>
</body>
Esto funciona bien con la mayoría de las propiedades CSS si no hay guiones en ellas.
var element = document.createElement('select');
element.style.width = "100px";
Para las propiedades con guiones en ellas max-width
, como , debe convertir el sausage-case
acamelCase
var element = document.createElement('select');
element.style.maxWidth = "100px";
Es importante comprender que el siguiente código no cambia la hoja de estilo, sino que cambia el DOM:
document.getElementById("p2").style.color = "blue";
El DOM almacena un valor calculado de las propiedades del elemento de la hoja de estilo, y cuando cambia dinámicamente un estilo de elementos usando Javascript, está cambiando el DOM. Es importante tener esto en cuenta y comprenderlo porque la forma en que escribe su código puede afectar su dinámica. Si intenta obtener valores que no se escribieron directamente en el elemento en sí, así ...
let elem = document.getElementById('some-element');
let propertyValue = elem.style['some-property'];
... devolverá un valor indefinido que se almacenará en la variable 'propertyValue' del ejemplo de código. Si está trabajando para obtener y establecer propiedades que se escribieron dentro de una hoja de estilo CSS y desea una SINGLE FUNCTION que obtenga, así como establecer valores de propiedades de estilo en esta situación, que es una situación muy común, entonces tienes que usar JQuery.
$(selector).css(property,value)
El único inconveniente es que debes conocer JQuery, pero esta es honestamente una de las muchas buenas razones por las que todo desarrollador de Javascript debería aprender JQuery. Si desea obtener una propiedad CSS que se calculó a partir de una hoja de estilo en JavaScript puro, debe usarla.
function getCssProp(){
let ele = document.getElementById("test");
let cssProp = window.getComputedStyle(ele,null).getPropertyValue("width");
}
La desventaja de este método es que el método getComputedValue solo obtiene, no se establece. La opinión de Mozilla sobre los valores calculados Este enlace profundiza más sobre lo que he abordado aquí. ¡¡¡Espero que esto ayude a alguien!!!
-webkit-background-size
? ¿Hay alguna manera de configurarlos con js simples o tenemos que usar jQuery?