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 相关文章推荐
jQuery对象和DOM对象的相互转化实现代码
Mar 02 Javascript
jquery蒙版控件实现代码
Dec 08 Javascript
JS模拟面向对象全解(二、类型与赋值)
Jul 13 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
Nov 19 Javascript
jQuery表格插件datatables用法总结
Sep 05 Javascript
删除javascript所创建子节点的方法
May 21 Javascript
深入理解jQuery之防止冒泡事件
May 24 Javascript
jQuery制作图片旋转效果
Feb 02 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
Oct 12 Javascript
JS严格模式知识点总结
Feb 27 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
Aug 17 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
Feb 21 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页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
ThinkPHP5+Layui实现图片上传加预览功能
2018/08/17 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
Js切换功能的简单方法
2010/11/23 Javascript
打造基于jQuery的高性能TreeView(asp.net)
2011/02/23 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
JS实现的表格行上下移动操作示例
2016/08/03 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
Vue入门之数量加减运算操作示例
2018/12/11 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
vue使用自定义指令实现拖拽
2021/01/29 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
如何利用JavaScript编写更好的条件语句详解
2020/08/10 Javascript
OpenLayers3实现对地图的基本操作
2020/09/28 Javascript
详解 javascript对象创建模式
2020/10/30 Javascript
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
django解决跨域请求的问题
2018/11/11 Python
基于python的BP神经网络及异或实现过程解析
2019/09/30 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
Python tkinter实现日期选择器
2021/02/22 Python
Vertbaudet西班牙网上商店:婴儿服装、童装、母婴用品和儿童家具
2019/10/16 全球购物
婚前协议书怎么写
2014/04/15 职场文书
病媒生物防治方案
2014/05/13 职场文书
省级优秀班集体申报材料
2014/05/25 职场文书
任命书怎么写
2014/06/04 职场文书
个人四风问题对照检查材料
2014/10/01 职场文书
合作与交流自我评价
2015/03/09 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL
Pandas自定义选项option设置
2021/07/25 Python