Como você adiciona regras CSS (por exemplo strong { color: red }
) usando Javascript?
javascript
css
nickf
fonte
fonte
<strong>
elemento for adicionado ao documento.Respostas:
Você também pode fazer isso usando as interfaces CSS de nível 2 do DOM ( MDN ):
... com exceção de (naturalmente) IE8 e anterior, que usa sua própria expressão marginalmente diferente:
Há uma vantagem teórica nisso em comparação com o método createElement-set-innerHTML, pois você não precisa se preocupar em colocar caracteres HTML especiais no innerHTML, mas, na prática, os elementos de estilo são CDATA no HTML herdado e '<' e 'e' raramente são usados em folhas de estilo.
Você precisa de uma folha de estilo para poder anexá-la dessa maneira. Pode ser qualquer folha de estilo ativa existente: externa, incorporada ou vazia, não importa. Se não houver, a única maneira padrão de criá-lo no momento é com createElement.
fonte
sheet = window.document.styleSheets[0]
(você precisa ter pelo menos um <style type = "text / css"> </style> lá).SecurityError: The operation is insecure.
A abordagem simples e direta é criar e adicionar um novo
style
nó ao documento.fonte
document.body
também é mais curto para digitar e mais rápido para executar do quedocument.getElementsByTagName("head")[0]
evitar os problemas entre navegadores de insertRule / addRule.document.head.appendChild
.document.body.appendChild(css);
você, verifique se o novo CSS sempre é a última regra.A solução de Ben Blank não funcionaria no IE8 para mim.
No entanto, isso funcionou no IE8
fonte
head
antes de definir.cssText
, ou IE6-8 irá falhar se ocssCode
contém um @ -directive, como@import
ou@font-face
, consulte o Update para phpied.com/dynamic-script-and-style-elements-in-ie e stackoverflow .com / a / 7952904Aqui está uma versão ligeiramente atualizada da solução de Chris Herring , levando em consideração que você também pode usá-lo
innerHTML
em vez de criar um novo nó de texto:fonte
head
antes de definir.cssText
, ou IE6-8 irá falhar se ocode
contém um @ -directive, como@import
ou@font-face
, consulte o Update para phpied.com/dynamic-script-and-style-elements-in-ie e stackoverflow .com / a / 7952904Short One Liner
fonte
Você pode adicionar classes ou atributos de estilo, elemento a elemento.
Por exemplo:
Onde você pode fazer this.style.background, this.style.font-size, etc. Você também pode aplicar um estilo usando o mesmo método ala
Se você quiser fazer isso em uma função javascript, poderá usar getElementByID em vez de 'this'.
fonte
Este exemplo fácil de adicionar
<style>
na cabeça do htmlEstilo dinâmico de origem - manipulando CSS com JavaScript
fonte
A YUI recentemente adicionou um utilitário especificamente para isso. Veja stylesheet.js aqui.
fonte
Esta é a minha solução para adicionar uma regra css no final da última lista de folhas de estilos:
fonte
Outra opção é usar o JQuery para armazenar a propriedade de estilo em linha do elemento, anexá-lo e, em seguida, atualizar a propriedade de estilo do elemento com os novos valores. Do seguinte modo:
E, em seguida, execute-o com os novos atributos CSS como um objeto.
Esse pode não ser necessariamente o método mais eficiente (estou aberto a sugestões sobre como melhorar isso. :)), mas definitivamente funciona.
fonte
Aqui está um modelo de amostra para ajudar você a começar
Requer 0 bibliotecas e usa apenas javascript para injetar HTML e CSS.
A função foi emprestada do usuário @Husky acima
Útil se você deseja executar um script tampermonkey e deseja adicionar uma sobreposição de alternância em um site (por exemplo, um aplicativo de anotações, por exemplo)
fonte
se você souber pelo menos uma
<style>
tag na página, use esta função:uso:
fonte
Aqui está minha função de uso geral, que determina o seletor e as regras CSS e, opcionalmente, recebe um nome de arquivo css (diferencia maiúsculas de minúsculas) se você deseja adicionar a uma planilha específica (caso contrário, se você não fornecer um nome de arquivo CSS, ele criará um novo elemento de estilo e o anexará ao cabeçalho existente, criando no máximo um novo elemento de estilo e reutilizando-o em futuras chamadas de função). Funciona com FF, Chrome e IE9 + (talvez também anteriormente, não testado).
fonte
use
.css
no Jquery como$('strong').css('background','red');
fonte