Eu preciso mudar o <img>
URL da fonte em hover
.
Eu tentei isso, mas não funcionou:
HTML
<img id="my-img" src="http://dummyimage.com/100x100/000/fff"/>
CSS
#my-img:hover {
content: url('http://dummyimage.com/100x100/eb00eb/fff');
}
Qualquer ajuda seria apreciada.
Atualizar:
Isso só funciona para Webkit / Google Chrome.
content
só funciona com:before
ou:after
então isso não vai funcionar. Por que não usar umdiv
com uma imagem de fundo e, ao passar o mouse, mudar essa imagem de fundo?DIV
.content:
único funciona com:before
or:after
img
tag e apenas removersrc
da sua imagem. Embora isso seja um pouco estranho, funcionará. @HamedKamrava: Você só pode usar uma imagem ou pode usar outra coisa?:before
ou:after
pseudo classes para usocontent:url(...)
. Atualização: Funciona apenas para Webkit / Google Chrome.Respostas:
Com apenas html e css, não é possível alterar o src da imagem. Se você substituir a tag img pela tag div, poderá alterar a imagem que está definida como plano de fundo, como
E se você acha que pode usar algum código javascript, então você deve ser capaz de alterar o src da tag img como abaixo
fonte
<img src="..." style="visibility: hidden" />
Eu modifiquei algumas mudanças relacionadas a Patrick Kostjens.
DEMO
http://jsfiddle.net/ssuryar/wcmHu/429/
fonte
Eu tive um problema semelhante, mas minha solução foi ter duas imagens, uma oculta (exibição: nenhuma) e outra visível. Ao passar o mouse sobre uma extensão circundante, a imagem original muda para exibir: nenhuma e a outra imagem para exibir: bloco. (Pode ser usado 'embutido' em vez disso, dependendo das circunstâncias)
Este exemplo usa duas tags span em vez de imagens para que você possa ver o resultado ao executá-lo aqui. Eu não tinha nenhuma fonte de imagem online para usar, infelizmente.
fonte
span#initial
no lugar despan[id="initial"]
O que você pode fazer é trapacear um pouco definindo
width
eheight
como 0 para ocultar a imagem real e aplicar algum CSS para fazer o que quiser:E o preenchimento torna a
img
tag do tamanho que você deseja (metade do tamanho da sua imagem real).Violino
fonte
Aqui está uma abordagem alternativa usando CSS puro. A ideia é incluir ambas as imagens na marcação HTML e exibi-las ou ocultá-las em: hover
HTML
CSS
jsfiddle: https://jsfiddle.net/m4v1onyL/
Observe que as imagens usadas são das mesmas dimensões para exibição adequada. Além disso, esses tamanhos de arquivo de imagem são muito pequenos, portanto, carregar vários não é um problema neste caso, mas pode ser se você estiver procurando alternar a exibição de imagens de tamanho grande.
fonte
Quanto à semântica, não gosto de nenhuma solução dada até agora. Portanto, eu pessoalmente uso a seguinte solução:
Esta é uma solução CSS apenas com boa compatibilidade de navegador. Faz uso de um invólucro de imagem que possui um fundo inicialmente oculto pela própria imagem. Ao passar o mouse, a imagem fica oculta pela opacidade, portanto, a imagem de fundo fica visível. Dessa forma, não se tem um invólucro vazio, mas uma imagem real no código de marcação.
fonte
Eu tenho mais uma solução. Se alguém usa AngularJs: http://jsfiddle.net/ec9gn/30/
O Javascript:
Sem CSS ^^.
fonte
Tive um problema semelhante - desejo substituir a imagem em: pairar, mas não consigo usar BACKGRUND-IMAGE devido à falta de design adaptativo do Bootstrap.
Se você gosta de mim, quer apenas mudar a imagem: passe o mouse (mas não insista em mudar o SRC para a marca de imagem certa), você pode fazer algo assim - é uma solução somente CSS.
HTML:
CSS:
Se você quiser um código compatível com o IE7, pode ocultar / mostrar: Imagem HOVER posicionando, não por opacidade.
fonte
Já que você não pode alterar o
src
com CSS: Se jQuery for uma opção para você, verifique este violino.Demo
Basicamente está usando o
.hover()
método ... são necessárias duas funções para fazê-lo funcionar. Quando você entra no hover e quando você sai dele.Estamos usando o
.attr
(abreviação de atributo) para alterar osrc
atributo.Vale a pena notar que você precisa da biblioteca jQuery incluída como no violino para fazer este trabalho.
fonte
Violino
Concordo com a resposta de AshisKumar,
há uma maneira de alterar o url da imagem ao passar o mouse usando a funcionalidade jQuery conforme abaixo:
fonte
a
comdisplay:block
difere de div? O iniciador do tópico queria mudar osrc
atributoimg
atravéscss
e não algum contorno.Pessoalmente, eu escolheria uma das soluções JavaScript / jQuery. Isso não apenas mantém sua semântica HTML (ou seja, uma imagem é mostrada como um elemento img com sua imagem src usual definida na marcação), mas se você usar uma solução JS / jQuery, também será capaz de usar o JS / jQuery para pré - carregar sua imagem hover.
O pré-carregamento da imagem flutuante significa que provavelmente não haverá atraso no download quando o usuário passar o mouse sobre a imagem original, fazendo com que seu site se comporte de maneira muito mais profissional.
Isso significa que você depende de JS, mas a pequena minoria que não tem JS habilitado provavelmente não vai se preocupar muito - e todos terão uma experiência melhor ... e seu código também será bom!
fonte
Você não pode alterar
img
osrc
atributo da tag usandoCSS
. Possível usando manipulador de eventos Javascriptonmouseover()
.HTML:
Javascript:
fonte
Você não pode alterar o img src usando css. Você pode usar a seguinte solução de css puro. HTML:
CSS:
Ou, se não quiser usar um div com uma imagem de fundo, você pode usar uma solução javascript / jQuery. Html:
jQuery:
fonte
Para isso você pode usar o código abaixo
1) html
2) css
fonte
Em navegadores mais antigos,
:hover
funcionava apenas em<a>
elementos. Então você teria que fazer algo assim para fazê-lo funcionar.fonte
O código a seguir funciona no Chrome e no Firefox
fonte
Aqui está uma solução CSS pura. Coloque a imagem visível na tag img, coloque a segunda imagem como fundo no css e, em seguida, oculte a imagem ao pairar.
fonte
A melhor maneira de alterar
src
a imagem é:Veja a demonstração ao vivo: http://www.audenaerde.org/csstricks.html#imagereplacecss
Aproveitar!
fonte
Experimente este código.
fonte
Existe outra maneira simples de usar apenas HTML e CSS!
Basta envolver sua
<img>
tag com div assim:Em seguida, em seu arquivo CSS, oculte o img e defina a imagem de fundo para o elemento div de envolvimento:
Et voilà!
fonte