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动态获取当前时间,并写到特定的区域
May 03 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
Aug 30 Javascript
jquery专业的导航菜单特效代码分享
Aug 29 Javascript
使用Promise解决多层异步调用的简单学习心得
May 17 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
Jun 21 Javascript
超实用的javascript时间处理总结
Aug 16 Javascript
Vue中定义全局变量与常量的各种方式详解
Aug 23 Javascript
JavaScript异步加载问题总结
Feb 17 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
Aug 24 jQuery
React父子组件间的传值的方法
Nov 13 Javascript
JS实现简单的文字无缝上下滚动功能示例
Jun 22 Javascript
JavaScript实现单英文金山打字通
Jul 24 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一句话cmdshell新型 (非一句话木马)
2009/04/18 PHP
php实现高效获取图片尺寸的方法
2014/12/12 PHP
php-msf源码详解
2017/12/25 PHP
php高清晰度无损图片压缩功能的实现代码
2018/12/09 PHP
通过jquery实现tab标签浏览效果
2007/02/20 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
2016/05/03 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
jQuery中text() val()和html()的区别实例详解
2016/06/28 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
vue的webcamjs集成方式
2020/11/16 Javascript
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
Eclipse + Python 的安装与配置流程
2013/03/05 Python
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
python中模块的__all__属性详解
2017/10/26 Python
python实现隐马尔科夫模型HMM
2018/03/25 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
2019/07/04 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
世界上最大的在线汽车租赁预订平台:Rentalcars.com(支持中文)
2018/10/12 全球购物
C#如何判断当前用户是否输入某个域
2015/12/07 面试题
自我评价范文分享
2014/01/04 职场文书
红色旅游心得体会
2014/09/03 职场文书
政府个人对照检查材料思想汇报
2014/10/08 职场文书
公司备用金管理制度
2015/08/04 职场文书
高三数学复习备考教学反思
2016/02/18 职场文书
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python
MySQL通过binlog恢复数据
2021/05/27 MySQL