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 相关文章推荐
深入学习JavaScript中的原型prototype
Aug 13 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
Oct 20 Javascript
Javascript将数字转化成为货币格式字符串
Jun 22 Javascript
js学习之----深入理解闭包
Nov 21 Javascript
原生js简单实现放大镜特效
May 16 Javascript
微信小程序之滚动视图容器的实现方法
Sep 26 Javascript
在vue组件中使用axios的方法
Mar 16 Javascript
layui实现多图片上传并限制上传的图片数量
Sep 26 Javascript
微信小程序学习总结(一)项目创建与目录结构分析
Jun 04 Javascript
js实现星星海特效的示例
Sep 28 Javascript
在Vue中使用Select选择器拼接label的操作
Oct 22 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
Feb 08 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
PHP.MVC的模板标签系统(二)
2006/09/05 PHP
使用adodb lite解决问题
2006/12/31 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
php实现将字符串按照指定距离进行分割的方法
2015/03/14 PHP
php判断两个日期之间相差多少个月份的方法
2015/06/18 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
javascript 面向对象全新理练之继承与多态
2009/12/03 Javascript
js实现点击添加一个input节点
2014/12/05 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
2015/11/25 Javascript
基于JavaScript如何制作遮罩层对话框
2016/01/26 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
JavaScript代码实现简单计算器
2020/12/27 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
python实现随机密码字典生成器示例
2014/04/09 Python
Python验证码识别的方法
2015/07/10 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
python调用百度地图WEB服务API获取地点对应坐标值
2019/01/16 Python
将python图片转为二进制文本的实例
2019/01/24 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
Python3 itchat实现微信定时发送群消息的实例代码
2019/07/12 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
详解Python的三种拷贝方式
2020/02/11 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
THE OUTNET美国官网:国际设计师品牌折扣网站
2017/03/07 全球购物
解释下面关于J2EE的名词
2013/11/15 面试题
毕业生自我鉴定范文
2013/11/08 职场文书
人力管理专业毕业生求职信
2014/02/27 职场文书
文化大革命观后感
2015/06/17 职场文书
Golang 实现超大文件读取的两种方法
2021/04/27 Golang
总结Pyinstaller打包的高级用法
2021/06/28 Python