jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)


Posted in Javascript onFebruary 25, 2016

本文实例讲述了jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果。分享给大家供大家参考,具体如下:

该插件乃文章作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧。

此插件旨在实现目前较为流行的点击放大图片并左右点击切换图片的效果,您可以根据自己的实际需求来设置是否添加左右切换图片的效果。整体代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style>
*{margin:0;padding:0;}
li{list-style:none;}
.item{margin:20px;}
.item ul li{float:left;margin-right:20px;}
.item ul li img{width:100px;cursor:pointer;}
.lb_wrap{display:none;}
.lightbox_bg{background:#000;filter:alpha(opacity=70);opacity:.7;position:absolute;left:0;top:0;width:100%;height:100%;z-index:1;}
.lightbox{position:absolute;left:0;top:50%;width:100%;z-index:2;text-align:center;}
.lightbox p{position:absolute;height:61px;width:38px;top:50%;left:0;z-index:2;background:transparent url(themes.png) no-repeat left top;margin-top:-30.5px;cursor:pointer;}
.lightbox p.next{left:auto;background-position:right top;right:0;}
</style>
<script type="text/javascript" src="jquery-1.7.1.js"></script>
<script type="text/javascript" src="jquery.LightBox.js"></script>
</head>
<body>
<div class="item">
 <ul>
  <li><img src="01.jpg" /></li>
  <li><img src="02.jpg" /></li>
  <li><img src="03.jpg" /></li>
  <li><img src="04.jpg" /></li>
  <li><img src="05.jpg" /></li>
  <li><img src="06.jpg" /></li>
 </ul>
</div>
<script>
$(function(){
  $(".item").LightBox({
    controls : true //上一张、下一张按钮是否显示,默认是显示true
    });
  })
</script>
</body>
</html>

插件jquery.LightBox.js代码:

/*
*LightBox 1.0
*dependence jquery-1.7.1.js
*/
;(function(a){
  a.fn.LightBox = function(options){
    var defaults = {
      controls : true //上一张、下一张按钮是否显示,默认是显示true
      }
    var opts = a.extend(defaults, options);
    var lb_wrap = '<div class="lb_wrap"><div class="lightbox_bg"></div><div class="lightbox"><img src="loading.gif" class="lg_img"></div></div>';
    a("body").append(lb_wrap);
    //controls
    if(opts.controls){
      a(".lightbox").append('<p class="prev"></p><p class="next"></p>');
      }
    function imgobj(obj1, obj2){
      //imgObj.height是通过img对象获取的图片的实际高度
      var imgObj = new Image();
      imgObj.src = obj1.attr("src");
      var margintop = 0 - (imgObj.height)/2;
      obj2.css("margin-top",margintop);
      }
    this.each(function(){
      var obj = a(this);
      var numpic = obj.find("li").length;
      var num = 0;
      //点击赋值并显示
      obj.find("img").click(function(){
        var src = a(this).attr("src");
        a(".lg_img").attr("src",src);
        imgobj(a(".lg_img"), a(".lightbox"));
        a(".lb_wrap").fadeIn();
        a(".lg_img").fadeIn();
        a(".prev").fadeIn().siblings(".next").fadeIn();
        num = a(this).parent().index();  //获取当前图片的父元素的索引并赋给num为后边点击上一张、下一张服务
        });
      //上一张
      a(".prev").click(function(){
        if(num == 0){
           num = numpic;
         }
        var src = obj.find("li").eq(num-1).find("img").attr("src");
        a(".lg_img").attr("src",src);
        imgobj(a(".lg_img"), a(".lightbox"));
        num--;
        });
      //下一张
      a(".next").click(function(){
        if(num == numpic-1){
           num = -1;
        }
        var src = obj.find("li").eq(num+1).find("img").attr("src");
        a(".lg_img").attr("src",src);
        imgobj(a(".lg_img"), a(".lightbox"));
        num++;
        });
      //点击除了上一张、下一张之外的其他地方隐藏
      a(".lb_wrap").click(function(e){
         var e = e || window.event;
         var elem = e.target || e.srcElement;
         while(elem){
           if (elem.className && elem.className.indexOf('prev')>-1) {
             return;
           }
           if(elem.className && elem.className.indexOf('next')>-1){
             return;
             }
           elem = elem.parentNode;
         }
         a(this).find("img").attr("src","loading.gif").hide(); //隐藏后,再将默认的图片赋给lightbox中图片的src
         a(this).find(".prev").hide().siblings(".next").hide();
         a(this).fadeOut();
        });
      })
    }
})(jQuery);

完整实例代码点击此处本站下载。

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
基于jquery的代码显示区域自动拉长效果
Dec 07 Javascript
jQuery-Tools-overlay 使用介绍
Jul 14 Javascript
JavaScript实现简单的时钟实例代码
Nov 23 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
Jan 13 Javascript
jQuery如何取id有.的值一般的方法是取不到的
Apr 18 Javascript
基于javascript实现图片预加载
Jan 05 Javascript
js实现div模拟模态对话框展现URL内容
May 27 Javascript
angularjs之$timeout指令详解
Jun 13 Javascript
ReactJs实现树形结构的数据显示的组件的示例
Aug 18 Javascript
Node.js Buffer用法解读
May 18 Javascript
layer弹出层父子页面事件相互调用方法
Aug 17 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
Sep 14 Javascript
JQuery ztree带筛选、异步加载实例讲解
Feb 25 #Javascript
jquery ztree实现模糊搜索功能
Feb 25 #Javascript
jQuery实现从身份证号中获取出生日期和性别的方法分析
Feb 25 #Javascript
jquery实现列表上下移动功能
Feb 25 #Javascript
js简单判断移动端系统的方法
Feb 25 #Javascript
jquery ztree实现树的搜索功能
Feb 25 #Javascript
jquery ztree异步搜索(搜叶子)实践
Feb 25 #Javascript
You might like
PHP使用mysqldump命令导出数据库
2015/04/14 PHP
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
Javascript实例教程(19) 使用HoTMetal(6)
2006/12/23 Javascript
Whatever:hover 无需javascript让IE支持丰富伪类
2010/06/29 Javascript
JavaScript 小型打飞机游戏实现原理说明
2010/10/28 Javascript
使用JQUERY进行后台页面布局控制DIV实现左右式
2014/01/07 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
Bootstrap 3.x打印预览背景色与文字显示异常的解决
2016/11/06 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
利用forever和pm2部署node.js项目过程
2017/05/10 Javascript
js canvas实现简单的图像扩散效果
2020/06/28 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
[47:18]完美世界DOTA2联赛循环赛 IO vs FTD BO2第一场 11.05
2020/11/06 DOTA
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
python实现月食效果实例代码
2019/06/18 Python
python opencv 批量改变图片的尺寸大小的方法
2019/06/28 Python
CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
2014/09/02 HTML / CSS
浅谈Html5中视频 音频标签 进度条的问题
2016/07/26 HTML / CSS
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
以太网Ethernet IEEE802.3
2013/08/05 面试题
建议书怎么写
2014/03/12 职场文书
本科生导师推荐信范文
2014/05/18 职场文书
员工培训协议书
2014/09/15 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
2015年师德表现自我评价
2015/03/05 职场文书
信访维稳承诺书
2015/05/04 职场文书
远程教育集中轮训基层干部培训班学习心得体会
2016/01/09 职场文书
高中16字霸气押韵班级口号集锦!
2019/06/27 职场文书
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers