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 面向对象编程(1) 基础
May 18 Javascript
javascript textarea光标定位方法(兼容IE和FF)
Mar 12 Javascript
了不起的node.js读书笔记之mongodb数据库交互
Dec 22 Javascript
JavaScript Math.floor方法(对数值向下取整)
Jan 09 Javascript
jQuery实现平滑滚动的标签分栏切换效果
Aug 28 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
Dec 02 Javascript
jQuery简单实现上下,左右滑动的方法
Jun 01 Javascript
javascript 中的console.log和弹出窗口alert
Aug 30 Javascript
js原生实现移动端手指滑动轮播图效果的示例
Jan 02 Javascript
详解wepy开发小程序踩过的坑(小结)
May 22 Javascript
Element Tooltip 文字提示的使用示例
Jul 26 Javascript
Vite和Vue CLI的优劣
Jan 30 Vue.js
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对MongoDB[NoSQL]数据库的操作
2013/03/01 PHP
php设置session值和cookies的学习示例
2014/03/21 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
weiphp微信公众平台授权设置
2016/01/04 PHP
php 二维数组快速排序算法的实现代码
2017/10/17 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
window.open不被拦截的实现代码
2012/08/22 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
Jquery选中或取消radio示例
2013/09/29 Javascript
zeroclipboard 单个复制按钮和多个复制按钮的实现方法
2014/06/14 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
基于AngularJS实现iOS8自带的计算器
2016/09/12 Javascript
微信小程序链接传参并跳转新页面
2016/11/29 Javascript
JS判断非空至少输入两个字符的简单实现方法
2017/06/23 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
vue.js自定义组件实现v-model双向数据绑定的示例代码
2020/01/08 Javascript
js实现左右轮播图
2020/01/09 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
Python微医挂号网医生数据抓取
2019/01/24 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
OpenCV 模板匹配
2019/07/10 Python
python在新的图片窗口显示图片(图像)的方法
2019/07/11 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2019/07/22 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
Perfume’s Club中文官网:西班牙美妆在线零售品牌
2020/08/24 全球购物
static关键字的用法
2013/10/07 面试题
庆祝教师节演讲稿
2014/09/03 职场文书
社区党的群众路线教育实践活动总结材料
2014/10/31 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
护理实习生带教计划
2015/01/16 职场文书
毕业生个人总结
2015/02/28 职场文书
《分数的意义》教学反思
2016/02/20 职场文书
golang 实现对Map进行键值自定义排序
2021/04/28 Golang