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中实现命名空间
Nov 23 Javascript
addRule在firefox下的兼容写法
Nov 30 Javascript
编辑浪子版表单验证类
May 12 Javascript
Javascript 自定义类型方法小结
Mar 02 Javascript
比Jquery的document.ready更快的方法
Apr 28 Javascript
JavaScript对象之间的转换 jQuery对象和原声DOM
Mar 07 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
Sep 04 Javascript
基于JS实现的笛卡尔乘积之商品发布
May 13 Javascript
深入理解ES6 Promise 扩展always方法
Sep 26 Javascript
webstorm和.vue中es6语法报错的解决方法
May 08 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
Jul 10 jQuery
构建大型 Vue.js 项目的10条建议(小结)
Nov 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
桌面中心(四)数据显示
2006/10/09 PHP
php download.php实现代码 跳转到下载文件(response.redirect)
2009/08/26 PHP
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
2019/10/11 PHP
用jquery实现等比例缩放图片效果插件
2010/07/24 Javascript
jQuery代码优化之基本事件
2011/11/01 Javascript
两个select多选模式的选项相互移动(示例代码)
2014/01/11 Javascript
javascript读取Xml文件做一个二级联动菜单示例
2014/03/17 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
2015/03/11 Javascript
Nodejs读取文件时相对路径的正确写法(使用fs模块)
2017/04/27 NodeJs
Vue实现PopupWindow组件详解
2018/04/28 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
2018/08/09 Javascript
小程序登录/注册页面设计的实现代码
2019/05/24 Javascript
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
在项目vue中使用echarts的操作步骤
2020/09/07 Javascript
前端性能优化建议
2020/09/17 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
element-ui封装一个Table模板组件的示例
2021/01/04 Javascript
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
Python制作刷网页流量工具
2017/04/23 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
2019/08/13 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
2019/12/10 Python
python定义类self用法实例解析
2020/01/22 Python
python中如何写类
2020/06/29 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
先进工作者获奖感言
2014/02/08 职场文书
房产公证书范本
2014/04/10 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
董事长秘书岗位职责
2015/02/13 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
Angular性能优化之第三方组件和懒加载技术
2021/05/10 Javascript
Python实现提取PDF简历信息并存入Excel
2022/04/02 Python