Text bei Hover über Bild

Superdok

Erfahrenes Mitglied
Hi,
ich will erreichen, dass wenn man über ein Bild hovert ein Text anstelle des Bildes angezeigt wird. Also ein Effekt, so dass man dann beim Hovern die weisse/schwarze (oder wie auch immer) "Rückseite" des Bilder sieht mit einem Text drauf.
Ist sowas möglich mit CSS oder braucht man dafür Javascript?
 
Hi,

vielleicht hilft dir hier dieses Modell weiter?

HTML:
<span class="wrapperBox">
      <img src="bild.jpg" width="200" height="50" alt=""><span>Text bei Hover über Bild</span>
</span>
CSS:
span.wrapperBox img {
display:block;
}
span.wrapperBox span {
display:none;
position:absolute;
z-index:2;
margin-top:-50px; /* Element mit Text wird um 50px nach oben verschoben */
width:200px; /* entspricht der Bildbreite */
height:50px; /* entspricht der Bildhöhe */
background:#fff;
}
span.wrapperBox:hover span {
display:block;
}

mfg Maik
 
Code:
<span class="image_box"> <img src="http://www.tutorials.de/forum/images/test.jpg" width="200" height="161" alt=""><span>Threeview Blog</span> </span> </div>

Code:
span.image_box img {
	display:block;
}
span.image_box span {
	display:none;
	position:absolute;
	z-index:2;
	margin-top:-161px; /* Element mit Text wird um 161px nach oben verschoben */
	width:200px; /* entspricht der Bildbreite */
	height:161px; /* entspricht der Bildhöhe */
	background:#000;
}
span.image_box:hover span {
	display:block;
}

Ich habe es mit einem Bild getestet in der Größe 200x161

Im Firefox wird alles soweit richtig angezeigt, außer dass die Hoverfläche auch noch rechts ins Leere geht, obwohl dort kein Bild ist

Im IE (7) wird der Hintergrund der Textfläche rechts oben vom Bild angeziegt und nicht überhalb des Bildes
 
Dass die :hover-Pseudoklasse auch neben dem Bildelement anspringt, ist der display:block-Deklaration für eben dieses <img>-Element geschuldet.

Du kannst ja mal im Gegenvergleich überprüfen, wie es sich in den Browseransichten ohne diese Angabe verhält, wenn der Text über dem Bild eingeblendet wird.

Abhilfe schafft hier diese Regelerweiterung für das umschliessende <span>, die dafür sorgt, dass sich seine Elementbreite aus dem Inhalt ergibt:
CSS:
span.wrapperBox { 
float:left; 
}
Soll dieses Element im Textfluß grundsätzlich aber garnicht zu seiner rechten Seite umflossen werden, muß für das im HTML-Code darauffolgende Element clear:left angegeben werden.

Was die Fehldarstellung im IE7 betrifft, möchte ich anmerken, dass ich vorhin meinen Vorschlag nicht zunächst in einem Testlauf browserübergreifend und in älteren Browserversionen auf seine Funktionalität überprüft habe, sondern lediglich einen Lösungsansatz aufzeigen wollte, wie sich dein Vorhaben mit CSS umsetzen lässt. Im aktuellen IE8 funktioniert mein Code übrigens einwandfrei.

Jedoch, wenn ich die CSS-Regeln in den Selektoren umstelle, richtet der IE7 den Text auch über dem Bild aus:
CSS:
span.wrapperBox img {
display:block;
}
span.wrapperBox span {
display:none;
}
span.wrapperBox:hover span {
display:block;
position:absolute;
z-index:2;
margin-top:-50px; /* Element mit Text wird um 50px nach oben verschoben */
width:200px; /* entspricht der Bildbreite */
height:50px; /* entspricht der Bildhöhe */
background:#fff;
}

Falls du hier auch den IE6 berücksichtigst, empfehle ich dir http://code.google.com/p/ie7-js/, da er die :hover-Pseudoklasse ausschließlich für das <a>-Element interpretiert.

mfg Maik
 
Danke, das "float:left;" behebt tatsächlich den Fehler beim Hovern, obwohl ich die Sache mit der Elementbreite nicht ganze verstanden hab. Sorgt ein float:left immer dafür, dass sich die Breite aus dem Inhalt ergibt oder nur in diesem Fall?

Auf jeden Fall funktioniert es jetzt, sowohl im Internetexplorer als auch im FF. Nun ja ich hab den Code jetzt noch ein wenig angepasst und wollte letzendlich erreichen eine schwarze transparente Fläche überhalb des Bildes zu legen. Ich hab mir gedacht, da eh ein background verwendet wird, dass ich dieses ersetze mit background-image und einer transparenten png. Also
Code:
background-image: url('images/work_top.png');
Auf dieses soll dan später der Text drauf bzw. ich ändere das transparente Bild ab oder wie auch immer. Nur leider wird das transparente schwarze nicht angezeigt, obwohl ja die Hintergrundfarbe angezeigt wird. An welcher Stelle liegt hier mein Denkfehler?
 
float sorgt immer dafür, dass sich die Elementbreite aus dem Inhalt ergibt.

Mit einem (semitransparenten) Hintergrundbild funktioniert es bei mir einwandfrei:
CSS:
span.wrapperBox:hover span {
display:block;
position:absolute;
z-index:2;
margin-top:-50px; /* Element mit Text wird um 50px nach oben verschoben */
width:200px; /* entspricht der Bildbreite */
height:50px; /* entspricht der Bildhöhe */
background:url(pfad/zur/grafik.png);
}

mfg Maik
 
Code:
span.image_box {
	float:left;
}
span.image_box img {
	display:block;
}
span.image_box span {
	display:none;
}
span.image_box:hover span {
        text-align: center;
	display:block;
	position:absolute;
	z-index:2;
	margin-top:-161px;
	width:200px; /* entspricht der Bildbreite */
	height:161px; /* entspricht der Bildhöhe */
	background:url('images/work_top.png');	
}

Code:
<span class="image_box"> <img src="http://www.tutorials.de/forum/images/test.jpg" width="200" height="161" alt="Test" /><span>Satz zum Testen</span> </span>

Ich teste dies mit dem Firefox. Das transparente "work_top.png" befindet sich in "images". Ich habe das bereits mehrmals kontrolliert und vergewissert, dass es in diesem Ordner ist. Trotzdem erscheint nichts transparentes. Habe ich einen Fehler gemacht? mit "background: #000" funktioniert es komischerweise ohne Probleme. Könntest du mir deine Testdatei geben?

Edit: Ach sorry, ich habe meinen Denkfehler entdeckt. Die style.css liegt bei mir im Ordner "styles", also lag dort das Problem. Ich werde nun mal weiter machen und melden, wenn ich wieder irgendwo hänge
 
Zuletzt bearbeitet:
Edit: Ach sorry, ich habe meinen Denkfehler entdeckt. Die style.css liegt bei mir im Ordner "styles", also lag dort das Problem.
Für den interessierten Mitleser: Demnach muß der korrekte Pfad "background:url('../images/work_top.png')" lauten.

meinst du so inder Art?

http://www.radundski.de/bildwechseltext/bildwechsel.html

müsste in allen Browsern funktionieren
Der schlichte Austausch zweier Hintergrundbilder wäre Superdok sicherlich selbst in den Sinn gekommen, wenn es so erwünscht gewesen wäre.

Und da das Thema von ihm zwischenzeitlich als "erledigt" (= gelöst) markiert wurde, ist davon auszugehen, dass ich sein Anliegen mit meinem Lösungsvorschlag richtig interpretiert habe.

mfg Maik
 
Zurück