CSS或JS实现gif动态图片的停止与播放

来源:互联网 发布:daogrs知乎 编辑:程序博客网 时间:2024/05/20 06:39
if ('getContext' in document.createElement('canvas')) {    HTMLImageElement.prototype.play = function() {        if (this.storeCanvas) {            // 移除存储的canvas            this.storeCanvas.parentElement.removeChild(this.storeCanvas);            this.storeCanvas = null;            // 透明度还原            image.style.opacity = '';        }        if (this.storeUrl) {            this.src = this.storeUrl;            }    };    HTMLImageElement.prototype.stop = function() {        var canvas = document.createElement('canvas');        // 尺寸        var width = this.width, height = this.height;        if (width && height) {            // 存储之前的地址            if (!this.storeUrl) {                this.storeUrl = this.src;            }            // canvas大小            canvas.width = width;            canvas.height = height;            // 绘制图片帧(第一帧)            canvas.getContext('2d').drawImage(this, 0, 0, width, height);            // 重置当前图片            try {                this.src = canvas.toDataURL("image/gif");            } catch(e) {                // 跨域                this.removeAttribute('src');                // 载入canvas元素                canvas.style.position = 'absolute';                // 前面插入图片                this.parentElement.insertBefore(canvas, this);                // 隐藏原图                this.style.opacity = '0';                // 存储canvas                this.storeCanvas = canvas;            }        }    };}

大家只要在页面中自己的JS文件中复制上面的代码,然后就可以直接:

var image = document.getElementsByTagName("img")[0];// 停止gif图片image.stop();// 播放gif图片image.play();

1. IE9+支持。IE7/IE8不支持canvas没搞头。
2. 只能停止gif,不能真正意义的暂停。因为canvas获得的gif图片信息为第一帧的信息,后面的貌似获取不到。要想实现暂停,而不是停止,还需要进一步研究。

原文链接:http://www.zhangxinxu.com/wordpress/2015/12/css3-animation-js-canvas-gif-pause-stop-play/

1 0
原创粉丝点击