自己用jQuery写了一个图片的马赛克消失效果


Posted in Javascript onMay 04, 2014

其中的一个效果:
自己用jQuery写了一个图片的马赛克消失效果 
html代码:

<h1>单击图片,产生效果</h1> 
<div class="box"></div>

插件代码:
; (function ($) { 
var defaults = { 
ani: 4, //动画效果.1.马赛克向中间聚拢,2.马赛克左上角聚拢,3.马赛克拉扯消失,4.原地缩小 
delay: 3000, //动画执行时间 
url:"0",//图片路径 
count: [20, 20]//马赛克水平数量,竖直方向数量;数量不能过多,否则计算量太大,计算机执行不了,导致浏览器卡死 
} 
$.fn.gysMaSaiKe = function (opt) { 
opt = $.extend({}, defaults, opt); 
if(opt.url=="0"){alert("没有填写图片路径参数");return;} 
var obj = $(this); 
if (obj.css("position") == "static") obj.css({ "position": "relative" }); 
obj.css("overflow","hidden"); 
var objWidth = obj.width(); 
var objHeight = obj.height(); 
(function (count,url, obj) { 
var littleBoxWidth = Math.floor(objWidth / count[0]); 
var littleBoxHeight = Math.floor(objHeight / count[1]); 
var html = ""; 
var littleBoxLeft = littleBoxWidth * (-1), littleBoxTop = littleBoxHeight * (-1); for (var i = 0; i < count[1]; i++) {//行 
littleBoxTop += littleBoxHeight; 
for (var j = 0; j < count[0]; j++) {//每一行中的单个span 
littleBoxLeft += littleBoxWidth; 
html += "<span style='display:block;position:absolute;left:" + littleBoxLeft + "px;top:" + littleBoxTop + "px;width:" + littleBoxWidth + "px; height:" + littleBoxHeight + "px; background-image:url("+url+");background-position:" + (littleBoxLeft) * (-1) + "px " + (littleBoxTop) * (-1) + "px;'></span>"; 
} 
littleBoxLeft = littleBoxWidth * (-1); 
} 
obj.html(html); 
})(opt.count,opt.url,obj); 
var animation = function (ani, delay, objs) { 
var res = function () { } 
if (ani == 1) {//马赛克向中间聚拢 
res = function () { 
objs.animate({ top: objHeight / 2, left: objWidth / 2, opacity: 0 }, delay); 
setTimeout(function(){obj.html("");},delay); 
} 
} 
else if (ani == 2) {//碎片向左上角聚拢消失 
res = function () { 
objs.animate({ left: 0, top: 0, opacity: 0 }, delay); setTimeout(function () { obj.html(""); }, delay); 
} 
} 
else if (ani == 3) {//拉扯消失 
res = function () { 
objs.filter(":even").animate({top:-100,left:-100},delay); 
objs.filter(":odd").animate({ top: -100, left:900}, delay); setTimeout(function(){obj.html("");},delay); 
} 
} 
else if (ani == 4) {// 
res = function () { objs.animate({ height: 0, width: 0 }, delay);setTimeout(function(){obj.html("");},delay); } 
} 
else { 
res = function () { objs.animate({ height: 0, width: 0 }, delay);setTimeout(function(){obj.html("");},delay); } 
} 
return res; 
} (opt.ani, opt.delay, obj.children()); 
obj.on("click", "span", animation); 
} 
})(jQuery);

css代码:
.box { width: 1000px; height:600px;}

插件的调用:
$(function () { 
$(".box").gysMaSaiKe({ 
count: [10, 15], //马赛克水平数量,竖直方向数量;数量不能过多,否则计算量太大,计算机执行不了,导致浏览器卡死 
ani: 4, //动画效果.1.马赛克向中间聚拢,2.马赛克左上角聚拢,3.马赛克拉扯消失,4.原地缩小 
delay: 5000, //动画执行时间 
url: "1.jpg" //图片路径 
}); 
});
Javascript 相关文章推荐
IE8 兼容性问题(属性名区分大小写)
Jun 04 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
Oct 24 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
Oct 14 Javascript
简单谈谈Javascript中类型的判断
Oct 19 Javascript
Bootstrap table分页问题汇总
May 30 Javascript
深入理解JS DOM事件机制
Aug 06 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
Nov 25 Javascript
简单实现Bootstrap标签页
Aug 09 Javascript
Node.js使用Express.Router的方法
Nov 14 Javascript
jQuery实现的自定义轮播图功能详解
Dec 28 jQuery
详解Element-UI中上传的文件前端处理
Aug 07 Javascript
vue.js 实现a标签href里添加参数
Nov 12 Javascript
javascript实现2048游戏示例
May 04 #Javascript
Extjs 4.x 得到form CheckBox 复选框的值
May 04 #Javascript
jquery中的ajax方法怎样通过JSONP进行远程调用
May 04 #Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
May 04 #Javascript
将HTML的左右尖括号等转义成实体形式的两种实现方式
May 04 #Javascript
IE6-8中Date不支持toISOString的修复方法
May 04 #Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
May 04 #Javascript
You might like
php discuz 主题表和回帖表的设计
2009/03/13 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
使用laravel的migrate创建数据表的方法
2019/09/30 PHP
Extjs中常用表单介绍与应用
2010/06/07 Javascript
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
jquery解析xml字符串示例分享
2014/03/25 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
angular中实现控制器之间传递参数的方式
2017/04/24 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
2017/06/04 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
Django中模版的子目录与include标签的使用方法
2015/07/16 Python
浅谈python配置与使用OpenCV踩的一些坑
2018/04/02 Python
OpenCV 边缘检测
2019/07/10 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
阿迪达斯奥地利官方商城:adidas.at
2016/10/16 全球购物
台湾SHOPRO购物行家:亚洲首创影视.3C.家电.优质购物平台
2018/05/07 全球购物
如何启动时不需输入用户名与密码
2014/05/09 面试题
八年级生物教学反思
2014/01/22 职场文书
2014年学校食堂工作总结
2014/11/25 职场文书
安全主题班会教案
2015/08/12 职场文书
担保书范文
2019/07/09 职场文书
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python