JavaScript 学习笔记之一jQuery写法图片等比缩放以及预加载


Posted in Javascript onJune 28, 2012

JavaScript 学习笔记之一jQuery写法图片等比缩放以及预加载

以前对于JavaScript总是在用到的时候在页面上写几个函数,基本没考虑到函数的封装与重用,最近有个项目可能对于这方面要求有点高,所以就研究了下类似jQuery的封装。

这里就图片等比缩放以及预加载的效果来尝试下,写写类似的JavaScript代码。

图片等比缩放以及预加载的效果如下(预加载效果有时候会不是很明显):

JS主要代码如下:

(function() { 
var yQuery = (function() { 
var yQuery = function() { 
return yQuery.fn.init(); 
}; 
yQuery.fn = yQuery.prototype = { 
init: function() { 
return this; 
}, 
//图片等比缩放以及预加载方法申明 但是感觉这样写(return new imgResizeBox(e))很别扭 请高手赐教 
imgResize: function(e) { 
return new imgResizeBox(e); 
} 
}; 
//image图片处理 
var imgResizeBox = function(e) { 
//image参数 
setting = { 
imgId: "", //图片的容器的ID 比如.viewArea img 
height: 0, 
width: 0, 
loading: "images/lightbox-ico-loading.gif" 
}; 
$.extend(setting, e, setting); //参数替换 
var images = $(setting.imgId); //获取所有图片 
$(images).hide(); //隐藏 
var loading = new Image(); //预加载图片 
loading.className = "loading"; 
loading.src = setting.loading; 
$(images).after(loading); 
//预加载函数 
var perLoading = function($this) { 
var img = new Image(); 
img.src = $this.src; 
if (img.complete) { 
computeImg.call($this); 
return; 
}; 
img.onload = function() { 
computeImg.call($this); 
img.onload = function() { }; 
}; }; 
//图片缩放处理,以及图片显示函数 
var computeImg = function() { 
var m = this.height - setting.height; 
var n = this.width - setting.width; 
if (m > n) 
this.height = this.height > setting.height ? setting.height : this.height; 
else 
this.width = this.width > setting.width ? setting.width : this.width; 
$(this).next(".loading").remove(); 
$(this).show(); 
}; 
//循环调用预加载函数 
return $(images).each(function() { 
perLoading(this); 
}); 
} 
return yQuery; 
})(); 
window.yQuery = window.$$ = yQuery(); 
})();

调用代码如下:
$(document).ready(function() 
{ 
$$.imgResize({ imgId: ".viewArea img", height:160, width:270, loading: "https://3water.com/images/2012/155618/2012062710243954.gif" }); 
});

最后附上简单的源码: jsDemo_3water.rar
Javascript 相关文章推荐
项目实践之javascript技巧
Dec 06 Javascript
Prototype Template对象 学习
Jul 19 Javascript
jquery 模式对话框终极版实现代码
Sep 28 Javascript
Ext grid 添加右击菜单
Nov 26 Javascript
使用jquery.qrcode生成彩色二维码实例
Aug 08 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
Sep 27 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
Apr 14 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
Dec 08 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
Feb 17 Javascript
bootstrap弹出层的多种触发方式
May 10 Javascript
vue中七牛插件使用的实例代码
Jul 28 Javascript
小程序点餐界面添加购物车左右摆动动画
Sep 23 Javascript
Fixie.js 自动填充内容的插件
Jun 28 #Javascript
Javascript的各种节点操作实例演示代码
Jun 27 #Javascript
妙用Jquery的val()方法
Jun 27 #Javascript
jQuery.extend 函数的详细用法
Jun 27 #Javascript
浅谈Javascript事件处理程序的几种方式
Jun 27 #Javascript
javascript 事件处理程序介绍
Jun 27 #Javascript
jquery 获取自定义属性(attr和prop)的实现代码
Jun 27 #Javascript
You might like
PHP中数组的分组排序实例
2014/06/01 PHP
Destoon实现多表查询示例
2014/08/21 PHP
php+mysql实现数据库随机重排实例
2014/10/17 PHP
Laravel框架实现的上传图片到七牛功能详解
2019/09/06 PHP
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
查看图片(前进后退)功能实现js代码
2013/04/24 Javascript
css样式标签和js语法属性区别
2013/11/06 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
JS实现从表格中动态删除指定行的方法
2015/03/31 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
js中数组插入、删除元素操作的方法
2017/02/15 Javascript
jQuery插件zTree实现的多选树效果示例
2017/03/08 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
关于axios不能使用Vue.use()浅析
2018/01/12 Javascript
了解ESlint和其相关操作小结
2018/05/21 Javascript
详解vue中的父子传值双向绑定及数据更新问题
2019/06/13 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
2019/06/19 Javascript
ES6 新增的创建数组的方法(小结)
2019/08/01 Javascript
vue实现修改图片后实时更新
2019/11/14 Javascript
在vue中使用echarts(折线图的demo,markline用法)
2020/07/20 Javascript
浅谈vue 多个变量同时赋相同值互相影响
2020/08/05 Javascript
python if not in 多条件判断代码
2016/09/21 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
中学生个人自我评价
2014/02/06 职场文书
超市中秋节活动方案
2014/02/12 职场文书
目标管理责任书
2014/04/15 职场文书
出纳工作检讨书范文
2014/12/27 职场文书
2015年音乐教师个人工作总结
2015/05/20 职场文书
生日宴会祝酒词
2015/08/10 职场文书
一文帮你理解PReact10.5.13源码
2021/04/03 Javascript
浅谈Redis在直播场景的实践方案
2021/04/27 Redis
如何使用flask将模型部署为服务
2021/05/13 Python
SpringBoot2零基础到精通之数据库专项精讲
2022/03/22 Java/Android
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python