Ich habe dieses Problem, bei dem ich ein Bild so eingestellt habe, dass beim Bewegen der Maus ein anderes Bild angezeigt wird. Das erste Bild wird jedoch weiterhin angezeigt, und das neue Bild ändert weder Höhe noch Breite und überlappt das andere. Ich bin noch ziemlich neu in HTML / CSS, daher habe ich möglicherweise etwas Einfaches verpasst. Hier ist der Code:
<img src="LibraryTransparent.png" id="Library">
#Library {
height: 70px;
width: 120px;
}
#Library:hover {
background-image: url('LibraryHoverTrans.png');
height: 70px;
width: 120px;
}
Eine andere Option ist die Verwendung von JS:
<img src='LibraryTransparent.png' onmouseover="this.src='LibraryHoverTrans.png';" onmouseout="this.src='LibraryTransparent.png';" />
quelle
Normalerweise erstelle ich mit beiden Zuständen ein Doppelbild, das sich wie ein Zwei-Frame-Film verhält, den ich dann als Hintergrund für das ursprüngliche Element verwende, sodass für das Element die Breite / Höhe in Pixel festgelegt wird, was zu einer Anzeige führt nur eine Hälfte des Bildes. Dann definiert der Schwebezustand im Grunde "den Film bewegen, um das andere Bild zu zeigen".
Stellen Sie sich zum Beispiel vor, dass das Bild ein grauer Smoking sein muss, den wir beim Schweben in einen farbenfrohen Smoking ändern müssen. Und das "Hosting" -Element ist eine Spanne mit der ID "tuxie".
Der minimale Code:
<style> #tuxie { width: 25px; height: 25px; background: url('images/tuxie.png') no-repeat left top; } #tuxie:hover { background-position: -25px 0px } </style> <div id="tuxie" />
und das Bild:
Vorteile sind:
Durch das Einfügen beider Frames in eine Datei wird sichergestellt, dass sie gleichzeitig geladen werden. Dies vermeidet den hässlichen Fehler bei langsameren Verbindungen, wenn der andere Frame nie sofort geladen wird, sodass der erste Schwebeflug nie richtig funktioniert.
Es ist möglicherweise einfacher, Ihre Bilder auf diese Weise zu verwalten, da "gepaarte" Frames niemals verwechselt werden.
Mit der intelligenten Verwendung von Javascript oder CSS Selector kann man dies erweitern und noch mehr Frames in eine Datei aufnehmen.
Theoretisch könnten Sie sogar mehrere Schaltflächen in eine Datei einfügen und deren Anzeige anhand von Koordinaten steuern, obwohl ein solcher Ansatz schnell außer Kontrolle geraten könnte.
Beachten Sie, dass dies mit der
background
CSS-Eigenschaft erstellt wird. Wenn Sie also wirklich mit<img />
s verwenden müssen, dürfen Sie die Eigenschaft nicht festlegen,src
da dies den Hintergrund überlappt. (Denken Sie, dass ein geschickter Einsatz von Transparenz hier zu interessanten Ergebnissen führen könnte, aber wahrscheinlich sehr stark von der Bildqualität und der Engine abhängt.)quelle
Verwendung
content
:#Library { height: 70px; width: 120px; } #Library:hover { content: url('http://www.furrytalk.com/wp-content/uploads/2010/05/2.jpg'); height: 70px; width: 120px; }
JSFiddle
quelle
.hover_image:hover {text-decoration: none} /* Optional (avoid undesired underscore if a is used as wrapper) */ .hide {display:none} /* Do the shift: */ .hover_image:hover img:first-child{display:none} .hover_image:hover img:last-child{display:inline-block}
<body> <a class="hover_image" href="#"> <!-- path/to/first/visible/image: --> <img src="http://farmacias.dariopm.com/cc2/_cc3/images/f1_silverstone_2016.jpg" /> <!-- path/to/hover/visible/image: --> <img src="http://farmacias.dariopm.com/cc2/_cc3/images/f1_malasia_2016.jpg" class="hide" /> </a> </body>
Um zu versuchen, die gute Antwort dieses Rashid zu verbessern, füge ich einige Kommentare hinzu:
Der Trick wird über den Wrapper des auszutauschenden Bildes ausgeführt (diesmal ein 'a'-Tag, aber vielleicht ein anderes), sodass die' hover_image'-Klasse dort abgelegt wurde.
Vorteile:
Das Zusammenhalten der URL beider Bilder an derselben Stelle hilft, wenn sie geändert werden müssen.
Scheint auch mit alten Navigatoren zu funktionieren (CSS2-Standard).
Es ist selbsterklärend.
Das Schwebebild ist vorinstalliert (keine Verzögerung nach dem Schweben).
quelle
Das Problem bei allen vorherigen Antworten ist, dass das Hover-Bild nicht mit der Seite geladen wird. Wenn der Browser es aufruft, dauert das Laden einige Zeit und das Ganze sieht nicht wirklich gut aus.
Ich füge das Originalbild und das Schwebebild in ein Element ein und verstecke zuerst das Schwebebild. Beim Hover-In zeige ich dann das Hover-Bild an und verstecke das alte. Beim Hover-Out mache ich das Gegenteil.
HTML:
<span id="bellLogo" onmouseover="hvr(this, 'in')" onmouseleave="hvr(this, 'out')"> <img src="stylesheets/images/bell.png" class=bell col="g"> <img src="stylesheets/images/bell_hover.png" class=bell style="display:none" col="b"> </span>
JavaScript / jQuery:
function hvr(dom, action) { if (action == 'in') { $(dom).find("[col=g]").css("display", "none"); $(dom).find("[col=b]").css("display", "inline-block"); } else { $(dom).find("[col=b]").css("display", "none"); $(dom).find("[col=g]").css("display", "inline-block"); } }
Dies ist für mich der einfachste und effizienteste Weg, dies zu tun.
quelle
Sie können das Bild eines HTML-IMG ersetzen, ohne Änderungen am Hintergrundbild des Container-Div vornehmen zu müssen.
Dies wird mithilfe der CSS-Eigenschaft erreicht
box-sizing: border-box;
(Sie haben die Möglichkeit, eine Art Hover-Effekt<IMG>
sehr effizient auf einen zu setzen .)Wenden Sie dazu eine Klasse wie diese auf Ihr Bild an:
.image-replacement { display: block; -moz-box-sizing: border-box; box-sizing: border-box; background: url(http://akamaicovers.oreilly.com/images/9780596517748/cat.gif) no-repeat;/* this image will be shown over the image iSRC */ width: 180px; height: 236px; padding-left: 180px; }
Beispielcode: http://codepen.io/chriscoyier/pen/cJEjs
Originalartikel: http://css-tricks.com/replace-the-image-in-an-img-with-css/
Hoffe, dies wird einigen von euch helfen, die kein Div setzen wollen, um ein Bild mit einem "Hover" -Effekt zu erhalten.
Hier den Beispielcode posten:
HTML:
<img id="myImage" src="images/photo1.png" class="ClassBeforeImage-replacement">
jQuery:
$("#myImage").mouseover(function () { $(this).attr("class", "image-replacement"); }); $("#myImage").mouseout(function () { $(this).attr("class", "ClassBeforeImage-replacement"); });
quelle
Sie können CSS nicht zum Ändern von Bild-SRC-Attributen verwenden (es sei denn, der Browser unterstützt dies). Möglicherweise möchten Sie jQuery mit dem Hover-Ereignis verwenden.
$("#Library ").hover( function () { $(this).attr("src","isHover.jpg"); }, function () { $(this).attr("src","notHover.jpg"); } );
quelle
Ändern Sie das
img
Tag in ein div und geben Sie ihm einen Hintergrund in CSS.quelle
.foo img:last-child{display:none} .foo:hover img:first-child{display:none} .foo:hover img:last-child{display:inline-block}
<body> <a class="foo" href="#"> <img src="http://lojanak.com/image/9/280/280/1/0" /> <img src="http://lojanak.com/image/0/280/280/1/0" /> </a> </body>
quelle
Überprüfen Sie diese Geige
Ich denke, der Bildpfad kann in Ihrem Fall falsch sein
Die Syntax sieht richtig aus
background-image:url('http://www.bluecowcreative.ca/wp-content/uploads/2013/08/hi.jpg');
quelle
Das Problem ist, dass Sie das erste Bild über das Attribut 'src' festlegen und beim Hover dem Bild ein Hintergrundbild hinzufügen. Versuche dies:
in HTML verwenden:
<img id="Library">
dann in css:
#Library { height: 70px; width: 120px; background-image: url('LibraryTransparent.png'); } #Library:hover { background-image: url('LibraryHoverTrans.png'); }
quelle
So wie du Dinge tust, wird es nicht passieren. Sie ändern das Hintergrundbild des Bildes, das vom Originalbild blockiert wird. Das Ändern der Höhe und Breite wird ebenfalls nicht stattfinden. Um das src-Attribut des Bildes zu ändern, benötigen Sie Javascript oder eine Javascript-Bibliothek wie jQuery. Sie können das Bild jedoch in ein einfaches Div-Feld (Textfeld) ändern und ein Hintergrundbild erstellen, das sich beim Hover ändert, obwohl das Div-Feld selbst leer ist. Hier ist wie.
<div id="emptydiv"></div> #emptydiv { background-image: url("LibraryHover.png"); height: 70px; width: 120px;
}}
#emptydiv:hover { background-image: url("LibraryHoverTrans.png"); height: 700px; width: 1200px; }
Ich hoffe das ist was du fragst :)
quelle
Bei jeder Antwort mit der Option "Hintergrundbild" fehlt ein Attribut. Die Höhe und Breite legen die Containergröße für das Bild fest, ändern jedoch nicht die Größe des Bildes. Hintergrundgröße wird benötigt, um das Bild zu komprimieren oder zu strecken, damit es in diesen Container passt. Ich habe das Beispiel aus der 'besten Antwort' verwendet
<div id="Library"></div> #Library { background-image: url('LibraryTransparent.png'); background-size: 120px; height: 70px; width: 120px; } #Library:hover { background-image: url('LibraryHoverTrans.png'); }
quelle
versuchen Sie einen von ihnen
<img src='images/icons/proceed_button.png' width='120' height='70' onmouseover="this.src='images/icons/proceed_button2.png';" onmouseout="this.src='images/icons/proceed_button.png';" />
<input type="image" id="proceed" src="images/icons/proceed_button.png" alt"Go to Facebook page" onMouseOver="fnover();"onMouseOut="fnout();" onclick="fnclick()"> function fnover() { var myimg2 = document.getElementById("proceed"); myimg2.src = "images/icons/proceed_button2.png"; } function fnout() { var myimg2 = document.getElementById("proceed"); myimg2.src = "images/icons/proceed_button.png"; }
quelle
Meine jquery Lösung.
function changeOverImage(element) { var url = $(element).prop('src'), url_over = $(element).data('change-over') ; $(element) .prop('src', url_over) .data('change-over', url) ; } $(document).delegate('img[data-change-over]', 'mouseover', function () { changeOverImage(this); }); $(document).delegate('img[data-change-over]', 'mouseout', function () { changeOverImage(this); });
und html
<img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=%3Cimg%20original%20/%3E&w=342&h=300" data-change-over="https://placeholdit.imgix.net/~text?txtsize=33&txt=%3Cimg%20over%20/%3E&w=342&h=300" />
Demo: JSFiddle-Demo
Grüße
quelle
Live-Beispiel: JSFiddle
Die akzeptierte Antwort hat ein Problem. Das Bild wurde dort nicht in der Größe geändert. Verwenden Sie die Eigenschaft für die Hintergrundgröße, um die Bildgröße zu ändern.
HTML:
<div id="image"></div>
CSS:
#image { background-image: url('image1'); background-size: 300px 390px; width: 300px; height:390px; } #image:hover{ background: url("image2"); background-size: 300px 390px; }
quelle
Ich würde empfehlen, wenn möglich nur CSS zu verwenden. Meine Lösung wäre:
HTML:
<img id="img" class="" src="" />
CSS:
img#img{ background: url("pictureNumberOne.png"); background-size: 100px 100px; /* Optional transition: */ transition: background 0.25s ease-in-out; } img#img:hover{ background: url("pictureNumberTwo.png"); background-size: 100px 100px; }
Dies (ohne das src- Attribut zu definieren) stellt auch sicher, dass transparente Bilder (oder Bilder mit transparenten Teilen) korrekt angezeigt werden (andernfalls würden Sie auch Teile des ersten Bildes sehen, wenn das zweite Bild halbtransparent wäre).
Das Attribut Hintergrundgröße wird verwendet, um die Höhe und Breite eines Hintergrundbilds festzulegen.
Wenn Sie (aus irgendeinem Grund) das BG-Bild eines Bildes nicht ändern möchten, können Sie das Bild auch wie folgt in einen Div-Container einfügen:
HTML:
<div id="imgContainer" class=""> <img id="" class="" src="" /> </div>
... und so weiter.
quelle
Verwenden Sie "content:;" am Schwebeflug. Das funktioniert.
quelle
Verwenden Sie einfach Photoshop und erstellen Sie zwei gleiche Bilder. Das erste ist das, wie es aussehen soll, das zweite ist, wie es aussehen soll, wenn Sie den Mauszeiger darüber halten. Ich wickle das Bild in ein
<a>
Tag ein, weil ich davon ausgehe, dass es das ist, was Sie wollen. In diesem Beispiel mache ich ein Facebook-Symbol, das entsättigt ist, aber wenn Sie den Mauszeiger darüber halten, wird die blaue Farbe von Facebook angezeigt.<a href="www.facebook.com"><img src="place of 1st image" onmouseover="this.src='place of 2nd image'" onmouseout="this.src='place of 1st image'"></a>
quelle
Hier ist der einfache Trick. Kopieren Sie es einfach und fügen Sie es ein.
<!DOCTYPE html> <html lang="en"> <head> <title>Change Image on Hover in CSS</title> <style type="text/css"> .card { width: 130px; height: 195px; background: url("../images/card-back.jpg") no-repeat; margin: 50px; } .card:hover { background: url("../images/card-front.jpg") no-repeat; } </style> </head> <body> <div class="card"></div> </body> </html>
quelle
Ich hatte ein ähnliches Problem.
Mit meinem Button wie folgt definiert:
<button id="myButton" class="myButtonClass"></button>
Ich hatte das Hintergrund-Styling wie folgt:
#myButton{ background-image:url(img/picture.jpg)} .myButtonClass{background-image:url(img/picture.jpg)} .myButtonClass:hover{background-image:url(img/picture_hover.jpg)}
Als ich es auf:
#myButton{} .myButtonClass{background-image:url(img/picture.jpg)} .myButtonClass:hover{background-image:url(img/picture_hover.jpg)}
Die Hover-Over-Funktion hat einwandfrei funktioniert.
(Nicht auf andere Attribute wie Größe und Position des Bildes oder des Containers eingehen, sondern nur das Hintergrundbild ändern)
quelle