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 相关文章推荐
CCPry JS类库 代码
Oct 30 Javascript
js获取网页高度(详细整理)
Dec 28 Javascript
js 采用delete实现继承示例代码
May 20 Javascript
js 通过cookie实现刷新不变化树形菜单
Oct 30 Javascript
基于jquery实现省市区三级联动效果
Dec 25 Javascript
基于JS代码实现导航条弹出式悬浮菜单
Jun 17 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
Sep 28 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
Jul 09 Javascript
Bootstrap Table快速完美搭建后台管理系统
Sep 20 Javascript
基于jquery的on和click的区别详解
Jan 15 jQuery
如何解决.vue文件url引用文件的问题
Jan 18 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
Sep 19 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对二维数组进行排序的简单实例
2013/12/19 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
在html文件中也可以执行php语句的方法
2015/04/09 PHP
PHP读取文件内容的五种方式
2015/12/28 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
2020/04/27 PHP
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
js 获取计算后的样式写法及注意事项
2013/02/25 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
基于javascript实现判断移动终端浏览器版本信息
2014/12/09 Javascript
JavaScript常用小技巧小结
2014/12/29 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
JS不完全国际化&本地化手册 之 理论篇
2016/09/27 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
详解Angular如何正确的操作DOM
2018/07/06 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
vue+axios实现post文件下载
2019/09/25 Javascript
JS实现普通轮播图特效
2020/01/01 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
vue项目中播放rtmp视频文件流的方法
2020/09/17 Javascript
vue 使用微信jssdk,调用微信相册上传图片功能
2020/11/13 Javascript
python使用threading获取线程函数返回值的实现方法
2017/11/15 Python
30秒轻松实现TensorFlow物体检测
2018/03/14 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
2019/04/29 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
python中if及if-else如何使用
2020/06/02 Python
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
.NET面试10题
2014/02/24 面试题
出国留学介绍信
2014/01/13 职场文书
党校学习个人总结
2015/02/15 职场文书
不会写演讲稿,快来看看这篇文章!
2019/08/06 职场文书
十个Python自动化常用操作,即拿即用
2021/05/10 Python
Vue和Flask通信的实现
2021/05/19 Vue.js