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 轻松支持函数重载 (Part 2 - 实现)
Aug 04 Javascript
javascript中的startWith和endWith的几种实现方法
May 07 Javascript
JS扩展方法实例分析
Apr 15 Javascript
javascript实现表单提交后,提交按钮不可用的方法
Apr 18 Javascript
Javascript动画效果(2)
Oct 11 Javascript
three.js实现围绕某物体旋转
Jan 25 Javascript
webpack3+React 的配置全解
Aug 21 Javascript
react项目实践之webpack-dev-serve
Sep 14 Javascript
vue-cli 构建骨架屏的方法示例
Nov 08 Javascript
jQuery实现动态添加和删除input框实例代码
Mar 26 jQuery
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
Feb 12 Javascript
帮你提高开发效率的JavaScript20个技巧
Jun 18 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
3.从实例开始
2006/10/09 PHP
php读取目录所有文件信息dir示例
2014/03/18 PHP
浅谈PHP中的数据传输CURL
2016/09/06 PHP
判断是否输入完毕再激活提交按钮
2006/06/26 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
将中国标准时间转换成标准格式的代码
2014/03/20 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
jQuery应用之jQuery链用法实例
2015/01/19 Javascript
jQuery实现自定义checkbox和radio样式
2015/07/13 Javascript
javascript中alert()与console.log()的区别
2015/08/26 Javascript
Web打印解决方案之证件套打的实现思路
2016/08/29 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
ReactNative之FlatList的具体使用方法
2017/11/29 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
Python字典操作简明总结
2015/04/13 Python
python获取当前计算机cpu数量的方法
2015/04/18 Python
Python socket编程实例详解
2015/05/27 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
python dlib人脸识别代码实例
2019/04/04 Python
Python pandas自定义函数的使用方法示例
2019/11/20 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
2020/04/02 Python
css3教程之倾斜页面
2014/01/27 HTML / CSS
采购类个人求职的自我评价
2014/02/18 职场文书
2014年新生军训方案
2014/05/01 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
个人授权委托书
2014/09/15 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
2014年行政执法工作总结
2014/12/11 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
法定代表人资格证明书
2015/06/18 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书
Python数据可视化之用Matplotlib绘制常用图形
2021/06/03 Python
Python中的 enumerate和zip详情
2022/05/30 Python