jquery插件制作 图片走廊 gallery


Posted in Javascript onAugust 17, 2012

首先创建jquery.gallery.js的插件文件,构建程序骨架。

(function ($) { 
$.fn.gallery = function () { 


return this.each(function () { 



var self = $(this); 



self.click(function () { 



}); 


}); 

} 
})(jQuery);

创建html文件,使用我们创建的插件。

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title></title> 
<script type="text/javascript" src="Scripts/jquery-1.6.2.js"></script> 
<script type="text/javascript" src="Scripts/jquery.gallery.js"></script> 
<script type="text/javascript"> 
$(document).ready(function () { 
$('img').gallery(); 
}); 
</script> 
</head> 
<body> 
<img src="Images/orderedList1.png" alt="" /> 
<img src="Images/orderedList2.png" alt="" /> 
<img src="Images/orderedList3.png" alt="" /> 
</body> 
</html>

现在我们开始考虑如何实现点击图片的时候,显示放大图片的效果。其实我们显示放大的图片不是原先的图片,而是我们clone出了一个新图片,将他添加到页面中并加以显示。此外通过计算页面高度、宽度,图片高度、宽度,滚动条位置,来实现大图居中对齐的实现。下面我们看改进后的代码:
(function ($) { 
$.fn.gallery = function () { 
return this.each(function () { 
//将this变量保存到self,目的是为了避免程序错误 
//至于原因,上章简单提到this在函数上下中中代表的对象不同 
var self = $(this); 
//统一将小图的高度设置成100(根据个人需要可以调整,或者提供options选项) 
self.height(100); //添加click事件 
self.click(function () { 
//移除id为myImgGallery的对象,其实这个对象就是大图对象 
//每次点击的时候,都要移除上一次点击时产生的大图 
$('#myImgGallery').remove(); 
self.clone() //jquery的clone方法,clone图片 
.attr('id', 'myImgGallery')//设置id为myImgGallery 
.height($(window).height() / 2)//将图片高度设置为页面可用区域高度的一半(根据自己的需要也可以设置成其他值) 
.css({ 
position: 'absolute' 
}) 
.prependTo('body')//将大图添加到body对象中 
//使用自己创建的center插件,实现图片居中 
//注意,一定要将clone的对象添加到body后才能调用center方法,否则clone对象的width和height都为0 
.center() 
.click(function () {//添加大图的click事件 
$(this).remove(); //点击大图时,删除本身 
}); 
}); 
}); 
}; 
$.fn.center = function () { 
return this.each(function () { 
$(this).css({ 
//设置绝对定位,这样他就会浮动在最上层(必要的情况下可以设置zindex属性) 
position: 'absolute', 
//设置垂直居中对齐 
top: ($(window).height() - $(this).height()) / 2 + $(window).scrollTop() + 'px', 
//设置水平居中对齐 
left: ($(window).width() - $(this).width()) / 2 + $(window).scrollLeft() + 'px' 
}); 
}); 
}; 
})(jQuery);

好了,今天的内容到此结束。

demo下载地址:jQuery.plugin.gallery

Javascript 相关文章推荐
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
Jul 11 Javascript
jQuery 幻灯片插件(带缩略图功能)
Jan 24 Javascript
图片Slider 带左右按钮的js示例
Aug 30 Javascript
实现js保留小数点后N位的代码
Nov 13 Javascript
Node.js和MongoDB实现简单日志分析系统
Apr 25 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
Nov 29 Javascript
Bootstrap CSS布局之代码
Dec 17 Javascript
轻松理解JavaScript之AJAX
Mar 15 Javascript
详解Angular2 之 结构型指令
Jun 21 Javascript
jquery使用FormData实现异步上传文件
Oct 25 jQuery
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
Jan 29 Javascript
在实例中重学JavaScript事件循环
Dec 03 Javascript
jquery插件制作教程 txtHover
Aug 17 #Javascript
IFrame跨域高度自适应实现代码
Aug 16 #Javascript
JSONP 跨域共享信息
Aug 16 #Javascript
js自执行函数的几种不同写法的比较
Aug 16 #Javascript
js三种排序算法分享
Aug 16 #Javascript
jQuery点击后一组图片左右滑动的实现代码
Aug 16 #Javascript
JavaScript高级程序设计 阅读笔记(二十) js错误处理
Aug 14 #Javascript
You might like
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
PHP CURL与java http使用方法详解
2018/01/26 PHP
PDO::inTransaction讲解
2019/01/28 PHP
php生成HTML文件的类方法
2019/10/11 PHP
javascript add event remove event
2008/04/07 Javascript
Javascript var变量隐式声明方法
2009/10/19 Javascript
extjs3 combobox取value和text案例详解
2013/02/06 Javascript
js利用数组length属性清空和截短数组的小例子
2014/01/15 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
2016/01/23 Javascript
微信小程序 UI布局常用技巧整理总结
2016/12/05 Javascript
JavaScript函数表达式详解及实例
2017/05/05 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
import与export在node.js中的使用详解
2017/09/28 Javascript
JS实现将链接生成二维码并转为图片的方法
2018/03/17 Javascript
使用webpack3.0配置webpack-dev-server教程
2018/05/29 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
2020/07/26 Javascript
js实现点击烟花特效
2020/10/14 Javascript
关于element的表单组件整理笔记
2021/02/05 Javascript
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
零基础写python爬虫之使用urllib2组件抓取网页内容
2014/11/04 Python
numpy.random模块用法总结
2019/05/27 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
Python安装whl文件过程图解
2020/02/18 Python
python 获取谷歌浏览器保存的密码
2021/01/06 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
伦敦一卡通:The London Pass
2018/11/30 全球购物
药剂专业个人求职信范文
2014/04/29 职场文书
大学应届毕业生求职信
2014/05/24 职场文书
2014年销售助理工作总结
2014/12/01 职场文书
2016年春节问候语
2015/11/11 职场文书
简单介绍 http请求响应参数、无连接无状态、MIME、状态码、端口、telnet、curl
2021/03/31 HTML / CSS
用python批量解压带密码的压缩包
2021/05/31 Python