El propósito de este ejemplo es mostrarle cómo crear un efecto de suspensión del mouse de una imagen de escala de grises/color utilizando HTML5 y jQuery. Antes de que apareciera HTML5, lograr este efecto requirió dos imágenes, versiones de color y escala de grises. HTML5 ahora hace que la creación de este efecto sea más fácil y más eficiente, ya que las imágenes grises se generarán directamente a partir del archivo original. Espero que encuentre este script útil en diseños como gabinetes de exhibición o álbumes de fotos.
El siguiente código jQuery buscará la imagen de destino y generará una versión en escala de grises. Cuando el mouse se suspende en la imagen, el código cambiará gradualmente la imagen de la escala de grises a color.
- <MCE: scriptsrc = jQuery.min.jsmce_src = jQuery.min.jstype = text/javascript> </mce: script>
- <MCE: scriptType = text/javaScript> <!-
- //Onwindowload.
- $ (ventana) .load (function () {
- // FadeIniMagessothereis noColorpOpDocumentLoad y ThenonWindowLoad
- $ (. Itemimg) .fadein (500);
- // Cloneimage
- $ ('. Itemimg'). Cada (function () {
- varel = $ (esto);
- el.css ({posición: absoluto}). wrap (<divclass = 'img_wrapper'style = display: inline-blockmce_style = display: inline-block>). clone (). addClass ('img_grayscale'). css ({posición: absoluto, z-odex: 998, opacidad: 0}). insertbefore (el) .queue (function () {
- varel = $ (esto);
- El.Parent (). CSS ({ancho: this.width, altura: this.Height});
- el.dequeue ();
- });
- this.src = GrayScale (this.src);
- });
- // FadeImage
- $ ('. Itemimg'). Mouseover (function () {
- $ (this) .parent (). find ('img: primero'). stop (). Animate ({Opacidad: 1}, 1000);
- })
- $ ('. IMG_GRAYSCALE'). MouseOut (function () {
- $ (this) .stop (). Animate ({Opacidad: 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);
- para (varar = 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>
Cómo usar * Cita jQuery.js
* Pega el código anterior
* Establezca la imagen de destino (por ejemplo .post-img, img, .gallery img, etc.)
* Puede cambiar la velocidad de la animación (por ejemplo, 1000 = 1 segundo)
compatibilidad Puede trabajar en cualquier navegador que admita HTML5 y JavaScript, como Chrome, Safari y Firefox. Si el navegador no admite HTML5, este efecto volverá a la imagen de color original. Nota: Si el archivo local no funciona en Firefox y Chrome, debe colocar el código HTML en un servidor web.