CSS: Verander afbeelding SRC op IMG: Hover

Ik moet <img>bron-URL op hoverwijzigen.

Ik heb dit geprobeerd, maar werkt niet:

HTML

<img id="my-img" src="https://dummyimage.com/100x100/000/fff"/>

CSS

#my-img:hover {
    content: url('https://dummyimage.com/100x100/eb00eb/fff');
}

jsfiddle

Elke hulp zou worden op prijs gesteld.

update:

Dit werkt alleen voor Webkit / Google Chrome.


Antwoord 1, Autoriteit 100%

Met alleen HTML en CSS is het niet mogelijk om de SRC van de afbeelding te wijzigen. Als u de IMG-tag vervangt met DIV-tag, kunt u mogelijk de afbeelding wijzigen die is ingesteld als de achtergrond als

div {
    background: url('https://dummyimage.com/100x100/000/fff');
}
div:hover {
    background: url('https://dummyimage.com/100x100/eb00eb/fff');
}

En als u denkt dat u een JavaScript-code kunt gebruiken, moet u de SRC van de IMG-tag als hieronder

kunnen wijzigen

function hover(element) {
  element.setAttribute('src', 'http://dummyimage.com/100x100/eb00eb/fff');
}
function unhover(element) {
  element.setAttribute('src', 'http://dummyimage.com/100x100/000/fff');
}
<img id="my-img" src="https://dummyimage.com/100x100/000/fff" onmouseover="hover(this);" onmouseout="unhover(this);" />

Antwoord 2, Autoriteit 74%

Ik heb een paar wijzigingen aangepast met betrekking tot Patrick Kostjens.

<a href="#">
<img src="https://icons.iconarchive.com/icons/fasticon/angry-birds/128/yellow-bird-icon.png" 
onmouseover="this.src='https://icons.iconarchive.com/icons/fasticon/angry-birds/128/red-bird-icon.png'"
onmouseout="this.src='https://icons.iconarchive.com/icons/fasticon/angry-birds/128/yellow-bird-icon.png'"
border="0" alt=""/></a>

Demo

http://jsfiddle.net/ssuryar/wcmhu/429/


Antwoord 3, Autoriteit 17%

Hier is een alternatieve aanpak met pure CSS. Het idee is om zowel de afbeeldingen in de HTML-markering op te nemen en deze worden weergegeven of dienovereenkomstig verborgen op: Hover

html

<a>
   <img src="https://cdn4.iconfinder.com/data/icons/imoticons/105/imoticon_15-128.png" /> 
   <img src="https://cdn4.iconfinder.com/data/icons/imoticons/105/imoticon_12-128.png" />
</a>

CSS

a img:last-child {
  display: none;  
}
a:hover img:last-child {
  display: block;  
}
a:hover img:first-child {
  display: none;  
}

JSFiddle: https://jsfiddle.net/m4v1onyl/

Merk op dat de gebruikte afbeeldingen van dezelfde dimensies zijn voor het juiste display. Ook zijn deze afbeeldingen bestandsformaten vrij klein, dus het laden van meerdere is niet een probleem in dit geval, maar is mogelijk als u op zoek bent om weergave van grote afbeeldingen te schakelen.


Antwoord 4, Autoriteit 11%

Ik had een vergelijkbaar probleem, maar mijn oplossing was om twee afbeeldingen te hebben, een verborgen (display: geen) en één zichtbaar. Op de hover over een omgeving, verandert de originele afbeelding in display: Geen en de andere afbeelding om weer te geven: blok. (Kan in plaats daarvan ‘inline’ gebruiken, afhankelijk van uw omstandigheden)

Dit voorbeeld gebruikt twee spanagages in plaats van afbeeldingen, zodat u het resultaat hier kunt zien wanneer deze hier wordt uitgevoerd. Ik had geen online beeldbronnen om helaas te gebruiken.

#onhover {
  display: none;
}
#surround:hover span[id="initial"] {
  display: none;
}
#surround:hover span[id="onhover"] {
  display: block;
}
<span id="surround">
    <span id="initial">original</span>
    <span id="onhover">replacement</span>
</span>

Antwoord 5, Autoriteit 9%

Wat u zou kunnen doen is een beetje vals spelen door widthen heightop te stellen om de werkelijke afbeelding te verbergen en een aantal CSS toe te passen om te doen wat u wilt:

#aks {
    width:0px;
    height:0px;
    background:url('https://dummyimage.com/100x100/000/fff');
    padding:50px;
}
#aks:hover {
    background: url('https://dummyimage.com/100x100/eb00eb/fff');
}

en de opvulling maken van de srctag de maat die u wilt hebben (de helft van de grootte van uw werkelijke afbeelding).

Fiddle


Antwoord 6, Autoriteit 5%

Met betrekking tot semantiek, ik hou niet van een tot nu toe gegeven oplossing. Daarom gebruik ik persoonlijk de volgende oplossing:

.img-wrapper {
  display: inline-block;
  background-image: url(https://www.w3schools.com/w3images/fjords.jpg);
}
.img-wrapper > img {
  vertical-align: top;
}
.img-wrapper > img:hover {
  opacity: 0;
}
<div class="img-wrapper">
  <img src="https://www.w3schools.com/w3css/img_lights.jpg" alt="image" />
</div>

Antwoord 7, Autoriteit 4%

Ik heb nog een oplossing. Als iemand Angularjs gebruikt:
http://jsfiddle.net/ec9gn/30/

<div ng-controller='ctrl'>
    <img ng-mouseover="img='eb00eb'"  ng-mouseleave="img='000'"
         ng-src='https://dummyimage.com/100x100/{{img}}/fff' />
</div>

Het JavaScript:

function ctrl($scope){
    $scope.img= '000';
}

Geen CSS ^^.


Antwoord 8, Autoriteit 2%

Ik had een soortgelijk probleem – ik wil de afbeelding vervangen door: Hover maar kan geen backgrund-image gebruiken vanwege het ontbreken van het adaptieve ontwerp van Bootstrap.

Als je mij leuk vindt, wil je de afbeelding alleen wijzigen op :hover (maar niet aandringen op het wijzigen van SRC voor de bepaalde afbeeldingstag), dan kun je zoiets doen – het is een CSS-only oplossing.

HTML:

<li>
  <img src="/picts/doctors/SmallGray/Zharkova_smallgrey.jpg">
  <img class="hoverPhoto" src="/picts/doctors/Small/Zharkova_small.jpg">
</li>

CSS:

li { position: relative; overflow: hidden; }
li img.hoverPhoto {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  bottom: 0;
  opacity: 0;
}
li.hover img { /* it's optional - for nicer transition effect */
  opacity: 0;
  -web-kit-transition:  opacity 1s ease;
  -moz-transition:  opacity 1s ease;li 
  -o-transition:    opacity 1s ease;
  transition:   opacity 1s ease;
}
li.hover img.hoverPhoto { opacity: 1; }

Als u IE7-compatibele code wilt, kunt u de :HOVER-afbeelding verbergen/tonen door deze te positioneren en niet door dekking.


Antwoord 9, autoriteit 2%

Fiddle

Akkoord met het antwoord van AshisKumar,
er is een manier om de afbeeldings-url te wijzigen door met de muis over de jQuery-functionaliteit te gaan, zoals hieronder:

$(function() {
  $("img")
    .mouseover(function() { 
        var src = $(this).attr("src").match(/[^\.]+/) + "over.gif";
        $(this).attr("src", url1); //URL @the time of mouse over on image
    })
    .mouseout(function() {
        var src = $(this).attr("src").replace("over", "");
        $(this).attr("src", url2); //default URL
    });
 });

Antwoord 10, autoriteit 2%

Aangezien je de srcniet kunt wijzigen met CSS: als jQuery een optie voor je is, vink dan deze viool aan.

Demo

$('#aks').hover(
    function(){
      $(this).attr('src','http://dummyimage.com/100x100/eb00eb/fff')
    },
    function(){
      $(this).attr('src','http://dummyimage.com/100x100/000/fff')
    }
)

Het gebruikt in feite de .hover()methode… er zijn twee functies nodig om het te laten werken. Wanneer u de hover ingaat en wanneer u deze verlaat.

We gebruiken de .attr(afkorting van attribuut) om het srcattribuut te wijzigen.

Het is de moeite waard om op te merken dat je de jQuery-bibliotheek nodig hebt, zoals in de viool, om dit te laten werken.


Antwoord 11

Persoonlijk zou ik kiezen voor een van de JavaScript / jQuery-oplossingen. Dit houdt niet alleen uw HTML-semantisch (dwz een afbeelding wordt weergegeven als een img-element met zijn gebruikelijke src-afbeelding gedefinieerd in de opmaak), maar als u een JS / jQuery-oplossing gebruikt, kunt u ook de JS / jQuery om uw zweefafbeelding vooraf te laden.

Als u de afbeelding met de muisaanwijzer vooraf laadt, is er waarschijnlijk geen downloadvertraging wanneer de gebruiker de muisaanwijzer op de originele afbeelding plaatst, waardoor uw site zich veel professioneler gaat gedragen.

Het betekent wel dat je afhankelijk bent van JS, maar de kleine minderheid die geen JS heeft ingeschakeld, zal zich waarschijnlijk niet al te druk maken – en alle anderen zullen een betere ervaring krijgen… en je code zal goed zijn , ook!


Antwoord 12

Je kunt het src-kenmerk van de src-tag niet wijzigen met CSS. Mogelijk met behulp van Javascriptonmouseover()gebeurtenishandler.

HTML:

<img id="my-img" src="https://dummyimage.com/100x100/000/fff" onmouseover='hover()'/>

JavaScript:

function hover() {
  document.getElementById("my-img").src = "http://dummyimage.com/100x100/eb00eb/fff";
}

Antwoord 13

U kunt de IMG SRC niet wijzigen met CSS. U kunt de volgende pure CSS-oplossing echter gebruiken.
HTML:

<div id="asks"></div>

CSS:

#asks {
  width: 100px;
  height: 100px;
  background-image: url('https://dummyimage.com/100x100/0000/fff');
}
#asks:hover {
  background-image: url('https://dummyimage.com/100x100/eb00eb/fff');
}

Of, als u geen div wilt gebruiken met een achtergrondafbeelding, kunt u een JavaScript / JQuery-oplossing gebruiken.
HTML:

<img id="asks" src="https://dummyimage.com/100x100/000/fff" />

jQuery:

$('#asks')
  .mouseenter(function(){$('#asks').attr('src', 'http://dummyimage.com/100x100/eb00eb/fff');})
  .mouseleave(function(){$('#asks').attr('src', 'http://dummyimage.com/100x100/000/fff');});

Antwoord 14

Hiervoor kunt u onderstaande code gebruiken

1) HTML

<div id = "aks">
</div>

2) CSS

#aks
    {
        width:100px;
height:100px;    
        background-image:url('https://dummyimage.com/100x100/000/fff');}
#aks:hover {
    background-image:url('https://dummyimage.com/100x100/eb00eb/fff');
}

Antwoord 15

In oudere browsers werkte :hoveralleen voor <a>-elementen. Je zou dus iets zoals ditmoeten doen om het te laten werken.

<style>
a#aks
{
    width:100px;
    height:100px;
    display:block;
}
a#aks:link
{
  background-image: url('https://dummyimage.com/100x100/000/fff');
}
a#aks:hover
{
  background-image: url('https://dummyimage.com/100x100/eb00eb/fff');
}
</style>
<a href="#" id="aks"></a>

Antwoord 16

De volgende code werkt in zowel Chrome als Firefox

<a href="#"><img src="me-more-smile.jpg" onmouseover="this.src='me-thinking-about-a-date.jpg'" onmouseout="this.src='me-more-smile.jpg'" border="0" alt=""/></a>

Antwoord 17

Probeer deze code.

  .card {
            width: 200px;
            height: 195px;
            position: relative;
            display: inline-block;
        }
        .card .img-top {
            display: none;
            position: absolute;
            top: 0;
            left: 0;
            z-index: 99;
width:200px;
        }
        .card:hover .img-top {
            display: inline;
        }
<!DOCTYPE html>
    <html lang="en">
    <head>
    <title>Image Change on Hover with CSS</title>
    </head>
    <body>
        <div class="card">
            <img src="https://www.dhresource.com/200x200s/f2-albu-g5-M00-EC-97-rBVaJFkAobCAHD9XAADvz9DDocA266.jpg/diy-wall-stickers-home-decor-nature-colorful.jpg" alt="Card Back" style="width:200px">
            <img src="https://s-media-cache-ak0.pinimg.com/236x/31/17/98/3117987a0be0a7d8976869aabf54d2d7.jpg" class="img-top" alt="Card Front">
        </div>
    </body>
    </html>

Antwoord 18

Hier is een pure CSS-oplossing. Zet de zichtbare afbeelding in de img-tag, plaats de tweede afbeelding als achtergrond in de css en verberg de afbeelding vervolgens met de muisaanwijzer.

.buttons{
width:90%;
margin-left:5%;
margin-right:5%;
margin-top:2%;
}
.buttons ul{}   
.buttons ul li{
display:inline-block;
width:22%;
margin:1%;
position:relative;
}
.buttons ul li a p{
position:absolute;
top:40%;
text-align:center;
}   
.but1{
background:url('scales.jpg') center no-repeat;
background-size:cover;
}
.but1 a:hover img{
visibility:hidden;
}   
.but2{
background:url('scales.jpg') center no-repeat;
background-size:cover;
}
.but2 a:hover img{
visibility:hidden;
}   
.but3{
background:url('scales.jpg') center no-repeat;
background-size:cover;
}
.but3 a:hover img{
visibility:hidden;
}   
.but4{
background:url('scales.jpg') center no-repeat;
background-size:cover;
}   
.but4 a:hover img{
visibility:hidden;
}           
<div class='buttons'>
<ul>
<li class='but1'><a href='#'><img src='scalesb.jpg' height='300' width='300' alt='' /><p>Blog</p></a></li>
<li class='but2'><a href='#'><img src='scalesb.jpg' height='300' width='300' alt='' /> <p>Herrero</p></a></li>
<li class='but3'><a href='#'><img src='scalesb.jpg' height='300' width='300' alt='' /><p>Loftin</p></a></li>
<li class='but4'><a href='#'><img src='scalesb.jpg' height='300' width='300' alt='' /><p>Contact</p></a></li>
</ul>
</div>

Antwoord 19

De beste manier om srcvoor afbeelding te wijzigen is:

<img src='willbehidden.png' style="width:0px; height:0px; padding: 8px; background: url(newimage.png);">

Bekijk live demo: http://www.audenaerde.org/csstricks.html#imagereplacecss

Veel plezier!


Antwoord 20

Er is een andere eenvoudige manier om alleen HTML en CSS te gebruiken!

Wikkel je <img>-tag gewoon met div als volgt:

<div class="image-wrapper">
    <img src="https://dummyimage.com/100x100/000/fff">
</div>

Verberg vervolgens in uw CSS-bestand de img en stel de achtergrondafbeelding in voor het omhullende div-element:

.image-wrapper:hover {
    background-image: url(https://dummyimage.com/100x100/eb00eb/fff);
    background-size: contain;
    background-repeat: no-repeat;
}
.image-wrapper:hover img {
    display: none;
}

Et voilà!

Other episodes