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 绑定时间实现代码
May 03 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
May 19 Javascript
js 判断checkbox是否选中的操作方法
Nov 09 Javascript
基于jQuery实现下拉框
Nov 24 Javascript
12行javascript代码绘制一个八卦图
Apr 02 Javascript
微信小程序 Toast自定义实例详解
Jan 20 Javascript
微信小程序基于本地缓存实现点赞功能的方法
Dec 18 Javascript
MockJs结合json-server模拟后台数据
Aug 26 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
Aug 28 Javascript
JS实现transform实现扇子效果
Jan 17 Javascript
Element Card 卡片的具体使用
Jul 26 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
Oct 21 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
session 的生命周期是多长
2006/10/09 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
php preg_replace替换实例讲解
2013/11/04 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
WordPress中创建用户角色的相关PHP函数使用详解
2015/12/25 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
PHP面向对象程序设计类的定义与用法简单示例
2016/12/27 PHP
PHP封装的完整分页类示例
2018/08/21 PHP
Javascript实现的分页函数
2007/02/07 Javascript
JQuery CSS样式控制 学习笔记
2009/07/23 Javascript
Mootools 1.2教程 设置和获取样式表属性
2009/09/15 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
2013/11/10 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
js canvas实现擦除动画
2016/07/16 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
VUE2.0中Jsonp的使用方法
2018/05/22 Javascript
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
浅谈VUE中演示v-for为什么要加key
2020/01/16 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
python黑魔法之编码转换
2016/01/25 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
python实现证件照换底功能
2019/08/20 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
python各层级目录下import方法代码实例
2020/01/20 Python
基于python实现微信好友数据分析(简单)
2020/02/16 Python
python 实现图片批量压缩的示例
2020/12/18 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
共产党员批评与自我批评
2014/10/15 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
关于艺术节的开幕致辞
2016/03/04 职场文书
详解jQuery的核心函数和事件处理
2022/02/18 jQuery
python manim实现排序算法动画示例
2022/08/14 Python