Eu tenho as seguintes variáveis JavaScript:
var fontsize = "12px"
var left= "200px"
var top= "100px"
Eu sei que posso configurá-los para o meu elemento iterativamente assim:
document.getElementById("myElement").style.top=top
document.getElementById("myElement").style.left=left
É possível reuni-los todos de uma vez, algo assim?
document.getElementById("myElement").style = allMyStyle
javascript
coding-style
Mircea
fonte
fonte
allMyStyle
estaria no seu exemplo? No começo você tem uma lista de variáveis únicas ...cssText
.Respostas:
Se você tiver os valores CSS como string e ainda não houver outro CSS definido para o elemento (ou você não se importa com a substituição), use a
cssText
propriedade :Isso é bom em certo sentido, pois evita repintar o elemento toda vez que você altera uma propriedade (você altera todos eles "de uma só vez" de alguma forma).
Por outro lado, você teria que construir a string primeiro.
fonte
display: block; position: absolute;
.Usando Object.assign :
Isso também permite mesclar estilos, em vez de reescrever o estilo CSS.
Você também pode criar uma função de atalho:
fonte
document.querySelector('html').style = Object.assign({}, document.querySelector('html').style, { color: 'red'})
mas nada acontece.Object.assign(document.querySelector('html').style, { color: 'red' });
... Apenas verifique se o estilo não é sobrescrito em um elemento inferior. Isso é muito provável quando usado nohtml
elemento.@ Mircea: É muito fácil definir os vários estilos para um elemento em uma única declaração. Não afeta as propriedades existentes e evita a complexidade de ir para loops ou plugins.
CUIDADO: Se, posteriormente, você usar esse método para adicionar ou alterar propriedades de estilo, as propriedades anteriores definidas usando 'setAttribute' serão apagadas.
fonte
removeAttribute
pode vir a calhar para aqueles que possam estar pensando em usarsetAttribute
para redefinir o estiloCrie uma função para cuidar dela e passe parâmetros com os estilos que você deseja alterar.
e chame assim
para os valores das propriedades dentro do propertyObject, você pode usar variáveis.
fonte
Uma biblioteca JavaScript permite que você faça essas coisas com muita facilidade
jQuery
Objeto e um for-in-loop
Ou, um método muito mais elegante é um objeto básico e um loop for
fonte
definir várias propriedades de estilo css em Javascript
ou
Exemplo:
fonte
Apenas entrei aqui e não vejo por que há tanto código necessário para conseguir isso.
Adicione seu código CSS como uma string.
fonte
Você pode ter classes individuais em seus arquivos css e atribuir o nome da classe ao seu elemento
ou você pode percorrer propriedades de estilos como -
fonte
Não pense que é possível como tal.
Mas você pode criar um objeto a partir das definições de estilo e apenas percorrê-las.
Para desenvolver ainda mais, faça uma função para isso:
fonte
Usando Javascript simples, você não pode definir todos os estilos de uma só vez; você precisa usar linhas únicas para cada uma delas.
No entanto, você não precisa repetir o
document.getElementById(...).style.
código repetidamente; crie uma variável de objeto para fazer referência a ela, e você tornará seu código muito mais legível:... etc Muito mais fácil de ler do que o seu exemplo (e, francamente, tão fácil de ler quanto a alternativa do jQuery).
(se o Javascript tiver sido projetado corretamente, você também poderá ter usado a
with
palavra - chave, mas é melhor deixar em branco, pois isso pode causar alguns problemas desagradáveis no espaço para nome)fonte
cssText
.cssText
é bom para definir o valor da folha de estilo em linha. No entanto, se você também tem classes, ou se deseja substituir apenas alguns valores, mas não todos, pode ser muito difícil de usarcssText
. Então você está certo; você pode fazer isso, mas eu recomendaria isso na maioria dos casos de uso.obj.top
ouobj.style.color
também justs define o valor da folha de estilo em linha. E sim, na minha resposta eu disse que se sobrescreveria os valores ... depende do contexto se é útil ou não.Sua melhor aposta pode ser criar uma função que defina estilos por conta própria:
Observe que você ainda precisará usar os nomes de propriedades compatíveis com javascript (portanto
backgroundColor
)fonte
Veja para .. em
Exemplo:
fonte
Este é um tópico antigo, então, para quem procura uma resposta moderna, sugiro usar Object.keys ();
fonte
Existem cenários em que o uso de CSS ao lado de javascript pode fazer mais sentido com esse problema. Dê uma olhada no seguinte código:
Isso simplesmente alterna entre classes CSS e resolve muitos problemas relacionados a estilos de substituição. Ele ainda torna seu código mais organizado.
fonte
Você pode escrever uma função que definirá declarações individualmente para não sobrescrever nenhuma declaração existente que você não forneça. Digamos que você tenha esta lista de parâmetros do objeto de declarações:
Você pode escrever uma função que se parece com isso:
que usa uma
element
e umaobject
lista de propriedades de declarações de estilo para aplicar a esse objeto. Aqui está um exemplo de uso:Mostrar snippet de código
fonte
Eu acho que é uma maneira muito simples com relação a todas as soluções acima:
fonte
Use o
CSSStyleDeclaration.setProperty()
método dentroObject.entries
do objeto de estilos.Também podemos definir a prioridade ("importante") da propriedade CSS com isso.
Usaremos nomes de propriedades CSS "hypen-case".
fonte
O innerHtml abaixo é válido
fonte
Com o ES6 +, você também pode usar backticks e até copiar o css diretamente de algum lugar:
fonte
fonte
Podemos adicionar a função de estilos ao protótipo do Node:
Em seguida, basta chamar o método de estilos em qualquer Nó:
Ele preservará qualquer outro estilo existente e substituirá os valores presentes no parâmetro do objeto.
fonte