2012-09-06 8 views
7

Escribí un plugin de zoom hover y estoy tratando de encontrar la forma de oscurecer todo fuera del cuadro de zoom y hacer que el cuadro de zoom sea transparente, pero estoy teniendo un momento difícil tratando de descubrir lo que tengo que hacer para ello. ¿Uso opacidad? ¿Utilizo una imagen de fondo?Intentando ocultar todo lo que está fuera de un div móvil

Ahora mismo está mostrando una opacidad blanca de .5 encima de una opacidad negra más oscura bg, pero me estoy rascando la cabeza tratando de resolver esto. Cualquier sugerencia sería muy útil.

Lo que estoy tratando de hacer:

enter image description here

Demostración: jsfiddle

+3

Suena como un trabajo para máscaras de CSS, aunque es posible que tenga que sacrificar algo de compatibilidad con el navegador: http://www.webkit.org/blog/181/css-masks/ –

+0

@MikeRobinson Oh wow :(esto es exactamente lo que Necesito, pero es un fastidio, solo webkit. Gracias por la información. –

Respuesta

4

He aquí un ejemplo de una solución, pero requiere que hacer un par de cambios.

Si establece el zoom cuadrado para tener una imagen de fondo igual a la imagen subyacente y ajusta su posición de fondo en css para ser el negativo de su posición relativa a la imagen original ... ¿lo estoy explicando correctamente?

http://jsfiddle.net/moopet/Be9AA/

La parte importante es

var left = Math.min(Math.max(relX - 100, 0), $origImg.width() - $zoomBox.width()), 
    top = Math.min(Math.max(relY - 100, 0), $origImg.height() - $zoomBox.height()); 

$zoomBox.css({ 
    left: left, 
    top: top 
}); 

$zoomBox.css({ backgroundPosition: (-left) + "px " + (-top) + "px" }); 

Y he configurado el fondo del elemento de zoom en el CSS para el violín, pero si usted necesita para hacer esto por varias imágenes que podrían hazlo en JS simplemente copiando el atributo src.

+0

Solución muy inteligente. He empezado primero a jugar con la imagen de fondo adicional ... – gotqn

+0

+1. Extremadamente inteligente. Esto es brillante. Gracias: D –

Cuestiones relacionadas