Normalmente, tenho um arquivo CSS com a seguinte regra:
#my-window {
position: fixed;
z-index: 102;
display:none;
top:50%;
left:50%;
}
Como evitar a criação de um arquivo CSS estático adicionando ao corpo as informações CSS durante as ações de tempo de execução, ou algo semelhante? (apenas usando jQuery)
Eu quero defini-lo uma vez, mas com jQuery e usá-lo muitas vezes depois; é por isso que não quero adicioná-lo sempre aos elementos DOM específicos.
Conheço os recursos simples ( css("attr1", "value");
), mas como posso criar uma regra CSS reutilizável completa?
body
. isto é,$("<style>...</style>").appendTo("body");
Simplesmente
Percebeu as barras traseiras? Eles são usados para unir strings que estão em novas linhas. Deixá-los de fora gera um erro.
fonte
você pode aplicar css a um objeto. Assim, você pode definir seu objeto em seu javascript da seguinte maneira:
E, em seguida, basta aplicá-lo a todos os elementos que você deseja
Portanto, é reutilizável. Para que finalidade você faria isso?
fonte
Você pode usar insertRule se não precisar dar suporte ao IE <9, de acordo com o dottoro . Também existe um pouco de código entre navegadores.
fonte
Aqui está um plugin jquery que permite injetar CSS:
https://github.com/kajic/jquery-injectCSS
Exemplo:
fonte
Isso não é novidade em comparação com algumas das outras respostas, pois usa o conceito descrito aqui e aqui , mas eu queria usar a declaração no estilo JSON:
Uso:
Não tenho certeza se ele cobre todos os recursos do CSS, mas até agora funciona para mim. Caso contrário, considere-o um ponto de partida para suas próprias necessidades. :)
fonte
Se você não deseja codificar o CSS em um bloco / arquivo CSS, é possível usar o jQuery para adicionar dinamicamente o CSS aos elementos, IDs e classes HTML.
fonte
Adicionar regras personalizadas é útil se você criar um widget jQuery que exija CSS personalizado (como estender a estrutura CSS jQueryUI existente para o seu widget em particular). Esta solução baseia-se na resposta de Taras (a primeira acima).
Supondo que sua marcação HTML tenha um botão com um ID de "addrule" e uma div com um ID de "target" contendo algum texto:
Código jQuery:
A vantagem dessa abordagem é que você pode reutilizar cssrules variáveis no seu código para adicionar ou subtrair regras à vontade. Se cssrules estiver incorporado em um objeto persistente, como um widget jQuery, você terá uma variável local persistente para trabalhar.
fonte
Observe que
jQuery().css()
não altera as regras da folha de estilo, apenas altera o estilo de cada elemento correspondente.Em vez disso, aqui está uma função javascript que escrevi para modificar as regras da folha de estilo.
Vantagens:
<head>
script antes da criação dos elementos DOM e, portanto, antes da primeira renderização do documento, evitando uma renderização visualmente irritante, depois computando e renderizando novamente. Com o jQuery, é necessário aguardar a criação dos elementos DOM, modificá-los e renderizá-los novamente.jQuery(newElement).css()
Ressalvas:
s.cssRules
definidas; portanto, elas voltarão as.rules
ter algumas peculiaridades, como comportamento de bugs / erros relacionados a seletores delimitados por vírgulas, como"body, p"
. Se você evitá-las, pode estar bem nas versões mais antigas do IE sem modificação, mas ainda não a testei."first, second"
ou seja, o delimitador é uma vírgula seguida por um caractere de espaço.!important
modificador sem muitos problemas.Se você quiser fazer algumas melhorias nessa função, encontrará alguns documentos úteis da API aqui: https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet
fonte
Nos casos (incomuns) em que você deseja alterar dinamicamente os estilos com frequência - por exemplo, um aplicativo construtor de temas - adicionar tags <style> ou chamar CSSStyleSheet.insertRule () resultará em uma folha de estilo crescente, que pode ter desempenho e design implicações de depuração.
Minha abordagem permite apenas uma única regra por combinação de seletor / propriedade, limpando qualquer existente ao definir qualquer regra. A API é simples e flexível:
Uso:
fonte
E se você escrevesse dinamicamente uma seção <script> em sua página (com suas regras dinâmicas) e usasse jQuerys .addClass (class) para adicionar essas regras criadas dinamicamente?
Eu não tentei isso, apenas oferecendo uma teoria que pode funcionar.
fonte
Um pouco preguiçoso, responda a isso, mas o seguinte artigo pode ajudar: http://www.javascriptkit.com/dhtmltutors/externalcss3.shtml
Além disso, tente digitar "modificar regras de css" no google
Não tenho certeza do que aconteceria se você tentasse quebrar um documento.styleSheets [0] com jQuery (), mas você poderia tentar
fonte
Você pode usar o plug-in cssRule . O código era simples então:
Até agora, um dos comentários perguntou por que alguém iria querer fazer uma coisa dessas. Por exemplo, a criação de estilos para uma lista em que cada item precisa de uma cor de plano de fundo distinta (por exemplo, lista de calendários do GCal) em que o número de colunas não é conhecido até o tempo de execução.
fonte
div:before{content:'name: ';}
Aqui está uma configuração que fornece comando sobre cores com este objeto json
esta função
para produzir esse elemento de estilo
fonte
se você não deseja atribuir uma exibição: none a uma classe css, a abordagem correta para acrescentar ao estilo, o jQuery.Rule faz o trabalho.
Em alguns casos, você deseja aplicar stiles antes do evento de acréscimo do conteúdo ajax e desaparecer após o acréscimo, e é isso!
fonte
Aqui você tem uma função para obter a definição completa de uma classe CSS:
fonte
Você pode usar esta lib chamada cssobj
A qualquer momento, você pode atualizar suas regras assim:
Então você mudou a regra. O jQuery não é a biblioteca que está fazendo isso.
fonte
Eu tenho mexido com isso recentemente e usei duas abordagens diferentes ao programar um site para iPhone / iPod.
A primeira maneira que me deparei ao procurar mudanças de orientação, para que você possa ver se o telefone é retrato ou paisagem, é uma maneira muito estática, mas simples e inteligente:
Em CSS:
No arquivo JS:
Em PHP / HTML (importe seu arquivo JS primeiro e depois na tag body):
Basicamente, isso escolhe um bloco CSS predefinido diferente para executar, dependendo do resultado retornado do arquivo JS.
Além disso, a maneira mais dinâmica que eu preferia era uma adição muito simples a uma tag de script ou seu arquivo JS:
Isso funciona para a maioria dos navegadores, mas para o IE é melhor remover a munição com algo mais apertado:
Ou você pode usar
getElementByClass()
e alterar uma variedade de itens.Espero que isto ajude!
Cinza.
fonte
Talvez você possa colocar as informações de estilo em uma classe separada no seu arquivo css, por exemplo:
e, em seguida, use jQuery no momento da sua escolha para adicionar esse nome de classe ao elemento?
fonte
Você pode apenas criar uma classe css chamada algo como .fixed-object que contém todo o seu css ...
Então, no jquery, sempre que você quiser que algo tenha esse estilo, basta adicionar essa classe a ele ...
Essa parece ser a maneira mais fácil de fazer isso, a menos que eu esteja entendendo mal o que você precisa fazer.
fonte
Usando .addClass () no jquery, podemos adicionar dinamicamente estilo aos elementos da página. por exemplo. nós temos estilo
Agora, no estado pronto de jquery, podemos adicionar css como .addClass (myStyle)
fonte