Tenho certeza de que isso deve ter sido mencionado / solicitado antes, mas tenho procurado uma idade sem sorte, minha terminologia deve estar errada!
Lembro-me vagamente de um tweet que vi há algum tempo sugerindo que havia uma regra css disponível que removeria qualquer estilo definido anteriormente na folha de estilo para um elemento específico.
Um bom exemplo de uso pode estar em um site RWD para dispositivos móveis, onde grande parte do estilo usado para um elemento específico nas exibições de tela pequena precisa ser "redefinido" ou removido para o mesmo elemento na exibição da área de trabalho.
Uma regra css que poderia alcançar algo como:
.element {
all: none;
}
Exemplo de uso:
/* mobile first */
.element {
margin: 0 10;
transform: translate3d(0, 0, 0);
z-index: 50;
display: block;
etc..
etc..
}
@media only screen and (min-width: 980px) {
.element {
all: none;
}
}
Assim, poderíamos remover ou redefinir rapidamente o estilo sem precisar declarar todas as propriedades.
Faz sentido?
all
que está sendo proposto para redefinir todas as propriedades CSS para um determinado elemento para certos valores de todo o CSS - o valor que deseja usar seriaunset
, que redefine a propriedade, quer o seu valor herdado se herda por padrão, ou caso contrário, seu valor inicial. Nenhuma palavra sobre implementação, mas é bom saber que alguém já pensou nisso.all: revert
vai fazer. Veja minha resposta. @CBroe Sim, uma coisa dessas existe agora.Respostas:
A palavra-chave CSS3
initial
define a propriedade CSS3 para o valor inicial, conforme definido na especificação . Ainitial
palavra-chave possui amplo suporte ao navegador exceto para as famílias IE e Opera Mini.Como a falta de suporte do IE pode causar problemas, aqui estão algumas das maneiras de redefinir algumas propriedades CSS para seus valores iniciais:
Conforme mencionado em um comentário de @ user566245:
[POST EDIT 4 DE FEVEREIRO DE 1917] Votado por se tornar uma norma moderna, usuário Joost
EXEMPLO DA W3
JAVASCRIPT?
Ninguém pensou em outro senão css para redefinir css? Sim?
Existe esse recorte totalmente relevante: https://stackoverflow.com/a/14791113/845310
respondeu Feb 9 '13 às 20:15 por VisioN
Com tudo isso dito; Eu não acho que uma redefinição de css é algo viável, a menos que acabemos com apenas um navegador da web ... se o 'padrão' for definido pelo navegador no final.
Para comparação, aqui está a lista de valores do Firefox 40.0 para uma
<blockquote style="all: unset;font-style: oblique">
localizaçãofont-style: oblique
DOM que aciona a operação.fonte
Para futuros leitores. Eu acho que foi isso que queria dizer, mas atualmente não é realmente suportado (veja abaixo):
fonte
all
.all
como em consideração . Uma versão futura do Edge pode muito bem suportá-lo.#someselector { ... * { all: unset; } ... }
é no Sass. Você não mencionou o Sass aqui - isso é algo novo no CSS3? A pesquisa por "CSS aninhado" me fornece tutoriais básicos e informações sobre o Sass. Adicionar a... * { ... } ...
parte aninhada ao meu CSS (em HTML5) interrompe meu documento (meus elementos filhos assumem o estilo que eu queria aplicar ao pai).Há uma nova solução encontrada para esse problema.
Use
all: revert
ouall: unset
.Do MDN:
Portanto, se o elemento tiver um nome de classe como
remove-all-styles
:Por exemplo:
HTML:
Com CSS:
Irá repor todos os estilos aplicados por
other-class
,another-class
e todos os outros herdado e aplicado estilos ao quediv
.Ou no seu caso:
Vai fazer.
Clique aqui para saber a diferença entre estilos de autor, usuário e agente de usuário.
Por exemplo: se quisermos isolar widgets / componentes incorporados dos estilos da página que os contém , poderíamos escrever:
O que reverterá todos
author styles
(ou seja, CSS do desenvolvedor) parauser styles
(estilos que um usuário do nosso site define - cenário menos provável) ou para osuser-agent
próprios estilos se nenhum estilo de usuário estiver definido.Mais detalhes aqui: https://developer.mozilla.org/en-US/docs/Web/CSS/revert
E o único problema é o suporte : somente o Safari 9.1 e o iOS Safari 9.3 têm suporte para
revert
valor no momento da redação.Então, vou dizer que use esse estilo e faça o fallback para outras respostas.
fonte
all: initial
eall: unset
funcionou para mim no MS Edge 16).Deixe-me responder a essa pergunta completamente, porque tem sido uma fonte de dor para mim há vários anos e muito poucas pessoas realmente entendem o problema e por que é importante que ele seja resolvido. Se eu fosse responsável pelas especificações CSS, ficaria constrangido, francamente, por não ter abordado isso na última década.
O problema
Você precisa inserir a marcação em um documento HTML, e ele precisa ter uma aparência específica. Além disso, você não possui este documento, portanto não pode alterar as regras de estilo existentes. Você não tem idéia do que poderiam ser as folhas de estilo ou para o que elas podem mudar.
Os casos de uso são quando você fornece um componente que pode ser exibido para sites desconhecidos de terceiros. Exemplos disso seriam:
Correção mais simples
Coloque tudo em um iframe. Isso tem seu próprio conjunto de limitações:
Se o seu conteúdo pode caber em uma caixa, você pode contornar o problema nº 1 fazendo com que ele escreva um iframe e defina explicitamente o conteúdo, contornando o problema, pois o iframe e o documento compartilharão o mesmo domínio.
Solução CSS
Procurei em toda a parte a solução para isso, mas infelizmente não há nenhuma. O melhor que você pode fazer é substituir explicitamente todas as propriedades possíveis que podem ser substituídas e substituí-las pelo que você pensa deveria ser.
Mesmo quando você substitui, não há como garantir que uma regra CSS mais direcionada não substitua a sua . O melhor que você pode fazer aqui é ter as regras de substituição como o mais especificamente possível e esperar que o documento pai não seja o melhor acidentalmente: use um ID obscuro ou aleatório no elemento pai do seu conteúdo e use! Important em todas as definições de valor de propriedade .
fonte
p { color: blue}
não será reset)outras maneiras:
1) inclua o código css (arquivo) do Yahoo CSS reset e coloque tudo dentro deste DIV:
2) ou use
fonte
Não recomendo usar a resposta que foi marcada como correta aqui. É uma enorme bolha de CSS que tenta cobrir tudo.
Sugiro que você avalie como remover o estilo de um elemento em uma base por caso.
Digamos que, para fins de SEO, você precise incluir um H1 em uma página que não tenha um cabeçalho real no design. Você pode querer tornar o link de navegação dessa página um H1, mas é claro que não deseja que o link de navegação seja exibido como um H1 gigante na página.
O que você deve fazer é agrupar esse elemento em uma tag h1 e inspecioná-lo. Veja quais estilos CSS estão sendo aplicados especificamente ao elemento h1.
Digamos que eu veja os seguintes estilos aplicados ao elemento.
Agora você precisa apontar o estilo exato que é aplicado ao H1 e desmarcá-lo em uma classe css. Isso seria algo como o seguinte:
Isso é muito mais limpo e não apenas despeja um blob aleatório de código em seu css, que você não sabe o que está realmente fazendo.
Agora você pode adicionar esta classe ao seu h1
fonte
Se você estiver usando sass em um sistema de compilação, uma maneira de fazer isso que funcionará em todos os principais navegadores é agrupar todas as suas importações de estilo com um seletor:: not () assim ...
Em seguida, você pode usar a classe desativar em um contêiner e o sub-conteúdo não terá nenhum dos seus estilos.
É claro que todos os seus estilos agora serão anexados com o seletor: not (), por isso é um pouco fugaz, mas funciona bem.
fonte
Você mencionou sites para dispositivos móveis primeiro ... Para um design responsivo, certamente é possível substituir estilos de tela pequena por estilos de tela grande. Mas você pode não precisar.
Tente o seguinte:
Essas consultas de mídia não se sobrepõem, portanto, suas regras não se substituem. Isso facilita a manutenção de cada conjunto de estilos separadamente.
fonte
MELHOR SOLUÇÃO
Faça o download da folha de estilo "copiar / colar" para redefinir as propriedades css para o padrão (estilo UA):
https://github.com/monmomo04/resetCss.git
Obrigado @ Milche Patern!
Link útil:Eu estava realmente procurando por valor de propriedades de estilo de redefinição / padrão. Minha primeira tentativa foi copiar o valor calculado da ferramenta Dev do navegador do elemento raiz (html). Mas, como calculado, teria parecido / funcionado de maneira diferente em todos os sistemas.
Para aqueles que encontram uma falha no navegador ao tentar usar o asterisco * para redefinir o estilo dos elementos filhos, e como eu sabia que não funcionava para você, substituí o asterisco "*" por todo o nome das tags HTML . O navegador não travou; Estou no Chrome versão 46.0.2490.71 m.
Por fim, é bom mencionar que essas propriedades redefinirão o estilo para o estilo padrão do elemento raiz mais alto, mas não para o valor inicial de cada elemento HTML. Então, para corrigir isso, peguei os estilos "user-agent" do navegador baseado em webkit e o implementei na classe "reset-this".
Faça o download da folha de estilo "copiar / colar" para redefinir as propriedades css para o padrão (estilo UA):
https://github.com/monmomo04/resetCss.git
Estilo de agente do usuário:
CSS padrão dos navegadores para elementos HTML
http://trac.webkit.org/browser/trunk/Source/WebCore/css/html.css
Especificação de CSS (preste atenção à especificação):
https://css-tricks.com/specifics-on-css-specificity/
https://github.com/monmomo04/resetCss.git
fonte
No meu cenário específico, eu queria pular a aplicação de estilos comuns a uma parte específica da página, melhor ilustrada desta forma:
Depois de mexer com a redefinição do CSS, que não trouxe muito sucesso (principalmente por causa da precedência das regras e da hierarquia complexa da folha de estilo), trouxe o jQuery onipresente para o resgate, que fez o trabalho muito rápida e razoavelmente sujo:
(Agora diga como é ruim usar JS para lidar com CSS :-))
fonte
Para aqueles que tentam descobrir como realmente remover o estilo apenas do elemento, sem remover o css dos arquivos, esta solução funciona com o jquery:
fonte
se você definir seu CSS dentro de classes, poderá removê-los facilmente usando o método jQuery removeClass (). O código abaixo remove a classe .element:
Se nenhum parâmetro for especificado, esse método removerá TODOS os nomes de classe dos elementos selecionados.
fonte
Não, isso é apenas uma questão de gerenciar melhor sua estrutura css.
No seu caso, eu pediria o meu css algo como isto:
Apenas experimente.
fonte
Alguma chance de você procurar a regra! Important? Não desfaz todas as declarações, mas fornece uma maneira de substituí-las.
"Quando uma regra! Importante é usada em uma declaração de estilo, essa declaração substitui qualquer outra declaração feita no CSS, onde quer que esteja na lista de declarações. Embora!! Importante não tenha nada a ver com especificidade."
https://developer.mozilla.org/en-US/docs/CSS/Specificity#The_!important_exception
fonte