Eu tenho um conjunto de links estilizados usando o :before
para aplicar uma seta.
Parece bom em todos os navegadores, mas quando aplico o sublinhado ao link, não quero o sublinhado na :before
parte (a seta).
Veja jsfiddle por exemplo: http://jsfiddle.net/r42e5/1/
É possível remover isso? O estilo de teste com o qual me sentei #test p a:hover:before
é aplicado (de acordo com o Firebug), mas o sublinhado ainda está lá.
Alguma maneira de evitar isso?
#test {
color: #B2B2B2;
}
#test p a {
color: #B2B2B2;
text-decoration: none;
}
#test p a:hover {
text-decoration: underline;
}
#test p a:before {
color: #B2B2B2;
content: "► ";
text-decoration: none;
}
#test p a:hover:before {
text-decoration: none;
}
<div id="test">
<p><a href="#">A link</a></p>
<p><a href="#">Another link</a></p>
</div>
html
css
hyperlink
pseudo-element
text-decorations
OptimusCrime
fonte
fonte
Respostas:
Sim, se você alterar o estilo de exibição do elemento embutido de
display:inline
(o padrão) paradisplay:inline-block
:Isso ocorre porque as especificações CSS dizem :
(Ênfase minha.)
Demo: http://jsfiddle.net/r42e5/10/
Obrigado a @Oriol por fornecer a solução alternativa que me levou a verificar as especificações e ver se a solução alternativa é legal.
fonte
text-decoration:underline
aplicado a um elemento pai comdisplay:inline-block
. Veja um exemplo: jsfiddle.net/aZdhN/1 . Então, o problema do solicitante pode ser resolvido assim: stackoverflow.com/a/17347068/1529630Há um bug no IE8-11 , então usar
display:inline-block;
sozinho não funcionará lá.Eu encontrei uma solução para esse bug, definindo explicitamente
text-decoration:underline;
para: before-content e, em seguida, sobrescrever essa regra novamente comtext-decoration:none;
Exemplo de trabalho aqui: http://jsfiddle.net/95C2M/
Atualização: Como o jsfiddle não funciona mais com o IE8, basta colar este código de demonstração simples em um arquivo html local e abri-lo no IE8:
fonte
<img style="text-decoration:underline">
dentro (e aqui estava a chave)<a style="padding:0; border:none;">
Você pode fazer isso adicionando o seguinte ao
:before
elemento:Com
display: inline-block
o sublinhado desaparece. Mas então o problema é que o espaço após o triângulo entra em colapso e não é mostrado. Para consertar, você pode usarwhite-space: pre-wrap
ouwhite-space: pre
.Demo : http://jsfiddle.net/r42e5/9/
fonte
pre-wrap
dica. Eu estava usandocontent:'►\a0'
(\ a0 = & nbsp;)Envolva seus links em intervalos e adicione a decoração de texto ao intervalo no a: hover assim,
Eu atualizei seu violino para o que acho que você está tentando fazer. http://jsfiddle.net/r42e5/4/
fonte
tente usar em seu lugar:
isso vai servir?
fonte
usa isto
fonte