É possível substituir a propriedade display pelo seu valor padrão? Por exemplo, se eu defini-lo como none em um estilo e quero substituí-lo de um modo diferente pelo seu padrão.
Ou é a única maneira de descobrir qual é o padrão desse elemento e configurá-lo para isso? Gostaria de não precisar saber se o elemento geralmente é bloco, em linha ou o que for ...
unset
.unset
,initial
,inherit
,revert
Respostas:
Os estilos padrão de um navegador são definidos em sua folha de estilo do agente do usuário, cujas fontes você pode encontrar aqui . Infelizmente, as especificações de nível 3 em cascata e herança não parecem propor uma maneira de redefinir uma propriedade de estilo para o padrão do navegador. No entanto, há planos de reintroduzir uma palavra-chave para isso no nível 4 em cascata e herança - o grupo de trabalho simplesmente ainda não definiu um nome para essa palavra-chave (o link diz atualmente
revert
, mas não é final). Informações sobre o suporte ao navegadorrevert
podem ser encontradas em caniuse.com .Embora a especificação do nível 3 introduza uma
initial
palavra - chave , a configuração de uma propriedade como seu valor inicial redefine-a para seu valor padrão, conforme definido pelo CSS , não como definido pelo navegador . O valor inicial dedisplay
éinline
; isso é especificado aqui . Ainitial
palavra-chave refere-se a esse valor, não ao padrão do navegador. A própria especificação faz esta anotação sob aall
propriedade :Então, acho que a única maneira agora de usar CSS puro é procurar o valor padrão do navegador e configurá-lo manualmente para isso:
(Uma alternativa ao acima seria
div.foo:not(.bar) { display: inline-block; }
, mas isso envolve modificar o seletor original em vez de substituir.)fonte
initial
realmente faz. Eu atualizei minha resposta.display
é sempreinline
( w3.org/TR/CSS21/visuren.html#display-prop ), independentemente de estar em umdiv
ou em umspan
. Por padrão, umdiv
elemento édisplay: block
de acordo com HTML , e não CSS, portanto, cabe à folha de estilo UA do navegadordiv { display: block; }
.default
foi renomeado pararevert
.Se o uso de javascript for permitido , você poderá definir a
display
propriedade como uma sequência vazia. Isso fará com que ele use o padrão para esse elemento específico.Aqui está um link para um jsbin .
Isso é bom porque você não precisa se preocupar com os diferentes tipos de exibição para reverter para (
block
,inline
,inline-block
,table-cell
, etc).Porém, ele requer javascript, portanto, se você estiver procurando uma solução apenas para css, essa não é a solução para você.
Nota: Isso substitui estilos embutidos, mas não estilos definidos em css
fonte
style
atributo embutido em primeiro lugar. Você não pode substituir ou remover uma declaração de uma folha de estilo usando esse método.style
atributo ou do configurador JavaScript. Ainda é possível substituir uma declaração da folha de estilo se você definir um valor específico por meio de JS, mas configurá-lo como vazio é equivalente a não defini-lo - a declaração da folha de estilo permanecerá intacta. Veja o violino modificado: jsfiddle.net/BoltClock/g45qagt3/1Desativar
display
:Você pode usar o valor
unset
que funciona no Firefox e no Chrome .fonte
unset
tem os mesmos problemas queinitial
. O valor dedisplay
se tornaráinline
. Veja codepen.io/Gidgidonihah/pen/mwWxEqunset
não ajudará nisso, já que é por propriedade e sempre redefinirá a exibição parainline
. Por favor, considere atualizar sua resposta.Não, geralmente não é possível. Depois que algum código CSS (ou HTML) define um valor para uma propriedade em um elemento, não há como desfazê-lo e dizer ao navegador para usar seu valor padrão.
É claro que é possível definir uma propriedade com um valor que você espera que seja o valor padrão. Isso pode funcionar bastante se você verificar a seção Renderização do HTML5 CR, refletindo principalmente o que os navegadores realmente fazem.
Ainda assim, a resposta é "Não", porque os navegadores podem ter os valores padrão que quiserem. Você deve analisar qual foi o motivo para querer redefinir os padrões; o problema original ainda pode ser solucionado.
fonte
Se você tiver acesso ao JavaScript , poderá criar um elemento e ler seu estilo calculado.
fonte
Em relação à resposta de BoltClock e John, eu pessoalmente tive problemas com a palavra-chave inicial ao usar o IE11. Funciona bem no Chrome, mas no IE parece não ter efeito.
De acordo com esta resposta, o IE não suporta a palavra-chave inicial: Display div: inicial não está funcionando como pretendido no ie10 e chrome 29
Tentei configurá-lo em branco, como sugerido aqui: como voltar ao normal após a exibição: nenhum para a linha da tabela
Isso funcionou e foi bom o suficiente para o meu cenário. Obviamente, para definir o valor inicial real, a resposta acima é a única boa que eu poderia encontrar.
fonte