自己用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 相关文章推荐
document.designMode的功能与使用方法介绍
Nov 22 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
Aug 30 Javascript
jquery ajax属性async(同步异步)示例
Nov 05 Javascript
javascript的push使用指南
Dec 05 Javascript
轻松学习jQuery插件EasyUI EasyUI表单验证
Dec 01 Javascript
jquery validate表单验证插件
Sep 06 Javascript
jQuery webuploader分片上传大文件
Nov 07 Javascript
实例解析jQuery中如何取消后续执行内容
Dec 01 Javascript
BootStrap 实现各种样式的进度条效果
Dec 07 Javascript
详解如何从零开始搭建Express+Vue开发环境
Jul 17 Javascript
如何理解Vue的v-model指令的使用方法
Jul 19 Javascript
默认浏览器设置及vue自动打开页面的方法
Sep 21 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 购物车完整实现代码
2014/06/05 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
php返回字符串中所有单词的方法
2015/03/09 PHP
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
php实现文件上传基本验证
2020/03/04 PHP
理解Javascript_12_执行模型浅析
2010/10/18 Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
Jquery遍历Json数据的方法
2015/04/20 Javascript
微信小程序form表单组件示例代码
2018/07/15 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
Nodejs对postgresql基本操作的封装方法
2019/02/20 NodeJs
javascript关于“时间”的一次探索
2019/07/24 Javascript
node.js文件操作系统实例详解
2019/11/05 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
详解node.js创建一个web服务器(Server)的详细步骤
2021/01/15 Javascript
Python中条件选择和循环语句使用方法介绍
2013/03/13 Python
python3.5使用tkinter制作记事本
2016/06/20 Python
python3之微信文章爬虫实例讲解
2017/07/12 Python
Python3多线程操作简单示例
2018/05/22 Python
django有哪些好处和优点
2020/09/01 Python
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
史上最全面的Java面试题汇总!
2015/02/03 面试题
小学生感恩父母演讲稿
2014/08/28 职场文书
初中家长评语大全
2014/12/26 职场文书
信息技术研修心得体会
2016/01/08 职场文书
JS Canvas接口和动画效果大全
2021/04/29 Javascript
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server
移除Selenium中window.navigator.webdriver值
2022/06/10 Python
IDEA中sout快捷键无效问题的解决方法
2022/07/23 Java/Android
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS