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 相关文章推荐
js判断浏览器的比较全的代码
Feb 13 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
Sep 29 Javascript
display和visibility的区别示例介绍
Feb 26 Javascript
JavaScript调试工具汇总
Dec 23 Javascript
jQuery验证插件validation使用指南
Apr 21 Javascript
省市区三级联动下拉框菜单javascript版
Aug 11 Javascript
Javascript基于AJAX回调函数传递参数实例分析
Dec 15 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
Jan 10 Javascript
使用vue-infinite-scroll实现无限滚动效果
Jun 22 Javascript
详解Eslint 配置及规则说明
Sep 10 Javascript
json前后端数据交互相关代码
Sep 19 Javascript
原生js实现贪食蛇小游戏的思路详解
Nov 26 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 基本语法格式
2009/12/15 PHP
php下目前为目最全的CURL中文说明
2010/08/01 PHP
php日期转时间戳,指定日期转换成时间戳
2012/07/17 PHP
php使用ob_start()实现图片存入变量的方法
2014/11/14 PHP
yii2 commands模式以及配置crontab定时任务的方法
2017/08/19 PHP
Javascript 构造函数 实例分析
2008/11/26 Javascript
Javascript图像处理—亮度对比度应用案例
2013/01/03 Javascript
Javascript this 关键字 详解
2014/10/22 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
探究JavaScript函数式编程的乐趣
2015/12/14 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
2017/03/02 Javascript
JS非空验证及邮箱验证的实例
2017/08/11 Javascript
JS监控关闭浏览器操作的实例详解
2017/09/12 Javascript
vue实现简单的MVVM框架
2018/08/05 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
2020/02/07 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
python字符串连接方式汇总
2014/08/21 Python
详解python3中socket套接字的编码问题解决
2017/07/01 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
python读取和保存图片5种方法对比
2018/09/12 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
2019/04/15 Python
如何安装并在pycharm使用selenium的方法
2020/04/30 Python
python3访问字典里的值实例方法
2020/11/18 Python
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
玩具反斗城美国官网:Toys"R"Us
2016/09/17 全球购物
介绍一下Linux内核的排队自旋锁
2014/08/27 面试题
最新个人职业生涯规划书
2014/01/22 职场文书
生日主持词
2014/03/20 职场文书
面试必备的求职信
2014/05/25 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
外国人来华邀请函
2015/01/31 职场文书
2015年超市工作总结
2015/04/09 职场文书
Python 如何安装Selenium
2021/05/06 Python