`
believewjh
  • 浏览: 914 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

JS写的一个相册

阅读更多
// JavaScript template using Windows Script Host
var WSHShell = WScript.CreateObject("WScript.Shell");
WSHShell.Popup( "Hello World!" );
myLib.Albums = {
        oImgs: document.getElementsByTagName("img"),     // 页面中所有需要显示的图片对象(img标签)
        oAlbumsImgs: new Array(),                        // 所有需要在相册中显示图片的对象   
        oAlbumsPath: new Array(),                        // 所有需要在相册中显示图片的路径
        pathIndex: 0,
       
        oShardow: null,                                  // 阴影层
        oImgContainer: null,                             // 相册容器层
        oCurrentImg: null,                               // 当前显示的图片对象(img标签) 
        oInfoBar: null,                                  // 相册顶部信息条
        oNavBar: null,                                   // 相册底部导航条
        oLogoBar: null,                                  // 相册Logo容器 
        oTxtInfo: null,                                  // 图片简介信息容器
        oCloseBar: null,                                 // 关闭按钮
        oPrePage: null,                                  // 上一页
        oTxtIndex: null,                                 // 图片索引信息容器
        oNextPage: null,                                 // 下一页
       
        sLogoPath: "img/logo.jpg",                       // 相册Logo地址
       
        sTxtPrePage: "上一页",     
        sImgCount: "",                                   // 图片总数量
        sTxtNextPage: "下一页",
       
        sCurrentTxtIndex: 0,                             // 当前图片在oAlbumsImgs中的索引信息 
        sCurrentImgPath: "",                             // 当前显示图片的路径
        sCurrentImgAlt: "",                              // 当前图片的(Alt)简介信息
        sIndex: 0,                                       // 当前索引
        sTxtIndexInfo: "",                               // 完整的索引信息
       
        stylePageEnable: {
                     color: "#000",
            textDecoration: "underline",
                    cursor: "pointer"
    },
       
        stylePageDisable: {
                     color: "#CCC",
            textDecoration: "none",
                    cursor: "default"
    },
       
        init: function(){
            for(var i=0;i<this.oImgs.length;i++){
                        // 获得所有图片(img标签)的(className)样式
                    var imgClass = this.oImgs[i].className || this.oImgs[i].getAttribute("class");
                       
                        // 如果图片样式为“albumsImg”,则将改图片添加到oAlbumsImgs数组中
                        if(imgClass=="albumsImg"){
                                this.oAlbumsPath[this.pathIndex] = this.oImgs[i].src;    // 获得所有图片路径
                    this.oAlbumsImgs[this.pathIndex] = this.oImgs[i];        // 获得所有图片对象          
                                this.oAlbumsImgs[this.pathIndex].setAttribute("rel",this.pathIndex);  // 为图片设置(rel属性)索引                               
                                this.sImgCount = this.oAlbumsImgs.length;   // 获得要显示到相册中的图片总数
       
                                this.oAlbumsImgs[this.pathIndex].onclick = function(){
                                         var o = myLib.Albums;
                                         var dom = myLib.Dom;
                                         var com = myLib.Com;
                                        
                                         var curPath = o.sCurrentImgPath = this.src;                              // 获得当前点击图片的路径
                                         var curIndex = o.sCurrentTxtIndex = parseInt(this.getAttribute("rel"));  // 获得当前点击图片的索引值
                                         o.sIndex = curIndex + 1;                                                 // 索引值
                                         var curAlt = o.sCurrentImgAlt = this.getAttribute("alt");                // 获取当前图片简介信息
                                         var txtIndex = (curIndex+1) + " / " + o.sImgCount;       
                                        
                                         // 执行创建相册DOM容器的闭包函数
                                         (function(){
                                                  // 创建阴影层
                                                  var shardow = document.createElement("div");
                                                     shardow.setAttribute("id","shardow");
                                                 // 将样式应用到阴影层上
                         dom.className.add(shardow,"styleShardow");
                                             // 将阴影层追加到文档中
                                             document.body.appendChild(shardow);
                                                
                                                 // 创建(img标签)图片
                                                 var curImg        = document.createElement("img");
                                                     curImg.setAttribute("id","curimg");
                                                         curImg.setAttribute("alt",curAlt);
                                                         curImg.setAttribute("src",curPath);
                                                         curImg.src = curPath;

                                                 // 创建相册容器层
                                                 var container = document.createElement("div");
                                                     container.setAttribute("id","albumscontainer");
                                             // 将样式应用到相册容器层上
                         dom.className.add(container,"styleContainer");
                                                 // 将图片添加到相册容器上
                                                 container.appendChild(curImg);
                                                
                                                 // 创建信息栏
                                                 var infobar = document.createElement("div");
                                                     infobar.setAttribute("id","infobar");
                                                         infobar.style.display = "block";
                                                 // 将样式应用到信息栏上
                         dom.className.add(infobar,"styleInfoBar");
                                                
                                                 // 创建图片信息条
                                                 var imginfo = document.createElement("p");
                                                     imginfo.setAttribute("id","imginfo");
                                                 dom.className.add(imginfo,"styleAltInfo");
                                                 // 创建提示信息文本
                                                 var txtAltInfo = document.createTextNode(curAlt); 
                                                 // 将文本信息添加到信息条中
                                                 imginfo.appendChild(txtAltInfo);
                                                 // 将信息条添加到信息栏中去
                                                 infobar.appendChild(imginfo);                                              
                                                
                                                 // 创建LOGO信息层
                                                 var albumsLogo = document.createElement("img");
                                                     albumsLogo.setAttribute("id","logo");
                                                     albumsLogo.setAttribute("alt","订餐小秘书");
                                                     albumsLogo.setAttribute("src",o.sLogoPath);
                                                     albumsLogo.src = o.sLogoPath;
                                                 // 将样式应用到LOGO上
                         dom.className.add(albumsLogo,"styleLogo");
                                                 // 将LOGO添加到信息栏中
                                                 infobar.appendChild(albumsLogo);
                                                
                                                 // 创建关闭按钮
                                                 var closebar = document.createElement("img");
                                                     closebar.setAttribute("id","closebar");
                                                     closebar.setAttribute("src","img/g_close.gif");
                             closebar.src = "img/g_close.gif";
                             closebar.setAttribute("alt","关闭窗口");
                                                 dom.className.add(closebar,"styleCloseBar");
                                                 // 将关闭按钮添加到信息栏中
                                                 infobar.appendChild(closebar);
                                                
                                                 // 将信息栏添加到相册容器上
                                                 container.appendChild(infobar);
                                                
                                                 // 创建底部导航信息栏
                         var navbar = document.createElement("div");
                             navbar.setAttribute("id","navbar");
                                                 // 将导航栏样式应用到该层        
                         dom.className.add(navbar,"styleNavBar");
                                                
                                                 // 创建图片索引信息导航条
                                                 var txtIndex = document.createElement("p");
                             txtIndex.setAttribute("id","txtindex");
                                                 // 将样式应用到信息条上        
                         dom.className.add(txtIndex,"styleAltInfo");
                         // 获得完整的索引信息
                         o.sTxtIndexInfo = "共" + o.sImgCount + " 张图片 " + o.sIndex + " / " + o.sImgCount; 
                         // 创建索引信息文本
                                                 var textIndex = document.createTextNode(o.sTxtIndexInfo);
                         // 将文本追加到信息条中
                                                 txtIndex.appendChild(textIndex);
                         // 将索引信息条添加到导航信息栏中
                         navbar.appendChild(txtIndex); 
                                                
                                                 // 创建上一页导航
                         var prePage = document.createElement("p");
                             prePage.setAttribute("id","prePage");
                                                 // 将样式应用到上一页导航上
                         dom.className.add(prePage,"stylePrePage");
                                                 // 创建上一页导航文本
                         var txtPrePage = document.createTextNode(o.sTxtPrePage);
                         prePage.appendChild(txtPrePage);
                                                 // 将文本追加到导航上        
                         navbar.appendChild(prePage);
                                                
                                                
                                                
                                                 // 创建下一页导航
                                                 var nextPage = document.createElement("p");
                             nextPage.setAttribute("id","nextPage");
                                                 // 将样式应用到该层上
                         dom.className.add(nextPage,"styleNextPage");
                                                 // 创建下一页导航文本
                         var txtNextPage = document.createTextNode(o.sTxtNextPage);
                         nextPage.appendChild(txtNextPage);
                         // 将文本追加到导航中
                                                 navbar.appendChild(nextPage);
                                                
                                                 // 将导航栏添加到相册容器中
                                                 container.appendChild(navbar);
                                                
                                                 // 将相册容器添加到文档中
                                                 document.body.appendChild(container);       
                                                         o.oShardow = shardow;
                                                         o.oCurrentImg = curImg;
                                                         o.oImgContainer = container;
                                                         o.oInfoBar = infobar;
                                                         o.oTxtInfo = imginfo;
                                                         o.oCloseBar = closebar;
                                 o.oNavBar = navbar;
                                                         o.oPrePage = prePage;
                                 o.oTxtIndex = txtIndex;
                                 o.oNextPage = nextPage;
                                                 o.fixPos();
                                                 // 根据索引控制翻页导航是否可用
                                                 if (o.sIndex == o.sImgCount) {
                                                         dom.setStyle(nextPage, o.stylePageDisable);      // 最后一张时,下一页按钮不可用
                                                 }
                                                 else {
                                                         if (o.sIndex == 1)
                                                                 dom.setStyle(prePage, o.stylePageDisable);   // 第一张时,上一页按钮不可用
                                                 }
                                                
                                                 // 给相册层添加逐渐显示的动画效果
                                                 dom.slideUp(container);
                                                
                                                 closebar.onclick = o.close;
                                                 nextPage.onclick = o.next;
                                                  prePage.onclick = o.previous;
                                                   curImg.onclick = o.show;
                                         })();
                                        
                                         return false;  // 消除A标签默认动作
                                }
                                this.pathIndex++;
                        }
                }
        },
       
        // 关闭相册
        close: function(){
                var pos = 100;
                var o = myLib.Albums;
                var dom = myLib.Dom;
                                      
            var tt = window.setInterval(function(){
                if (pos <= 5) {
                                if (tt) {
                                        document.body.removeChild(o.oImgContainer);
                                        document.body.removeChild(o.oShardow);
                                        window.clearInterval(tt);
                                }
                        }
                        else {
                                pos -= 5;
                                dom.setOpacity(o.oImgContainer, pos);
                        }                
            },50);
        },
       
        // 显示下一张图片
        next: function(){
                var o = myLib.Albums;
                var dom = myLib.Dom;
                var temIndex = o.sIndex + 1;
                // 如果当前图片不是最后一张
                if(o.sIndex != o.sImgCount){
                         // 将下一张图片的路径更换到当前显示(img标签)图片中(标准的DOM方法)
             o.oCurrentImg.setAttribute("src",o.oAlbumsPath[o.sIndex]);
                         // BOM的方法
             o.oCurrentImg.src = o.oAlbumsPath[o.sIndex];
             // 将图片说明信息写到图片信息条中           
             o.oTxtInfo.innerHTML = o.oAlbumsImgs[o.sIndex].getAttribute("alt");
             // 获得当前图片的索引信息
                         o.sTxtIndexInfo = "共" + o.sImgCount + " 张图片 " + temIndex + " / " + o.sImgCount;
             // 将索引信息写到索引信息条中           
             o.oTxtIndex.innerHTML = o.sTxtIndexInfo;
             // 重新调整相册层的大小,以适应新图片的尺寸           
             o.fixPos();
                         // 给重新调整后的相册层添加逐渐显示的动画效果
             dom.slideUp(o.oImgContainer);
                        
                         o.sIndex++;  // 移到下一张的索引
                        
                         // 上一页按钮可用
                         dom.setStyle(o.oPrePage, o.stylePageEnable);
                         // 当图片转到最后一张时,下一页按钮不可用
                         // 不要奇怪因为前面o.sIndex++,所以原本o.sIndex==11(o.sIndex != o.sImgCount)成立
                         // 而++后,现在o.sIndex==o.sImgCount(12),也就是到了最后一张图片了
                         if(o.sIndex == o.sImgCount) dom.setStyle(o.oNextPage,o.stylePageDisable);
        }
        },
       
        // 显示上一张图片
        previous: function(){
                var o = myLib.Albums;
                var dom = myLib.Dom;
                var temIndex = o.sIndex - 1;
                //如果不是最后一张和第一张图片
                if(o.sIndex > 1){
                         // 将下一张图片的路径更换到当前显示(img标签)图片中(标准的DOM方法)
             o.oCurrentImg.setAttribute("src",o.oAlbumsPath[o.sIndex-2]);
                         // BOM的方法
             o.oCurrentImg.src = o.oAlbumsPath[o.sIndex-2];
             // 将图片说明信息写到图片信息条中           
             o.oTxtInfo.innerHTML = o.oAlbumsImgs[o.sIndex-2].getAttribute("alt");
             // 获得当前图片的索引信息
                         o.sTxtIndexInfo = "共" + o.sImgCount + " 张图片 " + temIndex + " / " + o.sImgCount;
             // 将索引信息写到索引信息条中           
             o.oTxtIndex.innerHTML = o.sTxtIndexInfo;
                         // 重新调整相册层的大小,以适应新图片的尺寸           
             o.fixPos();
                         // 给重新调整后的相册层添加逐渐显示的动画效果
             dom.slideUp(o.oImgContainer);
                        
                         o.sIndex--;  // 移到上一张的索引
                        
                         // 下一页按钮可用
                         dom.setStyle(o.oNextPage, o.stylePageEnable);
                         // 如果转到第一张图片,上一页按钮不可用
                         if (o.sIndex == 1) dom.setStyle(o.oPrePage, o.stylePageDisable);
        }
        },
       
        show: function(){
                 var o = myLib.Albums;
                 var dom = myLib.Dom;
                 var maxHeight = -40;
                 var minHeight = 0;
                 var pos = 100;
             if(o.oInfoBar.style.display == "block"){
                        var tt = window.setInterval(function(){
                                     
                               if(minHeight < maxHeight){
                                                if(tt){
                                             o.oInfoBar.style.marginTop = maxHeight + "px";
                                             dom.setOpacity(o.oInfoBar,0);
                                             pos = 0;
                                             o.oInfoBar.style.display = "none";
                                                          window.clearInterval(tt);
                                                }       
                                      }
                               minHeight -= 4;
                               pos -= 10;
                               o.oInfoBar.style.marginTop = minHeight + "px";
                               dom.setOpacity(o.oInfoBar,pos);
                        },60);
             }       
             else{
                 var ss = window.setInterval(function(){
                               o.oInfoBar.style.display = "block";
                               if(maxHeight > -5){
                                                if(ss){
                                             o.oInfoBar.style.marginTop = 0; 
                                             dom.setOpacity(o.oInfoBar,100);
                                                          window.clearInterval(ss);
                                                }       
                                      }
                               maxHeight += 4;
                               minHeight += 10;
                               dom.setOpacity(o.oInfoBar,minHeight);
                               o.oInfoBar.style.marginTop = maxHeight + "px";
                        },60);
             }  
        },
       
        // 重新刷新相册容器
        fixPos: function(){
         var o = myLib.Albums;
                 var com = myLib.Com;
                
                 var oShardow = o.oShardow;
                 var oCurImg = o.oCurrentImg;
                 var oContainer = o.oImgContainer;
                 var oInfoBar = o.oInfoBar;
                 var oNavBar = o.oNavBar;
                
         if (oCurImg && oContainer && oShardow){
                     var tempImg = new Image();
                         tempImg.src = oCurImg.src;
                               
                         var tempWidth = tempImg.width;
                         var tempHeight = tempImg.height;
                               
                         oCurImg.style.width = tempWidth;
                         oCurImg.style.height = tempHeight;
                               
                         oContainer.style.height = tempHeight + "px";
                         oContainer.style.width = tempWidth + "px";
                               
                         var yScroll = com.Page.getScroll()[1];
                         var xScroll = com.Page.getScroll()[0];
                         var winHeight = com.Page.getCurWinSize()[1];
                         var winWidth = com.Page.getCurWinSize()[0];
                         var DocHeight = com.Page.getPageSize()[1];
                         var DocWidth = com.Page.getPageSize()[0];
                        
                         var w = "100%";
                         // 调整阴影层宽度                        
                         if(tempWidth > winWidth){
                                  w = (tempWidth + 20) + "px";
                         }
                        
                         oShardow.style.width = w;
                         oShardow.style.height = com.Page.getPageSize()[1] + "px";
                        
                         var marginTop = tempHeight > winHeight ? yScroll : yScroll + (winHeight - (tempHeight + 20)) / 2;
                         // 控制相册层不能无限制的向下滑动,当相册的底边超过文档或视口大小时,停止滚动.
                         if(tempHeight > winHeight && (marginTop + tempHeight) > DocHeight) return;
                                
                         oContainer.style.top = marginTop + 'px'
                         oContainer.style.marginLeft = '-' + (tempWidth / 2 + 10) + 'px';
                               
                         oInfoBar.style.width = (tempWidth + 10) + "px";
                         oNavBar.style.width = (tempWidth + 10) + "px";
                 }
     }
}

myLib.Event.addEvent(window,"resize",myLib.Albums.fixPos);
myLib.Event.addEvent(window,"scroll",myLib.Albums.fixPos);
分享到:
评论

相关推荐

    用javascript写的一个相册功能

    通过阅读和分析这些文件,我们可以深入理解这个JavaScript相册的实现原理和技巧。文件可能包括HTML结构、CSS样式、JavaScript逻辑以及可能的图片资源。分析这些代码可以帮助我们学习如何将理论知识应用于实际项目,...

    JS交互式3D相册切换模糊特效.zip

    在本资源"JS交互式3D相册切换模糊特效.zip"中,主要包含了一个使用JavaScript实现的3D相册切换效果,它具有可调整的图片数量和模糊度特性。这个功能丰富的代码库允许用户在网页上创建一种动态、立体且视觉效果独特的...

    纯脚本相册源码,js相册源码,脚本相册源码

    在Web开发中,创建一个功能完善的相册是一个常见的需求。"纯脚本相册源码"就是一种基于JavaScript(js)编写的相册实现方式,它不依赖任何服务器端的技术,完全由前端代码完成。这种源码的优势在于能够提供快速、...

    javascript+css相册

    `js`文件夹通常包含项目中的JavaScript代码,可能有一个或多个`.js`文件,比如`album.js`,其中编写了处理相册逻辑的脚本。最后,`css`文件夹则存储了项目所需的样式表,如`album.css`,用于定义相册的视觉样式。 ...

    用jQuery,javaScript写的相册

    在IT行业中,jQuery和...通过对这些文件的分析和学习,开发者可以深入了解如何使用jQuery和JavaScript构建一个功能完善的相册应用。同时,这也是一个很好的实战练习,有助于提升前端开发技能和理解Web交互设计的要点。

    两款 JS 相册 Js 相册 效果

    两款 JS 相册 两款 JS 相册 两款 JS 相册 Js 相册 效果

    炫酷的JS弹性相册代码

    3. **兼容性**:一个优秀的JavaScript相册解决方案必须考虑浏览器兼容性,确保在多种浏览器环境下都能正常运行。开发者可能使用了诸如`Modernizr`这样的库来检测浏览器特性,或者采用渐进增强或优雅降级的策略,确保...

    js 3D相册 js 3D相册

    以"3D相册空间"为例,这个项目可能包含一个3D相册的实现,其中包含了多个图片作为3D对象分布在虚拟空间中,用户可以通过拖动或点击来查看不同的图片。开发者可能使用Three.js来构建整个相册,并通过CSS3来增强页面...

    抖音很火的JavaScript旋转3D相册源码.zip

    抖音很火的JavaScript旋转3D相册源码,修改了尺寸版。 抖音很火的JavaScript旋转3D相册源码,修改了尺寸版。 抖音很火的JavaScript旋转3D相册源码,修改了尺寸版。 抖音很火的JavaScript...

    js 实现相册特效案例

    在这个“js实现相册特效案例”中,我们将探讨如何利用JavaScript来创建引人入胜的相册展示功能。下面将详细阐述相关知识点。 1. **DOM操作**:JavaScript通过Document Object Model (DOM) API与HTML页面进行交互。...

    js 女朋友相册

    总结来说,"js 女朋友相册"是一个使用JavaScript实现的3D相册项目,结合了WebGL技术和现代前端框架,为展示个人照片提供了一种创新的方式。它涉及到了3D图形编程、动画制作、文件处理和响应式设计等多个方面,体现了...

    程序员送给女友的基于JavaScript的高端3D相册源码.zip

    程序员送给女友的基于JavaScript的高端3D相册源码程序员送给女友的基于JavaScript的高端3D相册源码程序员送给女友的基于JavaScript的高端3D相册源码程序员送给女友的基于JavaScript的高端3D相册源码程序员送给女友的...

    JS带模糊效果交互式3D相册切换特效.zip

    "JS带模糊效果交互式3D相册切换特效"就是这样一个例子,它利用JavaScript的力量,为用户提供了一种新颖且吸引人的3D相册浏览体验。这个项目不仅提供了视觉上的冲击力,还通过互动性和模糊效果增加了用户参与度。 ...

    JS Flash超炫电子相册

    "JS Flash超炫电子相册"是一个利用JavaScript和Flash技术创建的动态相册应用。它提供了丰富的视觉效果,使得展示照片的方式更为吸引人。在Web开发领域,Flash曾是实现动态交互和多媒体内容的重要工具,而JavaScript...

    js相册特效.js相册特效

    JavaScript相册特效是一种常见的网页交互元素,用于展示图片集,为用户提供流畅且吸引人的浏览体验。在网页设计中,JavaScript的灵活性和强大的功能使得它成为实现动态相册的理想选择。以下是一些关于JavaScript相册...

    Javascript SlideShow网页相册代码(JS+CSS)

    在实际代码中,你可能会看到一个JavaScript文件(如`slideshow.js`),其中包含滑动相册的逻辑,以及一个或多个CSS文件(如`styles.css`),用于样式设定。JavaScript文件可能包括函数,用于初始化相册、处理用户...

    js制作的相册

    在这个"js制作的相册"项目中,我们主要讨论的是如何利用JavaScript实现一个动态、交互式的相册效果。相册功能在网页中十分常见,它允许用户以可视化的方式浏览和操作一组图片,提供了一种直观且友好的用户体验。 ...

    JS小项目,JS特效,3D相册,相册面板墙

    在本项目中,"JS小项目,JS特效,3D相册,相册面板墙" 是一个使用JavaScript和CSS3技术实现的创新性互动相册应用。这个项目旨在展示3D转换、缩放以及透明度调整等效果,为用户提供一个独特的视觉体验。它不仅可以...

    3d相册js demo

    本示例中的"3d相册js demo"是一个使用JavaScript技术实现的3D相册项目,旨在提供一种新颖、立体的展示图片的方式,为用户带来更丰富的视觉体验。3D相册在网页设计中尤其受欢迎,因为它们能够吸引用户的注意力并增加...

    各种JS相册集合打包(一次够!)

    2. **PikaChoose_2.7.rar**:PikaChoose是一个流行且易于定制的JavaScript相册插件,它提供了丰富的选项和自定义事件,使得开发者可以轻松调整相册的外观和行为。例如,你可以改变导航按钮样式,设置自动播放,或者...

Global site tag (gtag.js) - Google Analytics