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 相关文章推荐
JavaScript和JQuery实用代码片段(一)
Apr 07 Javascript
js自动生成对象的属性示例代码
Oct 28 Javascript
基于jQuery实现在线选座之高铁版
Aug 24 Javascript
详细谈谈javascript的对象
Jul 31 Javascript
使用React实现轮播效果组件示例代码
Sep 05 Javascript
Vue 单文件中的数据传递示例
Mar 21 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
Mar 25 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
Aug 13 Javascript
Vue Promise的axios请求封装详解
Aug 13 Javascript
JS使用iView的Dropdown实现一个右键菜单
May 06 Javascript
vue组件传值的实现方式小结【三种方式】
Feb 05 Javascript
Vue项目中使用flow做类型检测的方法
Mar 18 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中调用ASP.NET的WebService的代码
2011/04/22 PHP
PHP句法规则详解 入门学习
2011/11/09 PHP
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
javascript 极速 隐藏/显示万行表格列只需 60毫秒
2009/03/28 Javascript
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
JavaScript正则表达式匹配 div  style标签
2016/03/15 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
Javascript类型系统之undefined和null浅析
2016/07/13 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
微信小程序input抖动问题的修复方法
2021/03/03 Javascript
Python基于time模块求程序运行时间的方法
2017/09/18 Python
利用python爬取斗鱼app中照片方法实例
2017/12/03 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
2019/01/04 Python
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
tensorflow的计算图总结
2020/01/12 Python
python 合并多个excel中同名的sheet
2021/01/22 Python
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
移动端开发HTML5页面点击按钮后出现闪烁或黑色背景的解决办法
2018/09/19 HTML / CSS
联想新西兰官方网站:Lenovo New Zealand
2018/10/30 全球购物
最新创业融资计划书
2014/01/19 职场文书
《再见了,亲人》教学反思
2014/02/26 职场文书
物业保安员岗位职责
2014/03/14 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
演讲比赛策划方案
2014/06/11 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
python OpenCV学习笔记
2021/03/31 Python