Estoy tratando de agregar una superposición negra transparente a una imagen cada vez que el mouse se desplaza sobre la imagen con solo CSS. es posible? Probé esto:
http://jsfiddle.net/Zf5am/565/
Pero no puedo hacer que aparezca el div.
<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;
}
Respuestas:
Sugeriría usar un pseudo elemento en lugar del elemento de superposición. Debido a que los pseudoelementos no se pueden agregar en
img
elementos adjuntos , aún necesitaría envolver elimg
elemento.EJEMPLO EN VIVO AQUÍ - EJEMPLO CON TEXTO
En cuanto al CSS, establezca dimensiones opcionales en el
.image
elemento y colóquelo relativamente. Si está apuntando a una imagen receptiva, simplemente omita las dimensiones y esto seguirá funcionando (ejemplo) . Vale la pena señalar que solo las dimensiones deben estar en el elemento primario en comparación con elimg
elemento en sí, ver .Asigne al
img
elemento secundario un ancho del100%
principal y agreguevertical-align:top
para solucionar los problemas de alineación de la línea de base predeterminada.En cuanto al pseudo elemento, establezca un valor de contenido y colóquelo absolutamente en relación con el
.image
elemento. Un ancho / alto100%
asegurará que esto funcione con diferentesimg
dimensiones. Si desea realizar la transición del elemento, establezca una opacidad0
y agregue las propiedades / valores de transición.Utilice una opacidad de
1
al pasar el cursor sobre el pseudo elemento para facilitar la transición:FINALIZAR EL RESULTADO AQUÍ
Si desea agregar texto al pasar el mouse:
Para el enfoque más simple, simplemente agregue el texto como el
content
valor del pseudo elemento :EJEMPLO AQUÍ
Eso debería funcionar en la mayoría de los casos; sin embargo, si tiene más de un
img
elemento, es posible que no desee que aparezca el mismo texto al desplazarse. Por lo tanto, podría establecer el texto en undata-*
atributo y, por lo tanto, tener un texto único para cadaimg
elemento.EJEMPLO AQUÍ
Con un
content
valor deattr(data-content)
, el pseudo elemento agrega el texto.image
deldata-content
atributo del elemento :Puede agregar un poco de estilo y hacer algo como esto:
EJEMPLO AQUÍ
En el ejemplo anterior, el
:after
pseudo elemento sirve como superposición negra, mientras que el:before
pseudo elemento es el título / texto. Dado que los elementos son independientes entre sí, puede utilizar estilos separados para un posicionamiento más óptimo.fuente
top:30%
funciona, vea mi violín , pero para un diseño receptivo sería bueno configurarlo en el centro exacto. BTW: Gracias por esta linda respuesta.top: 50%
/transform: translateY(-50%)
para el centrado vertical. Es uno de los enfoques mencionados en esta otra respuesta si es mía - stackoverflow.com/questions/5703552/…Filtro CSS3
Aunque esta función solo se implementa en webkit y no tiene compatibilidad con el navegador , vale la pena echarle un vistazo:
Demostración de JSFiddle
Referencias
Temas similares sobre SO
fuente
Estabas cerca. Esto funcionará:
Necesitabas poner la
:hover
imagen y hacer la.overlay
portada de la imagen completa agregandoright:0;
ybottom:0
.jsfiddle: http://jsfiddle.net/Zf5am/569/
fuente
Aquí hay una buena manera de usar: after en el div de la imagen, en lugar del div de superposición adicional: http://jsfiddle.net/Zf5am/576/
fuente
.overlay
no tenía una altura o un ancho y no tenía contenido, y no puede pasar el cursor por encimadisplay:none
.En cambio, le di al div el mismo tamaño y posición que
.image
y cambia elRGBA
valor al pasar el mouse.http://jsfiddle.net/Zf5am/566/
fuente
Puede lograr esto jugando con la opacidad de la imagen y estableciendo el color de fondo de la imagen en negro. Al hacer que la imagen sea transparente, aparecerá más oscura.
CSS:
Es posible que también deba configurar la opacidad específica del navegador para que esto funcione también en otros navegadores.
fuente
Le daría una altura mínima y un ancho mínimo a su div de superposición del tamaño de la imagen, y cambiaría el color de fondo al pasar el mouse
fuente
Vea lo que he hecho aquí: http://jsfiddle.net/dyarbrough93/c8wEC/
En primer lugar, nunca estableciste las dimensiones de la superposición, lo que significa que no se mostraba en primer lugar. En segundo lugar, recomiendo simplemente cambiar el índice Z de la superposición cuando pasa el cursor sobre la imagen. Cambie la opacidad / color de la superposición para adaptarla a sus necesidades.
fuente