O objetivo deste exemplo é mostrar como criar um efeito de suspensão de mouse de uma imagem em escala de cinza/colorida usando HTML5 e JQuery. Antes de aparecer o HTML5, alcançar esse efeito exigia duas imagens, versões coloridas e em escala de cinza. O HTML5 agora torna a criação desse efeito mais fácil e eficiente, pois as imagens cinza serão geradas diretamente a partir do arquivo original. Espero que você ache este script útil em designs, como armários de exibição ou álbuns de fotos.
O código jQuery a seguir procurará a imagem de destino e gerará uma versão em escala de cinza. Quando o mouse é suspenso na imagem, o código muda gradualmente a imagem em escala de cinza para colorir.
- <MCE: scriptsrc = jQuery.min.jsmce_src = jquery.min.jstype = text/javascript> </mce: script>
- <MCE: scripttype = text/javascript> <!-
- //OnWindowLoad.Thiswaitsuntilimageshaveleded Whatsisncial
- $ (janela) .load (function () {
- // FadeInImagESSOTHERIS NÃOCOLORPOPDOCUMENTLOTLOT e TENHONWindowLoad
- $ (. ItemImg) .Fadein (500);
- // CLONEIMAGE
- $ ('. itemimg'). cada (function () {
- varel = $ (this);
- el.css ({position: absoluto}). wrap (<divclass = 'img_wrapper'style = display: inline-blockmce_style = display: inline-block>). clone (). addclass ('img_grayscale'). css ({posição: absoluto, z-index: 998, opacidade: 0}). inserirfore (el) .queue (function () {
- varel = $ (this);
- el.parent (). css ({width: this.width, altura: this.Height});
- el.dequeue ();
- });
- this.src = cinza (this.src);
- });
- // Fadeimage
- $ ('. ItemImg'). MouseOver (function () {
- $ (this) .Parent (). Find ('img: primeiro'). Stop (). Animate ({Opacity: 1}, 1000);
- })
- $ ('. img_grayscale'). mouseout (function () {
- $ (this) .Stop (). Animate ({Opacity: 0}, 1000);
- });
- });
- // GraysCalewCanvasmethod
- functionGrayScale (SRC) {
- varcanvas = document.createElement ('canvas');
- Varctx = Canvas.getContext ('2D');
- varimgoBJ = newImage ();
- imgobj.src = src;
- canvas.width = imgobj.width;
- canvas.Height = imgobj.Height;
- ctx.drawimage (imgobj, 0,0);
- varimgpixels = ctx.getImagedata (0,0, canvas.width, canvas.Height);
- for (variar = 0; y <imgpixels.Height; y ++) {
- for (varx = 0; x <imgpixels.width; x ++) {
- vari = (y*4)*imgpixels.width+x*4;
- varavg = (imgpixels.data [i]+imgpixels.data [i+1]+imgpixels.data [i+2])/3;
- imgpixels.data [i] = avg;
- imgpixels.data [i+1] = avg;
- imgpixels.data [i+2] = avg;
- }
- }
- ctx.putImagedata (imgpixels, 0,0,0,0, imgpixels.width, imgpixels.height);
- returnCanvas.todataurl ();
- }
- //-> </mce: script>
Como usar * CITAÇÃO JQUERY.JS
* Cole o código acima
* Defina a imagem de destino (por exemplo. Post-IMG, IMG, .Gallery IMG, etc.)
* Você pode alterar a velocidade da animação (por exemplo, 1000 = 1 segundo)
compatibilidade Pode trabalhar em qualquer navegador que suporta HTML5 e JavaScript, como Chrome, Safari e Firefox. Se o navegador não suportar o HTML5, esse efeito voltará à imagem colorida original. Nota: Se o arquivo local não funcionar no Firefox e Chrome, você deverá colocar o código HTML em um servidor da Web.