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 相关文章推荐
JS之小练习代码
Oct 12 Javascript
Jquery 弹出层插件实现代码
Oct 24 Javascript
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
Mar 18 Javascript
jquery设置控件位置的方法
Aug 21 Javascript
IE中getElementsByName()对有些元素无效的解决方案
Sep 28 Javascript
jQuery EasyUI提交表单验证
Jul 19 Javascript
jquery 校验中国身份证号码实例详解
Apr 11 jQuery
JS与jQuery实现子窗口获取父窗口元素值的方法
Apr 17 jQuery
JS实现json的序列化和反序列化功能示例
Jun 13 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
Jun 14 Javascript
BootStrap Fileinput上传插件使用实例代码
Jul 28 Javascript
JS async 函数的含义和用法实例总结
Apr 08 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往windows中添加用户
2006/12/06 PHP
php REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
php xfocus防注入资料
2008/04/27 PHP
php读取csv数据保存到数组的方法
2015/01/03 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
推荐40个非常优秀的jQuery插件和教程【系列三】
2011/11/09 Javascript
你必须知道的Javascript知识点之&quot;this指针&quot;的应用
2013/04/23 Javascript
js判断浏览器版本以及浏览器内核的方法
2015/01/20 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
2015/11/06 Javascript
bootstrap weebox 支持ajax的模态弹出框
2017/02/23 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
Ionic + Angular.js实现图片轮播的方法示例
2017/05/21 Javascript
vue .sync修饰符的使用详解
2018/06/15 Javascript
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
解决layui富文本编辑器图片上传无法回显的问题
2019/09/18 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
Python中subprocess模块用法实例详解
2015/05/20 Python
python发送邮件功能实现代码
2016/07/15 Python
Python爬虫实现全国失信被执行人名单查询功能示例
2018/05/03 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
使用Python批量修改文件名的代码实例
2019/01/24 Python
keras打印loss对权重的导数方式
2020/06/10 Python
html5的新增的标签和废除的标签简要概述
2013/02/20 HTML / CSS
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
美赞臣营养马来西亚旗舰店:Enfagrow马来西亚
2019/07/26 全球购物
数控专业推荐信范文
2013/12/02 职场文书
学生党支部先进事迹
2014/02/04 职场文书
模特职业生涯规划范文
2014/02/26 职场文书
学校节水倡议书
2015/04/29 职场文书
基于Nginx实现限制某IP短时间访问次数
2021/03/31 Servers
python迷宫问题深度优先遍历实例
2021/06/20 Python
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS
分享node.js实现简单登录注册的具体代码
2022/04/26 NodeJs