2011-09-05 17 views
9

La struttura HTMLCSS: dopo hover transizione

<div id="small_gal"> 
    <div><img src="images1.jpg" /></div> 
    <div><img src="images1.jpg" /></div> 
    <div><img src="images1.jpg" /></div> 
    <div><img src="images1.jpg" /></div> 
    <div><img src="images1.jpg" /></div> 
    <div><img src="images1.jpg" /></div> 
    <div><img src="images1.jpg" /></div> 
    <div><img src="images1.jpg" /></div> 
</div> 

Le immagini stanno avendo dropshadows modo border non è una soluzione, in quanto sarà all'esterno dell'immagine

enter image description hereenter image description here

Il confine è avendo transizione e funziona senza problemi su FF ma non in chrome o altri browser

Ecco il codice che ho hanno utilizzato

#small_gal div:hover{cursor: pointer;} 
#small_gal div:after { 
    content: ''; 
    position: absolute; 
    width: 112px; 
    height: 81px; 
    border: 3px solid #e27501; 
    left: 9px; top: 9px; 
    z-index: 9; 

    opacity: 0; 
    -webkit-transition: opacity 0.5s ease-in-out; 
    -moz-transition: opacity 0.5s ease-in-out; 
    -o-transition: opacity 0.5s ease-in-out; 
    -ms-transition: opacity 0.5s ease-in-out; 
    transition: opacity 0.5s ease-in-out; 
} 
#small_gal div:hover:after { 
    opacity: 1; 
} 

Nota:

#small_gal 

è solo il contenitore ogni immagine è avvolto in un div in modo che possiamo implementare: dopo

+0

Sei certo le transizioni CSS sono anche implementato nei browser che si usa? http://www.quirksmode.org/ – marcgg

+0

Sì, l'effetto dissolvenza del bordo funziona correttamente sul mio Firefox 6. Controlla i collegamenti in alto a destra 3, funzionano in tutti i browser. –

+0

Giù votare perché il collegamento è morto –

risposta

15

Firefox 4+ è l'unico browser che supporta la transizione di pseudo-elementi come :before e .

Fonte: http://css-tricks.com/13555-transitions-and-animations-on-css-generated-content/

+0

Ahh vero, quindi quale potrebbe essere l'alternativa? Ho provato ad usare jQuery ma è anche un disastro visto che mantenere il bordo arancione all'interno e sopra l'immagine causerà un evento di mouseout attivato sull'immagine stessa, quindi crea un effetto di fluttuazione e inoltre non è in grado di fare clic. –

+0

Ho accettato la tua risposta :) –

3

transizioni CSS sono ancora in fase sperimentale in WebKit quindi è probabile che hai raggiunto un certo margine caso bug che coinvolge il :: dopo pseudo-selettore. Suggerisco di evitarlo del tutto e di passare semplicemente a border-color. Questo ha funzionato bene in Chrome e Safari:

#small_gal div.p { 
    border: 2px solid transparent; 
    -webkit-transition: border-color 1s ease-in; 
} 

#small_gal div.p:hover { 
    border-color: orange; 
} 
+0

Grazie per il tuo feedback, posso usare il bordo, ma l'immagine sta avendo l'ombra esterna e il bordo bianco all'interno dell'img, quindi l'applicazione di qualsiasi tipo di bordo aggiungerà all'esterno dell'ombra che non è desiderato –

1

È possibile utilizzare le transizioni CSS su elementi pseudo come: before e: after se si può definire la proprietà sull'elemento stesso e utilizzare inherit nell'elemento pseudo. Quindi, nel tuo caso invece di inserire una transizione su opacity, potresti inserire una transizione su border-color.

*, *:before, *:after { 
 
    -webkit-box-sizing: border-box; 
 
    -moz-box-sizing: border-box; 
 
    box-sizing: border-box; 
 
} 
 

 
#small_gal div { 
 
    border-color: transparent; 
 
    cursor: pointer; 
 
    display: inline-block; 
 
    position: relative; 
 
    -webkit-transition: border-color 0.5s ease-in-out; 
 
    -moz-transition: border-color 0.5s ease-in-out; 
 
    -o-transition: border-color 0.5s ease-in-out; 
 
    -ms-transition: border-color 0.5s ease-in-out; 
 
    transition: border-color 0.5s ease-in-out; 
 
} 
 
#small_gal div:after { 
 
    content: ''; 
 
    position: absolute; 
 
    width: 100%; 
 
    height: 100%; 
 
    border-color: inherit; 
 
    border-style: solid; 
 
    border-width: 3px; 
 
    left: 0; 
 
    top: 0; 
 
} 
 
#small_gal div:hover { 
 
    border-color: #e27501; 
 
} 
 
#small_gal div img { 
 
    display: block; 
 
    height: auto; 
 
    max-width: 150px; 
 
    width: auto; 
 
}
<div id="small_gal"> 
 
    <div><img src="//c2.staticflickr.com/6/5826/23633880170_4bb8492de8_z.jpg" /></div> 
 
    <div><img src="//c2.staticflickr.com/6/5826/23633880170_4bb8492de8_z.jpg" /></div> 
 
    <div><img src="//c2.staticflickr.com/6/5826/23633880170_4bb8492de8_z.jpg" /></div> 
 
    <div><img src="//c2.staticflickr.com/6/5826/23633880170_4bb8492de8_z.jpg" /></div> 
 
    <div><img src="//c2.staticflickr.com/6/5826/23633880170_4bb8492de8_z.jpg" /></div> 
 
</div>