Aquí hay dos w Si puede hacer esto, ambos implican envolver la imagen en un elemento contenedor.
el uso del fondo del contenedor
Puede configurar el fondo del elemento que contiene a rojo y luego disminuir la imágenes opacidad en vuelo estacionario:
El HTML es el siguiente:
<!-- Uses background color to fade color from behind. -->
<div id="background">
<img src="http://lorempixel.com/100/100/food" height="100" width="100" />
</div>
Y el CSS se ve así:
div { position: relative; float: left; }
img { display: block; }
#background { background: red; }
#background:hover img { opacity: 0.5; }
Usar un hermano Elemento
Puede anidar un lapso de vacío y utilizarlo como un hermano con posición absoluta que puede servir como la superposición. Mira esto - aquí está el código HTML:
<!-- Uses empty span to overlay color. -->
<div id="overlay">
<img src="http://lorempixel.com/100/100/food" height="100" width="100" />
<span></span>
<div>
Y el CSS se vería así:
div { position: relative; float: left; }
img { display: block; }
#overlay span {
background: red;
bottom: 0;
display: block;
left: 0;
opacity: 0;
position: absolute;
right: 0;
top: 0;
z-index: 1;
}
#overlay:hover span { opacity: 0.5; }
Usted puede probar una demo de cada solución aquí:
http://jsfiddle.net/jimjeffers/mG78d/1/
Posible Gotcha
Es importante tener en cuenta que para que el elemento que contiene para que coincida con el tamaño de la imagen que hay que hacer una de cuatro cosas:
- flotador que contiene el elemento.
- Posiciona absolutamente el elemento contenedor.
- Establezca el elemento contenedor para mostrar: bloque en línea.
- Defina explícitamente el alto y el ancho del elemento contenedor para que coincida con las dimensiones de la imagen.
En mi ejemplo de jsfiddle configuré los divs para que flote: izquierda ;.