2010-08-15 27 views
14

Come posso sfocare i bordi di un div con jQuery? Pensa a una giostra con le immagini all'interno che scorre orizzontalmente. Come posso sfumare i lati sinistro e destro in modo che le immagini vicino ai bordi scompaiano gradualmente.Bordi di dissolvenza di div con jQuery

Spero sia chiaro. :)

+3

Forse dovresti postare del codice, in modo che le persone possano dare qualche suggerimento su come implementare questo effetto? –

+0

Non riesco a trovare scuse, ma suppongo che possa essere fatto mettendo gli elementi sul cursore con un png che svanirebbe il contenuto. –

risposta

0

Un modo semplice per visualizzare un set di div oltre i bordi come strisce verticali con diversi livelli di opacità, dando l'impressione che le immagini vengano sfumate.

+0

Il numero di immersioni che avresti bisogno di fare questo lavoro sarebbe (penso) renderlo incredibilmente lento. Se la tua vista è una dimensione impostata, sarebbe più facile creare una singola immagine di mascheratura e sovrapporla nell'area "slide". A parte questo, potresti essere in grado di usare gradienti CSS3 ... supponendo che supportino "trasparente" in un endpoint ma non so se questo è il caso, e ovviamente non funzionerebbe in IE :-( – prodigitalson

0

Come ha detto Alex, il modo più semplice è probabilmente sovrapporre qualcosa per svanire il div sottostante. Vorrei comunque semplicemente usare un gradiente trasparente png.

Questo non sarà facile lavorare all'interno di IE6, però, ma c'è sempre un modo (personalmente non sostengo IE6 più):

http://24ways.org/2007/supersleight-transparent-png-in-ie6

19

Browser Webkit (ad es. Chrome e Safari) supportano una proprietà CSS denominata -webkit-mask, che consente di sovrapporre un elemento con un effetto CSS3 (ad esempio un gradiente lineare).

La seguente regola foglio di stile si applica un bordo bianco dissolvenza agli elementi con la classe .mask:

.mask { 
    -webkit-mask: -webkit-linear-gradient(
      left, 
     rgba(255,255,255,0), 
     rgba(255,255,255,1) 5%, 
     rgba(255,255,255,1) 95%, 
     rgba(255,255,255,0) 
    ); 
} 

Purtroppo, questo sarà solo lavoro nei browser basati su WebKit. Se vuoi supportare tutto il resto (cosa che probabilmente fai), potresti utilizzare al meglio PNG trasparenti.

+1

Mi hai salvato da ore di codifica inutile, ti amo –

+2

Sempre felice di essere al servizio :) votalo se ti piace la risposta! –

+0

Grazie mille! Questo è l'unico modo in cui ho trovato di sfumare un elemento di ancoraggio in modo che rimanga cliccabile. – Dmitry

4

È possibile provare un'ombra interna sul div contenente le immagini o una casella a un pixel singolo con un'ombra iniziale a sinistra oa destra. Puoi avere una serie di ombre applicate al css per questi elementi esterni, costruendo da un'ombra molto trasparente ma ampia a un'ombra abbastanza opaca. Puoi anche applicare queste ombre solo a un lato di un elemento.

per inserto: (si dovrà fare la sovrapposizione più alto del contenitore per le immagini, ma della stessa larghezza, e galleggiare overtop, se è la stessa altezza l'ombra apparirà da tutti i lati)

#container_overlay{ 
    box-shadow: inset 0px 0px 10px 10px white; 
    z-index:5;// higher than the container with the images 
} 

per un elemento su entrambe le estremità, utilizzare l'ombreggiatura normale.

#end_overlay{ 
    width:2px; 
    box-shadow: 0px 0px 10px 10px white; 
    z-index:5;// higher than the container with the images 
} 

float che a destra oa sinistra e dovrebbe funzionare su qualsiasi browser che capisce di sovrapposizione, e qualsiasi senza sovrapposizione lo ignorerà. Non penso che sia necessario avere qualcosa all'interno di questi, quindi sarebbe un oggetto invisibile con l'ombra che si rovescia.

Ho visto questo utilizzato per modificare la parte superiore e inferiore di diverse app di riviste, quindi il testo sembra scomparire quando esce dalla pagina.