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 相关文章推荐
jQuery EasyUI API 中文文档 - Menu菜单
Oct 03 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
Mar 13 Javascript
使用jquery制作弹出框效果
Apr 03 Javascript
jQuery实现的仿百度分页足迹效果代码
Oct 30 Javascript
跟我学习javascript的隐式强制转换
Nov 16 Javascript
livereload工具实现前端可视化开发【推荐】
Dec 23 Javascript
深入理解react-router@4.0 使用和源码解析
May 23 Javascript
基于canvas粒子系统的构建详解
Aug 31 Javascript
强大的JavaScript响应式图表Chartist.js的使用
Sep 13 Javascript
使用Vue写一个datepicker的示例
Jan 27 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
Feb 05 Javascript
JS实现音乐钢琴特效
Jan 06 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 socket通信(tcp/udp)实例分析
2016/02/14 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
2017/06/06 PHP
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
js 验证身份证信息有效性
2014/03/28 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
2016/12/21 Javascript
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
js动态引入的四种方法
2018/05/05 Javascript
Node.js 使用AngularJS的方法示例
2018/05/11 Javascript
vue中监听返回键问题
2019/08/28 Javascript
vue element upload组件 file-list的动态绑定实现
2019/10/11 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
DWR内存兼容及无法调用问题解决方案
2020/10/16 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
python del()函数用法
2013/03/24 Python
Python字符串逐字符或逐词反转方法
2015/05/21 Python
python使用opencv进行人脸识别
2017/04/07 Python
解决DataFrame排序sort的问题
2018/06/07 Python
使用Django简单编写一个XSS平台的方法步骤
2019/03/25 Python
浅析使用Python搭建http服务器
2019/10/27 Python
django框架中间件原理与用法详解
2019/12/10 Python
python自动化unittest yaml使用过程解析
2020/02/03 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
日语专业个人的求职信
2013/12/03 职场文书
经理秘书求职自荐信范文
2014/03/23 职场文书
廉洁使者实施方案
2014/03/29 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
费用申请报告范文
2015/05/15 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
大学生暑期实践报告之企业经营管理
2019/08/08 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL