2012-09-06 7 views
7

Ho scritto un plug-in per il passaggio del mouse e sto cercando di capire come oscurare tutto al di fuori della casella di zoom al passaggio del mouse e rendere trasparente la casella di zoom, ma sto avendo un momento difficile cercando di capire cosa devo fare per questo. Uso l'opacità? Uso un'immagine di sfondo?Cercando di oscurare tutto all'esterno di un div mobile

In questo momento mostra solo un'opacità di 0,5 bianco in cima a una opacità nera più scura bg, ma sto quasi graffiando la mia testa cercando di capirlo. Qualsiasi suggerimento sarebbe super utile.

Quello che sto cercando di fare:

enter image description here

Demo: jsfiddle

+3

Sembra un lavoro per le maschere CSS, anche se potrebbe essere necessario sacrificare il supporto del browser: http://www.webkit.org/blog/181/css-masks/ –

+0

@MikeRobinson Oh wow :(questo è esattamente ciò che Ho bisogno, ma è un peccato che sia solo webkit. Grazie per le informazioni. –

risposta

4

Ecco un esempio di una soluzione, ma richiede di fare un paio di modifiche.

Se si imposta il quadrato di zoom per avere un'immagine di sfondo uguale all'immagine sottostante e regolare la sua posizione di sfondo per css per essere il negativo della sua posizione rispetto all'immagine originale ... lo spiego correttamente?

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

La parte importante è

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" }); 

E ho impostato lo sfondo dell'elemento zoom nella CSS per il violino, ma se avete bisogno di fare questo per più immagini si potrebbe fallo in JS semplicemente copiando l'attributo src.

+0

Soluzione molto intelligente. Ho iniziato prima a giocare con l'immagine di sfondo aggiuntiva ... – gotqn

+0

+1 .stremamente intelligente.Questo è brillante.Grazie: D –

Problemi correlati