Tenho um caso em que devo escrever código CSS embutido e quero aplicar um estilo de foco instantâneo em uma âncora.
Como posso usar a:hover
CSS embutido dentro do atributo de estilo HTML?
Por exemplo, você não pode usar classes CSS de maneira confiável em emails em HTML.
html
css
inline-styles
Amr Elgarhy
fonte
fonte
Respostas:
Resposta curta: você não pode.
Resposta longa: você não deveria.
Atribua a ela um nome ou ID de classe e use folhas de estilo para aplicar o estilo.
:hover
é um pseudo-seletor e, para CSS , só tem significado na folha de estilos. Não há nenhum equivalente no estilo embutido (pois não está definindo os critérios de seleção).Resposta aos comentários do OP:
Consulte Totally Pwn CSS with Javascript para obter um bom script sobre como adicionar regras CSS dinamicamente. Consulte também Alterar folha de estilo para algumas das teorias sobre o assunto.
Além disso, não se esqueça, você pode adicionar links a folhas de estilo externas, se for uma opção. Por exemplo,
Cuidado: o acima pressupõe que há uma seção principal .
fonte
style="{color:green;} :hover { color: red; }"
e o firefox conseguiu colorir o link de verde, mas ignorou o foco. O Chrome ignorou os dois. Testes contínuos seriam inúteis.Você pode obter o mesmo efeito alterando seus estilos com JavaScript nos parâmetros
onMouseOver
eonMouseOut
, embora seja extremamente ineficiente se precisar alterar mais de um elemento:Além disso, não me lembro com certeza se
this
funciona neste contexto. Você pode ter que trocá-lo comdocument.getElementById('idForLink')
.fonte
<div onMouseOver="this.style.backgroundColor='#F8F8F8'" onMouseOut="this.style.backgroundColor='#FFFFFF'"> ...
Você poderia fazer isso em algum momento no passado. Mas agora (de acordo com a revisão mais recente do mesmo padrão, que é Recomendação do Candidato), você não pode.
fonte
<a href="http://www.w3.org/" style="{color: #900} :link {background: #ff0} :visited {background: #fff} :hover {outline: thin red solid} :active {background: #00f}">...</a>
Mas isso não funcionouEstou extremamente atrasado contribuindo para isso, no entanto, fiquei triste ao ver que ninguém sugeriu isso, se você realmente precisar de código embutido, isso é possível. Eu precisava disso para alguns botões de foco, o método é o seguinte:
Nesse caso, o código embutido: "background-color: red;" é a cor do interruptor, passe a cor que você precisa para lá e, em seguida, esta solução funciona. Sei que essa pode não ser a solução perfeita em termos de compatibilidade, mas isso funciona se for absolutamente necessário.
fonte
Você não pode fazer exatamente o que está descrevendo, pois
a:hover
faz parte do seletor, não as regras CSS. Uma folha de estilo possui dois componentes:Os estilos embutidos têm apenas regras; o seletor está implícito como o elemento atual.
O seletor é uma linguagem expressiva que descreve um conjunto de critérios para corresponder aos elementos em um documento semelhante ao XML.
No entanto, você pode se aproximar, porque
style
tecnicamente um conjunto pode ir quase a qualquer lugar:fonte
<html> </html>
tagusando Javascript:
a) Adicionando estilo embutido
b) ou um método um pouco mais difícil - adicionar "mouseover"
Nota: os estilos de várias palavras (ie
font-size
) em Javascript são escritos juntos :element.style.fontSize="12px"
fonte
Este é o melhor exemplo de código:
Sugestão do moderador: Mantenha sua separação de preocupações.
HTML
JS
fonte
Declarações de pseudo-classe inline não são suportadas na iteração atual do CSS (embora, pelo que entendi, possa vir em uma versão futura).
Por enquanto, sua melhor aposta provavelmente é apenas definir um bloco de estilo diretamente acima do link que você deseja estilizar:
fonte
Conforme indicado, você não pode definir estilos inline arbitrários para pairar, mas pode alterar o estilo do cursor em CSS usando o seguinte na tag apropriada:
fonte
O foco é uma pseudo classe e, portanto, não pode ser aplicado com um atributo de estilo. Faz parte do seletor.
fonte
Você consegue fazer isso. Mas não nos estilos embutidos. Você pode usar
onmouseover
eonmouseout
eventos:fonte
De acordo com seus comentários, você está enviando um arquivo JavaScript de qualquer maneira. Faça a substituição em JavaScript. O método do jQuery
$.hover()
facilita, assim como qualquer outro wrapper JavaScript. Também não é muito difícil no JavaScript direto.fonte
Não há como fazer isso. Suas opções são usar um bloco JavaScript ou CSS.
Talvez haja alguma biblioteca JavaScript que converta um atributo de estilo proprietário em um bloco de estilo. Mas o código não será compatível com os padrões.
fonte
Acabei de descobrir uma solução diferente.
Meu problema: tenho uma
<a>
tag em torno de alguns slides / visualizador de conteúdo principal, além de<a>
tags no rodapé. Quero que eles vão para o mesmo local no IE, para que todo o parágrafo seja sublinhadoonHover
, mesmo que não sejam links: o slide como um todo é um link. O IE não sabe a diferença. Também tenho alguns links reais no rodapé que precisam de sublinhado e mudança de coronHover
. Eu pensei que teria que colocar os estilos alinhados com as tags de rodapé para mudar a cor, mas os conselhos de cima sugerem que isso é impossível.Solução: dei aos links do rodapé duas classes diferentes e meu problema foi resolvido. Consegui
onHover
mudar a cor em uma classe, os slidesonHover
não têm alteração / sublinhado e ainda consegui ter o HREFS externo no rodapé e os slides ao mesmo tempo!fonte
Eu concordo com a sombra . Você pode usar o evento
onmouseover
eonmouseout
para alterar o CSS via JavaScript.E não diga que as pessoas precisam ter o JavaScript ativado. É apenas uma questão de estilo, portanto, não importa se há alguns visitantes sem JavaScript;) Embora a maioria da Web 2.0 funcione com JavaScript. Veja o Facebook, por exemplo (muito JavaScript) ou o Myspace .
fonte
Isso é bastante tarde no jogo, mas quando você usaria JavaScript em um email em HTML? Por exemplo, na empresa em que trabalho atualmente (rima com Abodee), usamos o menor denominador comum para a maioria das campanhas de email marketing - e o JavaScript não está sendo usado. Sempre. A menos que você esteja se referindo a algum tipo de pré-processamento.
Como mencionado em uma publicação relacionada: "Lotus Notes, Mozilla Thunderbird, Outlook Express e Windows Live Mail parecem suportar algum tipo de execução de JavaScript. Nada mais faz."
Link para o artigo do qual isso foi retirado: [ http://en.wikipedia.org/wiki/Comparison_of_e-mail_clients]
Além disso, como passar o mouse seria traduzido para dispositivos móveis? É por isso que eu gosto da resposta de cima:
Long answer: you shouldn't.
Se alguém tiver mais informações sobre esse assunto, sinta-se à vontade para me corrigir. Obrigado.
fonte
Portanto, isso não é exatamente o que o usuário estava procurando, mas eu encontrei essa pergunta procurando uma resposta e surgiu algo relacionado. Eu tinha vários elementos repetidos que precisavam de uma nova cor / foco para uma guia dentro deles. Uso o guidão, que é a chave da minha solução, mas outras linguagens de modelagem também podem funcionar.
Eu defini algumas cores e as passei para o modelo do guidão de cada elemento. Na parte superior do modelo, defini uma tag de estilo e coloquei minha classe personalizada e passe a cor.
Então eu usei o estilo no modelo:
Você pode não precisar do
!important
fonte
você pode escrever um código em vários tipos
primeiro eu posso escrever isso
html
css
você pode tentar de outra maneira
html
css
você também pode tentar pairar no jquery
script java
html
Neste código, você tem uma função de três no jquery. Primeiro, você prepara uma função que é a função básica do jquery. Depois, você tem uma função de foco nessa função quando passa o ponteiro para o texto, a cor será alterada e depois a próxima. quando você soltar o ponteiro do texto, ele terá a cor diferente e esta é a terceira função
fonte
Agora é possível com o Hacss .
fonte
Eu tive que evitar o javascript, mas poderia ir com o código do lado do servidor.
então eu criei um ID, criei um bloco de estilo, gerei o link com esse ID. Sim, seu HTML válido.
fonte
Você pode usar a pseudo classe
a:hover
apenas em folhas de estilos externas. Portanto, recomendo usar uma folha de estilos externa. O código é:fonte
style
etiqueta.Você pode fazer a identificação adicionando uma classe, mas nunca em linha.
2 linhas, mas você pode reutilizar a classe em qualquer lugar.
fonte
Meu problema era que eu estou construindo um site que usa muitos ícones de imagem que precisam ser trocados por uma imagem diferente ao passar o mouse (por exemplo, imagens azuladas ficam vermelhas na hora). Eu produzi a seguinte solução para isso:
Eu introduzi um contêiner contendo o par de imagens. O primeiro é visível e o outro está oculto (visor: nenhum). Ao passar o mouse pelo contêiner, o primeiro fica oculto (exibição: nenhuma) e o segundo aparece novamente (exibição: bloco).
fonte