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 相关文章推荐
js 数值转换为3位逗号分隔的示例代码
Feb 19 Javascript
使用js获取图片原始尺寸
Dec 03 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
Jul 02 Javascript
JavaScript编程的单例设计模讲解
Nov 10 Javascript
基于jquery编写的放大镜插件
Mar 23 Javascript
AngularJS入门教程中SQL实例详解
Jul 27 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
Oct 25 Javascript
JS实现select选中option触发事件操作示例
Jul 13 Javascript
jQuery的Ajax接收java返回数据方法
Aug 11 jQuery
JS中的防抖与节流及作用详解
Apr 01 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
Jan 08 Javascript
js实现滚动条自动滚动
Dec 13 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
ftp类(myftp.php)
2006/10/09 PHP
php 删除cookie和浏览器重定向
2009/03/16 PHP
在Laravel中使用DataTables插件的方法
2018/05/29 PHP
正负小数点后两位浮点数实现原理及代码
2013/09/06 Javascript
javascript写的异步加载js文件函数(支持数组传参)
2014/06/07 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
javascript组合使用构造函数模式和原型模式实例
2015/06/04 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
JavaScript实现图片轮播组件代码示例
2016/11/22 Javascript
详解vue 数组和对象渲染问题
2018/09/21 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
python字典的常用操作方法小结
2016/05/16 Python
ubuntu17.4下为python和python3装上pip的方法
2018/06/12 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
PyQt5实现简易电子词典
2019/06/25 Python
python交易记录整合交易类详解
2019/07/03 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
python实现ftp文件传输功能
2020/03/20 Python
Python Opencv轮廓常用操作代码实例解析
2020/09/01 Python
如何用python 操作zookeeper
2020/12/28 Python
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
伦敦鲜花递送:Flower Station
2021/02/03 全球购物
公司担保书范文
2014/05/21 职场文书
学生干部培训方案
2014/06/12 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
苏州园林导游词
2015/02/03 职场文书
博士生专家推荐信
2015/03/25 职场文书
MySQL主从搭建(多主一从)的实现思路与步骤
2021/05/13 MySQL
变长双向rnn的正确使用姿势教学
2021/05/31 Python
HTML基础详解(上)
2021/10/16 HTML / CSS