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+CSS实现鼠标滑过时动态翻滚的导航条效果
Sep 24 Javascript
浅谈JavaScript中的this指针和引用知识
Aug 05 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
Sep 01 Javascript
jquery validate表单验证插件
Sep 06 Javascript
JS实现中国公民身份证号码有效性验证
Feb 20 Javascript
bootstrap suggest搜索建议插件使用详解
Mar 25 Javascript
基于jQuery实现文字打印动态效果
Apr 21 jQuery
微信小程序中post方法与get方法的封装
Sep 26 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
Aug 28 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
Dec 09 Javascript
7个好用的JavaScript技巧分享(译)
May 07 Javascript
7个你应该知道的JS原生错误类型
Apr 29 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+mysql实现无限级分类 | 树型显示分类关系
2006/11/19 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
2016/06/17 PHP
innerHTML,outerHTML,innerTEXT三者之间的区别
2007/01/28 Javascript
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
JavaScript中实现块作用域的方法
2010/04/01 Javascript
jquery插件之easing 动态菜单
2010/08/21 Javascript
基于JQuery的类似新浪微博展示信息效果的代码
2012/07/23 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
js常用数组操作方法简明总结
2014/06/20 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
JavaScript数组去重的五种方法
2015/11/05 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
angular2+node.js express打包部署的实战
2017/07/27 Javascript
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
2018/10/28 Javascript
JavaScript实现的拼图算法分析
2019/02/13 Javascript
小程序server请求微信服务器超时的解决方法
2019/05/21 Javascript
Vue实现根据hash高亮选项卡
2019/05/27 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
[02:57]DOTA2英雄基础教程 风行者
2014/01/16 DOTA
Python+matplotlib+numpy绘制精美的条形统计图
2018/01/02 Python
Python实现的个人所得税计算器示例
2018/06/01 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
瑞士灯具购物网站:Lampenwelt.ch
2018/07/08 全球购物
马来西亚在线购物:POPLOOK.com
2019/12/09 全球购物
六一节目主持词
2014/04/01 职场文书
董事长助理工作职责
2014/06/08 职场文书
2015年万圣节活动总结
2015/03/24 职场文书
新课程改革心得体会
2016/01/22 职场文书
Echarts如何重新渲染实例详解
2022/05/30 Javascript