lightBox灯箱效果

最近想做一个类似QQ空间相册,点击照片会出现一个遮罩层,然后显示照片,可以左右切换照片,上网查了,原来叫灯箱效果,于是自己也写了一个简单的灯箱效果,并进行了简单封装,封装得不是很完善,后面还需要改进,下面先发布我的1.0版本,以下是源代码

这是html中

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<link href="css/lightBoxCss.css"rel="stylesheet"/>
<body>
<div id="lightBox">
    <div id="imgDiv">
        <ul id="ulList">
        </ul>
    </div>
    <div id="disDiv">
        <span id="exitBtn">x</span>
        <div id="disImgDiv">
            <img id="currentImg" src="" alt="#">
            <span id="preArrow">&lt;</span>
            <span id="nextArrow">&gt;</span>
        </div>
    </div>
</div>
<script src="js/jsLightBox.js"type="text/javascript"charset="utf-8"></script>
</body>
</html>

这是css样式

*{
    margin: 0px;
    padding: 0px;
    font-family: "Microsoft YaHei";
}
#lightBox{
    width: 1349px;
    height: 645px;
    overflow: hidden;
    position: relative;
}

/*图片列表*/
#imgDiv ul li{
    list-style-type: none;
    width: 300px;
    height: 300px;
    float: left;
    margin: 10px 10px;
}
#imgDiv ul li img{
    width: 100%;
    height: 100%;
}
#disDiv{
    width: 100%;
    height: 100%;
    position: absolute;
    background-color: rgba(0,0,0,0.8);
    display: none;
}
#disDiv span{
    display: inline-block;
    font-size: 40px;
    color: white;
    font-family:Arial;
    margin-left: 95%;
    margin-top: 1%;
    cursor: pointer;
}
#disImgDiv{
    width: 450px;
    height: 450px;
    margin-left: 450px;
    position: relative;
    -webkit-transition: all 0.5s ease;
}
#disImgDiv img{
    width: 100%;
    height: 100%;
}

/*左右箭头*/
#disImgDiv #preArrow,#disImgDiv #nextArrow{
    display: inline-block;
    width: 25px;
    height: 25px;
    border-radius: 50%;
    text-align: center;
    line-height: 25px;
    background-color: rgba(0,0,0,0.7);
    color: white;
    font-size: 20px;
    cursor: pointer;
    position: absolute;
    top: 213px;
    opacity: 0;
    -webkit-transition: all 0.5s ease;
}
#disImgDiv #preArrow{
    left: -420px;
}
#disImgDiv #nextArrow{
    right: 10px;
}

/*设置箭头移入效果*/
#disImgDiv:hover #preArrow,#disImgDiv:hover #nextArrow{
    opacity: 1;
    -webkit-transition: all 0.5s ease;
}
#disImgDiv #preArrow:hover,#disImgDiv #nextArrow:hover{
    background-color: #f1f1f1;
    color: #666666;
    -webkit-transition: all 0.5s ease;
}

下面是js中的处理,对lightBox进行封装,只需要改变图片地址进行调用即可

/**
 * 灯箱效果
 * Created by Administrator on 2016/11/16.
 */

//封装的灯箱
   var myLightBox= (function () {
        /*
        * ulList:图片列表的ul
        * disDiv:显示的遮罩层
        * exitBtn:退出按钮
        * oLi:放图片的li
        * currentImg:当前是哪张图片
        * preArrow:上一页
        * nextArrow:下一页
        * imgArry:放图片地址的数组
        * */
   // 遮罩
    function showDisDiv(ulList,disDiv,exitBtn,oLi,currentImg,preArrow,nextArrow,imgArry){
        for(var i=0;i<imgArry.length;i++){
            ulList.innerHTML+="<li><img src=‘"+imgArry[i]+"‘alt=‘#‘></li>";//添加图片节点
        }
        for(var i=0;i<oLi.length;i++){
            oLi[i].index=i;
            oLi[i].onmousedown=function () {
                disDiv.style.display="block";
                currentImg.setAttribute("src",imgArry[this.index]);//设置图片src
                var imgNum=this.index;
                //上一页
                preArrow.onclick= function () {
                    imgNum--;
                    if(imgNum==-1){
                        imgNum=imgArry.length-1;
                    }
                    currentImg.setAttribute("src",imgArry[imgNum]);//设置图片src
                }
                //下一页
                nextArrow.onclick= function () {
                    imgNum++;
                    if(imgNum==imgArry.length){
                        imgNum=0;
                    }
                    currentImg.setAttribute("src",imgArry[imgNum]);//设置图片src
                }
            }
        }
        exitBtn.onmousedown= function () {//隐藏遮罩层
            disDiv.style.display="none";
        }
    }
        return showDisDiv;
})();

window.onload= function () {
    var ulList=getId("ulList");//图片列表ul
    var disDiv=getId("disDiv");//遮罩层
    var exitBtn=getId("exitBtn");//退出
    var oLi=document.getElementsByTagName("li");//图片li
    var disImgDiv=getId("disImgDiv");//遮罩显示当前图片的div
    var currentImg=getId("currentImg");//显示当前图片的img
    var preArrow=getId("preArrow");//上一页
    var nextArrow=getId("nextArrow");//下一页
    var imgArry=[‘img/imgFour.jpg‘,‘img/imgTwo.jpg‘,‘img/imgThree.jpg‘,‘img/imgFive.jpg‘];//图片路径的数组
    var getLightBox=myLightBox;//得到封装的灯箱效果
    getLightBox(ulList,disDiv,exitBtn,oLi,currentImg,preArrow,nextArrow,imgArry);//调用封装的lightBox
}

function getId(id){
    return document.getElementById(id);
}
时间: 2024-08-25 01:20:17

lightBox灯箱效果的相关文章

20款美化网站的 jQuery Lightbox 灯箱插件

jQuery Lightbox 灯箱插件可以让你为您的网站和应用程序展示优雅的图像,视频 和其它内容(使用模式窗口).如果你是一个开发人员,你必须拥有 jQuery 灯箱插件集合,因为有一部分的客户会要求他们的网站看起来更有吸引力和视觉冲击力. 因此在这个集合中,我们编译了20款最好的 jQuery 灯箱插件清单,这将有助于开发人员创建和设计精美的网站.您可以将这些插件很容易地集成到您的网站,可以下载他们瞬间充实你的插件库. 您可能感兴趣的相关文章 Web 开发中很实用的10个效果[源码下载]

纯代码给你的网站增加图片灯箱效果,增强落地页体验

灯箱效果是我一直想加又没有加的功能,正好最近百度在推移动落地页检测,顺手做一下优化 我的检测结果是:您的页面可能存在图片不可全屏查看,全屏查看后不可缩放 / 左右滑动的问题,影响落地页体验 我们可以直接使用 FancyBox 来完成我们的需求,FancyBox 是一款优秀的弹出框 Jquery 插件 1.允许我们用鼠标和键盘上的四个方向键切换图片2.可以根据当前窗口大小自动调整弹出框的大小,当我们改变浏览器窗口大小时,将会看到弹出框自动缩放3.支持缩略图列表.放大.全屏等功能4.弹出框支持显示多

基于jQuery的图片画廊、lightbox插件效果

图片演示: 使用说明: 第一步:首先你要在页面中引入一下文件,注意先后顺序 <link rel="stylesheet" type="text/css" href="css/album-lightbox.css" /> <script type="text/javascript" src="js/jquery.js"></script> <script type=&

100+经典常用的jQuery插件大全实例演示和下载

jQuery 表单插件 jQuery cxCalendar 日期选择器 jQuery cxColor 颜色选择器 jQuery cxSelect 联动下拉菜单 jQuery Validation Engine 表单验证 jQuery soColorPacker 网页拾色器 jQuery AutoComplete 自动补全 jQuery uploadify 文件上传 jQuery FileUpload 文件上传 jQuery LayDate 日期控件 jQuery ClockPicker 圆形时钟

jQuery笔记总结

来源于:http://blog.poetries.top/2016/10/20/review-jQuery/ http://www.jianshu.com/p/f8e3936b34c9 首先,来了解一下jQuery学习的整体思路 第一节 jQuery初步认知 jQuery概述 JQuery概念 javascript概念 基于Js语言的API和语法组织逻辑,通过内置window和document对象,来操作内存中的DOM元素 JQuery概念 基于javascript的,同上,提高了代码的效率 j

Strip JS – 低侵入,响应式的 Lightbox 效果

Strip  是一个灯箱效果插件,显示的时候只会覆盖部分的页面,这使得侵扰程度较低,并留出了空间与页面上的大屏幕,同时给予小型移动设备上的经典灯箱体验.Strp JS 基于 jQuery 库实现,支持所有主流浏览器. 效果演示      立即下载 您可能感兴趣的相关文章 Web 开发中很实用的10个效果[源码下载] 精心挑选的优秀jQuery Ajax分页插件和教程 12个让人惊叹的的创意的 404 错误页面设计 让网站动起来!12款优秀的 jQuery 动画插件 十分惊艳的8个 HTML5 &

10款响应式 jQuery实现图片效果插件

1.基于jQuery实现的汇图网大屏焦点图效果 汇图网大屏jQuery焦点图代码,可设置切换模式,如淡入淡出切换,左右滚动切换,上下滚动切换,可设置是否自动轮播,可设置鼠标划过是否停止播放等. 在线演示 源码下载 2.HTML5基于SVG实现的过山车动画特效 今天我们要分享一款很酷的HTML5/SVG动画,这款HTML5动画是过山车效果,主要是利用了SVG的path动画来实现的,整体动画效果流畅自然,效果非常酷. 在线演示 源码下载 3.jQuery实现苹果官网页面上下滚动全屏效果 这是一款基于

16 款最流行的 JavaScript 框架

本文列举了16个当前最流行的JavaScript框架.在这个列表中,既包括jQuery和Mootools,也有Zepo移动JavaScript框架. 里面一定有你正在用的或想尝试用的JavaScript框架,看看列表吧! 1.jQuery – Javascript框架 应用最广泛的JavaScript框架,jQuery插件非常之多,涉及LightBox灯箱插件.日期插件.图表插件等各种类型的插件不计其数,OsChina就收录了1000多款jQuery插件. 2. Dojo Javascript框

AxureRP7.0基础教程系列 部件详解 动态面板 DynamicPanel

原型库网站-讲师金乌原创发布,可自由转载,请注明出处! Axure中文官网:www.AxureRP.cn   <AxureRP7.0部件详解> 动态面板 DynamicPanel 动态面板概述       动态面板(Dynamic panel) 动态面板是一个可以在层或状态中装有其他部件的容器. 你可以将动态面板比喻成相册,相册的每个夹层中又可以装进其他部件,并且每个夹层和里面的部件可以隐藏.显示和移动,并且可以动态设置当前夹层的可见状态.这些特性允许你在原型中演示自定义提示.灯箱.标签控制和