Estou tentando fazer um editor de css in-page ao vivo com uma função de visualização que recarregaria a folha de estilo e aplicaria sem precisar recarregar a página. Qual seria a melhor maneira de fazer isso?
javascript
css
stylesheet
reload
Stephen Belanger
fonte
fonte
Respostas:
Na página "editar", em vez de incluir seu CSS da maneira normal (com uma
<link>
tag), escreva tudo em uma<style>
tag. A edição dainnerHTML
propriedade de que atualizará automaticamente a página, mesmo sem uma viagem de ida e volta para o servidor.O Javascript, usando jQuery:
E deve ser isso!
Se você quiser ser realmente sofisticado, anexe a função à tecla pressionada na área de texto, embora você possa obter alguns efeitos colaterais indesejados (a página mudaria constantemente enquanto você digita)
Editar : testado e funciona (no Firefox 3.5, pelo menos, embora deva funcionar em outros navegadores). Veja a demonstração aqui: http://jsbin.com/owapi
fonte
innerHTML
para<style>
elementos (e<script>
).Possivelmente não se aplica à sua situação, mas aqui está a função jQuery que uso para recarregar folhas de estilo externas:
fonte
var links = document.getElementsByTagName("link"); for (var i = 0; i < links.length;i++) { var link = links[i]; if (link.rel === "stylesheet") {link.href += "?"; }}
Não há absolutamente nenhuma necessidade de usar jQuery para isso. A seguinte função JavaScript recarregará todos os seus arquivos CSS:
fonte
Confira o projeto snazzy da Vogue de Andrew Davey - http://aboutcode.net/vogue/
fonte
Uma versão mais curta em Vanilla JS e em uma linha:
Ou expandido:
fonte
Mais uma solução jQuery
Para uma única folha de estilo com id "css", tente o seguinte:
Envolva-o em uma função que possui scrope global e você pode usá-lo no console do desenvolvedor no Chrome ou Firebug no Firefox:
fonte
Com base em soluções anteriores, criei um favorito com código JavaScript:
Imagem do Firefox:
O que isso faz?
Ele recarrega o CSS adicionando parâmetros de string de consulta (como soluções acima):
fonte
Sim, recarregue a tag css. E lembre-se de tornar o novo url exclusivo (geralmente anexando um parâmetro de consulta aleatório). Eu tenho um código para fazer isso, mas não comigo agora. Editarei mais tarde ...
editar: tarde demais ... harto e nickf chegaram antes de mim ;-)
fonte
agora eu tenho isso:
faça qualquer elemento em sua página com id changeCss com um atributo href com o novo url css nele. e um elemento de link com o css inicial:
fonte
Outra resposta: há um bookmarklet chamado ReCSS . Eu não usei muito, mas parece funcionar.
Há um bookmarklet nessa página para arrastar e soltar em sua barra de endereço (não consigo fazer um aqui). Caso esteja quebrado, aqui está o código:
fonte
simples se você estiver usando php Basta acrescentar a hora atual no final do css como
Agora, toda vez que você recarrega o que quer que seja, o tempo muda e o navegador pensa que é um arquivo diferente, já que o último bit continua mudando ... Você pode fazer isso para qualquer arquivo e forçar o navegador a sempre atualizar usando a linguagem de script que você quiser
fonte
De maneira simples, você pode usar rel = "preload" em vez de rel = "stylesheet" .
fonte
rel="reload"
mas o exemplo dizrel="preload"
.Como essa pergunta foi mostrada no stackoverflow em 2019, gostaria de adicionar minha contribuição usando um JavaScript mais moderno.
Especificamente, para folhas de estilo CSS que não são embutidas - uma vez que já foi abordado na questão original, de alguma forma.
Em primeiro lugar, observe que ainda não temos objetos de folha de estilo construtíveis. No entanto, esperamos que eles sejam desembarcados em breve.
Nesse ínterim, presumindo o seguinte conteúdo HTML:
Poderíamos ter, em
index.js
:fonte