javascript+canvas制作九宫格小程序


Posted in Javascript onDecember 28, 2014

js核心代码

/*

 *canvasid:html canvas标签id

 *imageid:html img 标签id

 *gridcountX:x轴图片分割个数

 *gridcountY:y轴图片分割个数

 *gridspace:宫格空隙

 *offsetX:x*y宫格相对canvas(0,0)X坐标偏移量

 **offsetX:x*y宫格相对canvas(0,0)Y坐标偏移量

 *isanimat:是否启用动画显示

 */

function ImageGrid(canvasid, imageid, gridcountX, gridcountY, gridspace, offsetX, offsetY, isanimat) {

    var image = new Image();

    var g = document.getElementById(canvasid).getContext("2d");

    var img=document.getElementById(imageid);

    image.src=img.getAttribute("src");

    g.drawImage(image, 0, 0);

    var imagedata = g.getImageData(0, 0, image.width, image.height);

    var grid_width = imagedata.width / gridcountX;

    var grid_height = imagedata.height / gridcountY;

    //动画

    if (isanimat) {

        var x = 0,

            y = 0;

        var inter = setInterval(function() {

            g.putImageData(imagedata, gridspace * x + offsetX, gridspace * y + offsetY, grid_width * x, grid_height * y, grid_width, grid_height);

            x < gridcountX ? x++ : x = 0;

            if (x == 0) {

                y < gridcountY ? y++ : y = 0;

            }

        }, 200);

        y == gridcountY ? clearInterval(inter) : null;

    } else { //非动画

        for (var y = 0; y < gridcountY; y++) {

            for (var x = 0; x < gridcountX; x++) {

                g.putImageData(imagedata, gridspace * x + offsetX, gridspace * y + offsetY, grid_width * x, grid_height * y, grid_width, grid_height);

            }

        }

    }

}

html代码

<canvas id="canvas1" width="900px" height="550px">Canvas demo</canvas>

 <img id="image1" style="display:none" src="//img.jbzj.com/file_images/article/201412/2014122894620636.jpg"/>

使用方法:

//eg...

ImageGrid("canvas1", "image1", 3, 3, 2, 220, 0, true); //3*3

ImageGrid("canvas1", "image1", 4, 4, 2, 440, 0, true); //4*4

ImageGrid("canvas1", "image1", 3, 4, 2, 660, 0, false); //3*4

代码很简洁,效果却非常炫酷,小伙伴们学会了吗?

Javascript 相关文章推荐
比较详细的关于javascript 解析json的代码
Dec 16 Javascript
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
Oct 06 Javascript
探讨js字符串数组拼接的性能问题
Oct 11 Javascript
Javascript原型链和原型的一个误区
Oct 22 Javascript
node.js中的fs.openSync方法使用说明
Dec 17 Javascript
如何利用JSHint减少JavaScript的错误
Aug 23 Javascript
js 监控iframe URL的变化实例代码
Jul 12 Javascript
微信小程序promsie.all和promise顺序执行
Oct 27 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
Nov 07 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
Oct 29 Javascript
JavaScript中this用法学习笔记
Mar 17 Javascript
小程序组件之自定义顶部导航实例
Jun 12 Javascript
JavaScript设计模式之装饰者模式介绍
Dec 28 #Javascript
浅谈Javascript Base64 加密解密
Dec 28 #Javascript
JavaScript设计模式之代理模式介绍
Dec 28 #Javascript
JavaScript设计模式之外观模式介绍
Dec 28 #Javascript
JavaScript阻止事件冒泡示例分享
Dec 28 #Javascript
jQuery中removeData()方法用法实例
Dec 27 #Javascript
jQuery中data()方法用法实例
Dec 27 #Javascript
You might like
php下判断数组中是否存在相同的值array_unique
2008/03/25 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
thinkphp判断访客为手机端或PC端的方法
2014/11/24 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
php实现生成验证码实例分享
2016/04/10 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
2017/10/17 PHP
JavaScript 在线压缩和格式化收藏
2009/01/16 Javascript
js实现九宫格图片半透明渐显特效的方法
2015/02/16 Javascript
深入学习JavaScript中的原型prototype
2015/08/13 Javascript
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
2016/11/10 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
JavaScript、C# URL编码、解码总结
2017/01/21 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例
2014/06/10 Python
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
2015/04/25 Python
Python3.2模拟实现webqq登录
2016/02/15 Python
python常见的格式化输出小结
2016/12/15 Python
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
使用Python中的reduce()函数求积的实例
2019/06/28 Python
pytorch实现线性拟合方式
2020/01/15 Python
Python导入数值型Excel数据并生成矩阵操作
2020/06/09 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
朗仕(Lab series)英国官网:雅诗兰黛集团男士专属护肤品牌
2017/11/28 全球购物
五四青年节优秀演讲稿范文
2014/05/28 职场文书
青年志愿者活动方案
2014/08/17 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
中班教师个人总结
2015/02/05 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS