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 相关文章推荐
JS Array对象入门分析
Oct 30 Javascript
JS 获取滚动条高度示例代码
Oct 24 Javascript
jquery 取子节点及当前节点属性值
Jul 25 Javascript
javascript检查浏览器是否已经启用XX功能
Jul 10 Javascript
JavaScript简单实现鼠标移动切换图片的方法
Feb 23 Javascript
如何用JS判断两个数字的大小
Jul 21 Javascript
AngularJS 自定义过滤器详解及实例代码
Sep 14 Javascript
js给table赋值的实例代码
Oct 13 Javascript
vue项目中导入swiper插件的方法
Jan 30 Javascript
Vue动态组件与异步组件实例详解
Feb 23 Javascript
基于ajax及jQuery实现局部刷新过程解析
Sep 12 jQuery
jQuery实现穿梭框效果
Jan 19 jQuery
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 cookis创建实现代码
2009/03/16 PHP
PHP计划任务、定时执行任务的实现代码
2011/04/23 PHP
PHP中static关键字以及与self关键字的区别
2015/07/01 PHP
PHP可变函数学习小结
2015/11/29 PHP
php生成带logo二维码方法小结
2016/04/08 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
2018/09/28 PHP
在thinkphp5.0路径中实现去除index.php的方式
2019/10/16 PHP
popdiv
2006/07/14 Javascript
10分钟学会写Jquery插件实例教程
2014/09/06 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
2016/06/14 Javascript
jQuery获取select选中的option的value值实现方法
2016/08/29 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
jQuery中的siblings()是什么意思(推荐)
2016/12/29 Javascript
Bootstrap table使用方法记录
2017/08/23 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
JavaScript 中使用 Generator的方法
2017/12/29 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
微信小程序前端promise封装代码实例
2019/08/24 Javascript
基于jquery ajax的多文件上传进度条过程解析
2019/09/11 jQuery
python logging类库使用例子
2014/11/22 Python
Python使用爬虫猜密码
2016/02/19 Python
python调用百度地图WEB服务API获取地点对应坐标值
2019/01/16 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
django 模型字段设置默认值代码
2020/07/15 Python
python绘制分布折线图的示例
2020/09/24 Python
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
英国床垫和床架购物网站:Bedman
2019/11/04 全球购物
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
法学毕业生自荐信
2013/11/13 职场文书
活动邀请函范文
2014/01/19 职场文书
文明班集体申报材料
2014/05/23 职场文书
租房协议书
2014/09/12 职场文书
服务承诺书
2015/01/19 职场文书
安全生产警示教育活动总结
2015/05/09 职场文书
2016春季运动会开幕词
2016/03/04 职场文书