Ich versuche, einem Bild eine transparente schwarze Überlagerung hinzuzufügen, wenn die Maus nur mit CSS über dem Bild schwebt. Ist das möglich? Ich habe es versucht:
http://jsfiddle.net/Zf5am/565/
Aber ich kann die Div nicht dazu bringen, aufzutauchen.
<div class="image">
<img src="http://www.newyorker.com/online/blogs/photobooth/NASAEarth-01.jpg" alt="" />
<div class="overlay" />
</div>
.image {
position: relative;
border: 1px solid black;
width: 200px;
height: 200px;
}
.image img {
max-width: 100%;
max-height: 100%;
}
.overlay {
position: absolute;
top: 0;
left: 0;
display: none;
background-color: red;
z-index: 200;
}
.overlay:hover {
display: block;
}
Antworten:
Ich würde vorschlagen, ein Pseudoelement anstelle des Überlagerungselements zu verwenden. Da Pseudoelemente nicht zu eingeschlossenen
img
Elementen hinzugefügt werden können, müssten Sie dasimg
Element dennoch umbrechen .LIVE BEISPIEL HIER - BEISPIEL MIT TEXT
Stellen Sie für das CSS optionale Abmessungen für das
.image
Element ein und positionieren Sie es relativ. Wenn Sie ein ansprechendes Bild anstreben, lassen Sie einfach die Abmessungen weg, und dies funktioniert weiterhin (Beispiel) . Es ist nur zu beachten , dass die Abmessungen auf dem übergeordnete Element zu dem im Gegensatz sein mussimg
Element selbst sehen .Geben Sie dem untergeordneten
img
Element eine Breite des100%
übergeordneten Elements und fügen Sievertical-align:top
es hinzu , um die Standardprobleme bei der Ausrichtung der Grundlinie zu beheben.Legen Sie für das Pseudoelement einen Inhaltswert fest und positionieren Sie ihn absolut relativ zum
.image
Element. Eine Breite / Höhe von stellt100%
sicher, dass dies mit unterschiedlichenimg
Abmessungen funktioniert . Wenn Sie das Element wechseln möchten, legen Sie die Deckkraft von fest0
und fügen Sie die Übergangseigenschaften / -werte hinzu.Verwenden Sie eine Deckkraft von,
1
wenn Sie mit der Maus über das Pseudoelement fahren, um den Übergang zu erleichtern:ENDE ERGEBNIS HIER
Wenn Sie beim Schweben Text hinzufügen möchten:
Für den einfachsten Ansatz fügen Sie einfach den Text als
content
Wert des Pseudoelements hinzu:BEISPIEL HIER
Das sollte in den meisten Fällen funktionieren. Wenn Sie jedoch mehr als ein
img
Element haben, möchten Sie möglicherweise nicht, dass beim Hover derselbe Text angezeigt wird. Sie können daher den Text in einemdata-*
Attribut festlegen und haben daher für jedesimg
Element einen eindeutigen Text .BEISPIEL HIER
Mit einem
content
Wert vonattr(data-content)
fügt das Pseudo-Element den Text aus dem.image
Element -data-content
Attribute:Sie können etwas Styling hinzufügen und so etwas tun:
BEISPIEL HIER
Im obigen Beispiel
:after
dient das Pseudoelement als schwarze Überlagerung, während das:before
Pseudoelement die Beschriftung / der Text ist. Da die Elemente unabhängig voneinander sind, können Sie für eine optimalere Positionierung ein separates Styling verwenden.quelle
top:30%
funktioniert, siehe meine Geige , aber für ein ansprechendes Layout wäre es schön, es genau auf die Mitte einzustellen. Übrigens: Danke für diese nette Antwort.top: 50%
/transform: translateY(-50%)
für die vertikale Zentrierung. Es ist einer der Ansätze, die in dieser anderen Antwort erwähnt werden, wenn meins - stackoverflow.com/questions/5703552/…CSS3-Filter
Obwohl diese Funktion nur im Webkit implementiert ist und keine Browserkompatibilität aufweist , lohnt es sich, einen Blick darauf zu werfen:
JSFiddle Demo
Verweise
Ähnliche Themen zu SO
quelle
Du warst nah. Das wird funktionieren:
Sie mussten das Bild aufsetzen und
:hover
das.overlay
Cover durch Hinzufügen vonright:0;
und zum gesamten Bild machenbottom:0
.jsfiddle: http://jsfiddle.net/Zf5am/569/
quelle
Hier ist eine gute Möglichkeit: nach dem Bild-Div anstelle des zusätzlichen Overlay-Div: http://jsfiddle.net/Zf5am/576/
quelle
.overlay
hatte keine Höhe oder Breite und keinen Inhalt, und Sie können nicht darüber schwebendisplay:none
.Ich gab dem Div stattdessen die gleiche Größe und Position wie
.image
und ÄnderungenRGBA
Wert beim Hover .http://jsfiddle.net/Zf5am/566/
quelle
Sie können dies erreichen, indem Sie mit der Deckkraft des Bildes spielen und die Hintergrundfarbe des Bildes auf Schwarz setzen. Wenn Sie das Bild transparent machen, wird es dunkler.
CSS:
Möglicherweise müssen Sie auch die browserspezifische Deckkraft festlegen, damit dies auch in anderen Browsern funktioniert.
quelle
Ich würde Ihrem Overlay-Div eine minimale Höhe und minimale Breite der Größe des Bildes geben und die Hintergrundfarbe beim Hover ändern
quelle
Sehen Sie hier, was ich getan habe: http://jsfiddle.net/dyarbrough93/c8wEC/
Zunächst einmal haben Sie nie die Abmessungen des Overlays festgelegt, was bedeutet, dass es überhaupt nicht angezeigt wurde. Zweitens empfehle ich, nur den Z-Index der Überlagerung zu ändern, wenn Sie mit der Maus über das Bild fahren. Ändern Sie die Deckkraft / Farbe des Overlays entsprechend Ihren Anforderungen.
quelle